【问题标题】:increase iterations for new version of lmer?增加新版本 lmer 的迭代次数?
【发布时间】:2013-10-29 00:15:06
【问题描述】:

我刚刚将 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)

非常感谢!

【问题讨论】:

  • 不是错误信息。这是一个警告。
  • @DWin:好的,我编辑了

标签: r iteration lme4 lmer


【解决方案1】:

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 的说明。

【讨论】:

  • 谢谢!我试过了,我收到这条消息:警告消息:在 checkArgs("lmer", optCtrl = list(maxfun = 20000)) : extra argument(s) 'optCtrl' disregarded
  • 抱歉,需要传递给lmerControl
  • 注意:对于广义线性混合模型(glmer、glmer.nb),请使用 glmerControl
猜你喜欢
  • 2015-08-01
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 2019-03-11
  • 1970-01-01
相关资源
最近更新 更多