我正在通过S中的混合效果模型和R中的S-Plus进行工作,但是某些代码无法以文本形式生成结果。在第6章中,其中一个示例未能与所提供的代码融合。

该示例是对Phenobarb包随附的nlme数据集执行的非线性混合效果模型。

library(nlme)

fm1Pheno.nlme <- nlme(model = conc ~ phenoModel(Subject, time, dose, lCl, lV),
                      data = Phenobarb,
                      fixed = lCl + lV ~ 1,
                      random = pdDiag(lCl + lV ~ 1),
                      start = c(-5,0),
                      na.action = na.pass,
                      naPattern = ~ !is.na(conc))

fm1Pheno.nlme

第一个模型运行良好,但是第二个模型基于第一个模型
fm2Pheno.nlme <- update( fm1Pheno.nlme,
                         fixed = list(lCl ~ Wt, lV ~ Wt + ApgarInd),
                         start = c(-5.0935, 0, 0.34259, 0, 0),
                         control = list(pnlsTol = 1e-6) )

..返回错误
Error in nlme.formula(model = conc ~ phenoModel(Subject, time, dose, lCl,  :
  maximum number of iterations (maxIter = 50) reached without convergence

第二个模型显然适用于S,但不适用于R。有人可以提出解决方案吗?错误是由于S和R之间的某些差异引起的吗?

最佳答案

我们可以通过调整pnlsTol参数来解决此问题:

fm2Pheno.nlme <- update(fm1Pheno.nlme,
                        fixed = list(lCl ~ Wt, lV ~ Wt + ApgarInd),
                        start = c(-5.0935, 0, 0.34259, 0, 0),
                        control = list(pnlsTol = 0.019))

要了解为什么这样做,请尝试将msVerbose = TRUE添加到control,并查看在公差参数较低的情况下值如何保持跳跃。增加pnlsTol是解决此类收敛问题的一种非常普遍的方法,请参见,例如,
  • Tricks for fitting data in nlme?
  • Gastric Emptying Analysis with R: Miscellaneous
  • Correlation structure of nested nonlinear mixed model
  • [R] nlme and pnlsTol
  • [R-sig-ME] nlme: "Singularity in backsolve" error in ODE-defined, but not in closed-form model
  • 关于r - R中出现nlme示例中的错误消息,但S中不出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52884290/

    10-12 19:10