R степенной закон соответствия данных

У меня возникли проблемы при расчете коэффициентов подгонки степенного закона набора данных

Степенной закон функции у ~ а * х ^ б (с б, безусловно, отрицательно!) У меня есть следующие значения х

х = с (370,470,520,590,660,880,950)

значения y - это строки значений (более 21000!) кадра данных

мне нужно найти коэффициенты ( a и b) для каждой строки y, поэтому более 21000 коэффициентов

мой оригинальный набор данных у

abs2017.y <- (cbind(dati.etal.2017$babs370_c ,dati.etal.2017$babs470_c ,dati.etal.2017$babs520_c, dati.etal.2017$babs590_c ,dati.etal.2017$babs660_c ,dati.etal.2017$babs880_c ,dati.etal.2017$babs950_c))

x и набор данных abs2017.y "double"

Я прочитал, что NLS не нуждается в значениях NULL в наборе данных, поэтому я попробовал это

abs2017.y2<-abs2017.y[complete.cases(abs2017.y),]

я пробовал этот сценарий для цикла, используя функцию NLS

for (k in seq_len(nrow(abs2017.y2))) {
      y_k <-abs2017.y2[k,]
      nlc<-nls.control(maxiter = 100000,minFactor = 1/1024)
      fit_k<-nls(y_k ~ a*x^b, control=nlc,start = c(a=0.1,b=0.1))
      b<-coefficients(fit_k)[["b"]]
    }

я поставил maxiter = 100000, потому что у меня были проблемы с ошибкой превышения максимального числа итераций

теперь у меня есть эта ошибка

Error in nls(y_k ~ a * x^b, control = nlc, start = c(a = 0.1, b = 0.1)) : 
  singular gradient

я не уверен, что функция nls является более подходящей, чтобы я мог достичь своей цели;

Не могли бы вы мне помочь, пожалуйста?

0 ответов

Другие вопросы по тегам