Найти начальные значения для функции NLS в R

Я пытаюсь подобрать функцию мощности, используя функцию NLS в R, но не могу найти хорошие начальные значения.

Это часть моих данных "CentroM":

Wg  TLcm
3200    79
2650    77
2750    74
870     45
1480    52
3400    80.5
2400    76
2800    76.5
2900    77.5
2700    76
3215    76
3300    83
3100    79
3000    78.5
2800    76
2700    77
2500    74.5
2300    69
2700    73.5
3350    79

и вот скрипт, который я использовал:

plot(CentroM$TLcm,CentroM$Wg,xlab="Total Length(cm)",ylab="Total Weight(g)",pch=1,type="p")
f<-function(TLcm,a,b){a*TLcm^b}
fit<-nls(CentroM$Wg~f(CentroM$TLcm,a,b),start=list(a=0.5,b=0.5),data=CentroM)

и вот что я получаю:

Ошибка в model.frame.default (формула = ~ CentroM + Wg + TLcm, данные = CentroM): недопустимый тип (список) для переменной «CentroM»

Любая помощь, пожалуйста...


person Myr    schedule 15.07.2014    source источник
comment
Вы можете взять журналы, подобрать линейную модель и использовать коэффициент оттуда в качестве начальных значений.   -  person EDi    schedule 15.07.2014


Ответы (1)


Вы можете взять журналы, подобрать линейную модель и использовать коэффициент оттуда в качестве начальных значений:

df <- read.table(header = TRUE, text = 'Wg  TLcm
3200    79
2650    77
2750    74
870     45
1480    52
3400    80.5
2400    76
2800    76.5
2900    77.5
2700    76
3215    76
3300    83
3100    79
3000    78.5
2800    76
2700    77
2500    74.5
2300    69
2700    73.5
3350    79')


mod1 <- lm(log(Wg) ~ log(TLcm), data = df)
fit <- nls(Wg ~ a*TLcm^b, 
         start = list(a = exp(coef(mod1)[1]),
                      b = coef(mod1)[2]), 
         data = df)
person EDi    schedule 15.07.2014