2014-07-15 12 views
0

我試圖讓使用R中的NLS功能的冪函數的擬合,但我沒有找到好的開始值。查找啓動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'

任何幫助,請...

+0

你可以採取的日誌,適合線性模型,並從那裏使用coef的起始值。 – EDi

回答

1

你可以採取的日誌,符合線性模型,並使用COEF從那裏出發值:

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)