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
任何人都可以阐明此消息,以及我如何让它发挥作用吗?
看起来应该是正数的东西在优化过程中变成了负数:sqrt
和 log
等函数应用于负数时 return NaN
.在没有深入挖掘的情况下,我试图研究方差模型,它应该是 return 正值。为 const
设置更高的初始值可解决问题:
fm4Theo.nlme <- update(fm3Theo.nlme, weights = varConstPower(const = 0.5, power = 0.1))
我一直在学习 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
任何人都可以阐明此消息,以及我如何让它发挥作用吗?
看起来应该是正数的东西在优化过程中变成了负数:sqrt
和 log
等函数应用于负数时 return NaN
.在没有深入挖掘的情况下,我试图研究方差模型,它应该是 return 正值。为 const
设置更高的初始值可解决问题:
fm4Theo.nlme <- update(fm3Theo.nlme, weights = varConstPower(const = 0.5, power = 0.1))