【问题标题】:Increasing number of iterations for lme4 version 1.1-7lme4 版本 1.1-7 的迭代次数增加
【发布时间】:2015-08-01 06:40:09
【问题描述】:

我在尝试使用包 lme4 版本 1/1-7 的 glmer 函数进行混合效应二项式回归时遇到了迭代问题。

当我使用代码运行模型时:

model <- glmer(Clinical.signs ~ cloacal +(1|Chicken_ID), family = binomial, 
               data = viral_load_9)

我收到警告:

错误:pwrssUpdate 在(最大)迭代中没有收敛

当我遵循here给出的建议时

使用代码:

model <- glmer(Clinical.signs ~ cloacal +(1|Chicken_ID), family = binomial, 
               data = viral_load_9, 
               control=glmerControl(optimizer="bobyqa", 
                                    optCtrl = list(maxfun = 100000)))

我仍然有完全相同的错误消息。

任何关于我的代码可能有问题的建议都将不胜感激。

---------------------------------------------- ------------------

遵循 aosmith 的建议(感谢您的建议!)我将数据和代码包括在内,以便其他人可以复制我得到的结果。请注意,代码对变量“oral”运行良好并生成了“model_1”,但是当我使用变量“cloacal”运行它时,我收到了如上所述的错误消息。

Chicken_ID  <- c(44,44,45,45,46,46,47,47,48,48,49,49,50,50,51,51,52,52,53,55,55)
oral <- c(-0.4827578,-0.1845839,-1.3772797,-0.7809318,-0.4827578,1.6044598,0.1135901,0.411764,-0.1845839,1.6044598,-0.1845839,1.6044598,-1.6754536,0.709938,-1.0791057,0.709938,0.1135901,1.0081119,0.411764,-1.6754536,-0.1845839)
cloacal <- c(-0.9833258,0.450691,-1.1267275,0.7374944,-1.1267275,1.0242977,-1.5569325,1.0242977,0.3072893,1.0242977,-0.1229157,1.1676994,-1.5569325,0.5940927,0.450691,0.3072893,-1.1267275,0.7374944,0.1638876,-1.5569325,1.1676994)
clinical.signs  <- c("YES","YES","NO","YES","NO","YES","NO","YES","YES","YES","YES","YES","NO","YES","YES","YES","NO","YES","YES","NO","YES")
clinical.signs <- factor(clinical.signs)
viral_load <- data.frame(Chicken_ID, oral, cloacal, clinical.signs)


library(lme4)

model_1 <- glmer(clinical.signs ~ oral +(1|Chicken_ID), 
                       family = binomial, data = viral_load)
summary(model_1)

model_2 <- glmer(clinical.signs ~ cloacal +(1|Chicken_ID), 
                       family = binomial, data = viral_load)
                     

【问题讨论】:

  • 提供可重现的示例会更容易,但如果模型合理且更改优化器无济于事(我经常以 nloptwrap 开头,但您有很多选择),您可以尝试更改 glmerControl (for an example see this) 中的 pwrss 容差。如果这有助于事情收敛,您可能会看到证据,例如完全/准完全分离问题。
  • 感谢有关“pwrss”选项的建议。我重新运行了模型,如下所示:model &lt;- glmer(Clinical.signs ~ cloacal +(1|Chicken_ID), family = binomial, data = viral_load_9, control=glmerControl(optimizer="bobyqa", tolPwrss=1e-3,optCtrl = list(maxfun = 100000))) - 但错误消息保持不变
  • 嗯,您可以考虑添加您的数据集或其他重现问题的示例。
  • 你已经完全分离了。查看每个组 (by(viral_load[3], viral_load$clinical.signs, summary)) 的 cloacal 的摘要 - 两组之间的值没有重叠。如果暂时忽略随机效应,用glm拟合模型,也能很快看出问题。
  • 是的,您对完全分离问题是正确的。做得好!这不是我以前遇到过的,但我在link 找到了一个很好的解释。我需要做更多的研究来应用一些建议的解决方案来为我的困难数据集建模,但我认为这现在结束了我最初的问题。再次感谢您的帮助。

标签: r lme4


【解决方案1】:

您的代码可能没有问题。请参阅此Q on Cross-Validated。 您可以采取一些措施来防止收敛失败:

  • 重新调整连续变量
  • 使用glmerControl() 尝试不同的逼近器
  • 检查您的数据是否存在稀疏数据。如果在某些级别的预测变量上没有足够的结果或观察结果,模型可能无法收敛。

【讨论】:

  • 谢谢......和一个非常有效的建议。事实上,当我第一次遇到收敛问题时,我怀疑这是一个数据问题,因此我对协变量进行了标准化,以“0”为中心。但是在重新运行模型后 - 我收到了关于收敛问题的相同错误消息。因此,这让我认为这是我的代码......或者是 lme4 库的问题......
猜你喜欢
  • 2013-10-29
  • 2013-05-17
  • 1970-01-01
  • 2022-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 2019-03-11
相关资源
最近更新 更多