增加新版本lmer的迭代次数?

问题描述 投票:13回答:1

我刚刚更新了lme4到1.0-4版本,当我运行lmer()时,我的混合效应模型,之前是收敛的,现在却打印了这个警告。

Warning message:
In (function (fn, par, lower = rep.int(-Inf, n), upper = rep.int(Inf,  :
  failure to converge in 10000 evaluations

所以,我想试着增加迭代次数 看看是否能解决这个问题。我必须说我不知道是什么原因导致了这个警告,因为消息的第一部分听起来有点不透明)。无论如何,我在文档中看到,现在我应该使用 lmerControl()但我一直没能实现。谁能给我一个具体的例子来说明你是如何做到这一点的?帮助文件没有帮助)。这是我的模型。

m <- lmer(RT ~ Factor1*Factor2 + (0+Factor1+Factor2|Subject) + (1|Subject)  + (1|Item) + (0+Factor1+Factor2|Item), data= data)

非常感谢!

r iteration lme4 lmer
1个回答
20
投票

lmerControl 函数允许你选择一个优化器并传递控制参数给它。控制迭代次数或评估次数的参数因函数而异(在帮助页面的 lmerControl). 默认的优化器是 "Nelder_Mead",对于该优化器的选择,可以通过在'optCtrl'参数列表中指定 "maxfun "来改变最大评估次数。

m <- lmer(RT ~ Factor1*Factor2 + (0+Factor1+Factor2|Subject) + 
               (1|Subject)  + (1|Item) + (0+Factor1+Factor2|Item),
          data= data, control=lmerControl(optCtrl=list(maxfun=20000) ) )

但这并不保证一定能达到收敛。(我的经验是,默认的最大值通常是足够的。)你的数据完全有可能不足以支持模型的复杂性,或者模型的设计不正确。

迟来的感谢@NBrouwer的说明,将此建议推广到 glmerglmControl.

© www.soinside.com 2019 - 2024. All rights reserved.