nlme 示例中的错误消息存在于 R 但不存在于 S
Error message in nlme example present in R but not in S
我正在研究 R 中的 S 和 S-Plus 中的混合效应模型,但某些代码不会产生文本结果。在第 6 章中,其中一个示例无法与提供的代码收敛。
该示例是对 nlme
包提供的 Phenobarb
数据集执行的非线性混合效应模型。
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) )
..returns 错误
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
是处理此类收敛问题的一种非常常见的方法,例如,参见
我正在研究 R 中的 S 和 S-Plus 中的混合效应模型,但某些代码不会产生文本结果。在第 6 章中,其中一个示例无法与提供的代码收敛。
该示例是对 nlme
包提供的 Phenobarb
数据集执行的非线性混合效应模型。
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) )
..returns 错误
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
是处理此类收敛问题的一种非常常见的方法,例如,参见