Функция самостоятельного запуска в R
Я пытаюсь приспособить нелинейную регрессию для развития комара относительно температуры, которую я получил из бумаги, но автор не установил функцию. Кроме того, чтобы установить нелинейную регрессию, я использую первую модель, заявленную breier et al (1999):
скорость разработки (1/ дней) = *Tpred*(Tpred-TO)*sqrt(TL-Tpred) для TO
где a - постоянная Tpred - температура, используемая в качестве предиктора скорости развития. TO - температура, при которой развитие равно нулю. TL - смертельная температура.
данные:
Temp: 15, 20, 25, 30, 35
rate_to_adult:0,028571430, 0,06944444, 0,09615385, 0,11363636, 0,08130081.
и мой код после книги Ритца нелинейной регрессии с 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 НС
для а, к и тл соответственно
и m1 <-nls (rate_gon ~ Self_starter (Temp, a, TO, Tl), data = param)
генерирует: Ошибка в numericDeriv(форма [[3L]], имена (ind), env): отсутствует значение или бесконечность, возникающая при оценке мода
Что я должен изменить, чтобы на самом деле получить начальные значения (все) и подгонку модели?
Спасибо