Pinhiero 和 Bates 的非线性混合效应模型的模型失效

Model failure for nonlinear mixed-effects model from Pinhiero and Bates

我一直在学习 Pinhiero 和 Bates 的 S 和 S-Plus 中的混合效应模型,并且发现书中的模型存在很多问题。

最新的是这个,使用常数加幂函数来模拟 Theo 数据集中的异方差组内误差,(第 393 页)。该错误出现在模型构建练习结束时。前三个模型在 R 中工作,但最后一个不工作

library(nlme)
fm1Theo.nlme <- nlme( model = conc ~ SSfol(Dose, Time, lKe, lKa, lCl), 
                      data = Theoph,
                      fixed = lKe + lKa + lCl ~ 1,
                      random = lKe + lKa + lCl ~ 1)
fm2Theo.nlme <- update(fm1Theo.nlme, random = pdDiag(list(lKe ~ 1, lKa ~ 1, lCl ~ 1)))
fm3Theo.nlme <- update(fm2Theo.nlme, random = pdDiag(list(lKa ~ 1, lCl ~ 1)))
fm4Theo.nlme <- update(fm3Theo.nlme, weights = varConstPower(power=0.1))

...产生错误消息

Error in eigen(val, only.values = TRUE) : 
  infinite or missing values in 'x'
In addition: Warning messages:
1: In nlminb(c(coef(nlmeSt)), function(nlmePars) -logLik(nlmeSt, nlmePars),  :
  NA/NaN function evaluation
2: In nlminb(c(coef(nlmeSt)), function(nlmePars) -logLik(nlmeSt, nlmePars),  :
  NA/NaN function evaluation
3: In nlminb(c(coef(nlmeSt)), function(nlmePars) -logLik(nlmeSt, nlmePars),  :
  NA/NaN function evaluation
4: In nlminb(c(coef(nlmeSt)), function(nlmePars) -logLik(nlmeSt, nlmePars),  :
  NA/NaN function evaluation

任何人都可以阐明此消息,以及我如何让它发挥作用吗?

看起来应该是正数的东西在优化过程中变成了负数:sqrtlog 等函数应用于负数时 return NaN .在没有深入挖掘的情况下,我试图研究方差模型,它应该是 return 正值。为 const 设置更高的初始值可解决问题:

fm4Theo.nlme <- update(fm3Theo.nlme, weights = varConstPower(const = 0.5, power = 0.1))