私は論文から得た気温に対する蚊の発生に関する非線形回帰を当てはめようとしていますが、著者は関数を確立していません。さらに、非線形回帰を設定するために、breier et al (1999) によって述べられた最初のモデルを使用しています。
TO<Tpred<TL の場合、発生率 (1/日) = Tpred (Tpred-TO)*sqrt(TL-Tpred)
ここで、a は定数です Tpred は発育速度の予測因子として使用する温度です TO は発育がゼロのときの温度です TL は致死温度です
データは次のとおりです。
臨時雇用者: 15、20、25、30、35
大人への割合: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)
[I]t は、ポイントに関する曲線の動作をチェックする TO および T1 に適したものを見つけるのにそれほど時間はかかりませんでした。次に
nls()
、かなり近いパラメータを使用して取得しました