我一直在研究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
任何人都可以阐明此消息,以及如何使它起作用吗?
答案 0 :(得分:1)
在优化过程中,似乎应该是正数的东西变成了负数:sqrt
和log
之类的函数在应用于负数时会返回NaN
。在不深入研究的情况下,我尝试研究了应该返回正值的方差模型。为const
设置较高的初始值可解决以下问题:
fm4Theo.nlme <- update(fm3Theo.nlme, weights = varConstPower(const = 0.5, power = 0.1))