1

我正在尝试对从论文中得到的蚊子发育与温度的非线性回归进行拟合,但作者没有建立函数。此外,为了设置非线性回归,我使用了 breier 等人 (1999) 提出的第一个模型:

发展速度(1/天)= Tpred (Tpred-TO)*sqrt(TL-Tpred) 对于 TO<Tpred<TL

其中 a 是一个常数 Tpred 是用作预测发展速率的温度 TO 是发展为零时的温度 TL 是致死温度

数据是:

温度:15、20、25、30、35

rate_to_adult:0.028571430、0.06944444、0.09615385、0.11363636、0.08130081。

和我的代码遵循 Ritz 书籍非线性回归与 R

model_function<-function(Tpred,a,TO,Tl){a*Tpred*(Tpred-TO)*sqrt(Tl-Tpred)}
#function   for the model

model_initial<-function(mCall,LHS,data){
xy<-sortedXyData(mCall[['Tpred']],LHS,data)
fit<-lm(xy[,'y']~xy[,'x'])
coefs<-coef(fit)
a<-coefs[1]    
TO<-coefs[2]
Tl<-coefs[3]
value<-c(a,TO,Tl)

names(value)<-mCall[c('a','TO','Tl')]
value
}

Self_starter<-selfStart(model_function,model_initial,c('a','TO','Tl'))

print(getInitial(rate_to_adult ~ Self_starter(Temp,a,TO,Tl), param), digits = 3)

上一行生成:

0.00300 0.00299 不适用

分别为 a、TO 和 Tl

和 m1<-nls(rate_gon ~ Self_starter(Temp,a,TO,Tl), data = param)

生成:numericDeriv(form[[3L]],names(ind), env) 中的错误:评估 mod 时产生的缺失值或无穷大

我必须修改什么才能实际获得起始值(所有这些值)和模型拟合?

更新

来自评论:

我绘制数据和曲线以开始尝试每个参数的值

 g<-function(Te,a,TO,Tl){(a*Te*(Te-TO)*sqrt(Tl-Te))} # rate to adult model (evaluating starter values)

plot(rate_to_adult~Temp, data = param, xlim = c(0,50), ylim = c(0,1)) 

curve(g(x, a=0.00007,TO=8, Tl=37), add = TRUE)

[我没有花很长时间找到合适的 TO 和 T1 检查曲线相对于点的行为。然后只需使用nls()并获得非常接近的参数

4

0 回答 0