我刚刚更新了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)
非常感谢!
的 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的说明,将此建议推广到 glmer
与 glmControl
.