gpt4 book ai didi

r - nlme 示例中的错误消息存在于 R 但不存在于 S

转载 作者:行者123 更新时间:2023-12-02 02:49:29 24 4
gpt4 key购买 nike

我正在 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) )

..返回错误

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 - nlme 示例中的错误消息存在于 R 但不存在于 S,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52884290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com