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

15

我刚刚更新了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)

非常感谢!


这不是一个错误信息,而是一个警告。 - IRTFM
1个回答

24

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提供提示,将此建议扩展到带有glmControlglmer


谢谢!我尝试了一下,结果出现了这个消息:警告信息: 在checkArgs("lmer", optCtrl = list(maxfun = 20000))中: 额外的参数‘optCtrl’被忽略。 - Sol
2
抱歉,它需要传递给 lmerControl - IRTFM
14
注意:对于广义线性混合模型(glmer,glmer.nb),请使用glmerControl。 - N Brouwer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接