web-dev-qa-db-ja.com

nlsのトラブル:モデルの評価時に生成された値の欠落または無限大

私は、植物の光合成光応答曲線(飽和、曲線)を専門家によって受け入れられた特定のモデルに適合させようとしているR初心者です。目標は、Am、Rd、およびLCPの推定係数値を取得することです。これが私が得続けるエラーです:

Error in numericDeriv(form[[3L]], names(ind), env) : 
  Missing value or an infinity produced when evaluating the model

開始値を何度も切り替えましたが、それでもうまくいきません。助けて?よろしくお願いします。以下のデータセットの例。

photolrc= c(3.089753, 6.336478, 7.737142, 8.004812, 8.031599)
PARlrc= c(48.69624, 200.08539, 499.29840, 749.59222, 1250.09363)
curvelrc<-data.frame(PARlrc,photolrc)
curve.nlslrc = nls(photolrc ~ Am*(1-((1-(Rd/Am))^(1-(PARlrc/LCP)))),start=list(Am=(max(photolrc)-min(photolrc)),Rd=-min(photolrc),LCP= (max(photolrc)-1)))
coef(curve.nlslrc)
9
Plantapus

minpack.lmが救助に:

_library(minpack.lm)
curve.nlslrc = nlsLM(photolrc ~ Am*(1-((1-(Rd/Am))^(1-(PARlrc/LCP)))),
                   start=list(Am=(max(photolrc)-min(photolrc)),
                              Rd=-min(photolrc),
                              LCP= (max(photolrc)-1)),
                   data = curvelrc)
coef(curve.nlslrc)
  #      Am         Rd        LCP 
  #8.011311   1.087484 -20.752957

plot(photolrc ~ PARlrc, data = curvelrc)
lines(0:1300, 
      predict(curve.nlslrc, 
              newdata = data.frame(PARlrc = 0:1300)))
_

resulting plot

start = list(Am = 8, Rd = 1, LCP = -20)nlsに渡すと、適合も成功します。

この背後にある科学を考慮すると、パラメータ値が賢明な推定値であるかどうかはわかりません。 LCPをマイナスにすることはできますか?

15
Roland