我正在运行具有三向交互作用的glmer模型,这使我收到以下警告:
Warning:
In optwrap(optimizer, devfun, start, rho$lower, control = control, :
convergence code 1 from nlminbwrap
如果省略了三向交互,则不会出现警告,因此我怀疑这与模型的复杂性有关。
不幸的是,警告中(而且模型摘要中也没有)有关收敛问题性质的更多信息,这使得它很难解决。 [我已经尝试过使用不同的优化器,并且已经增加了函数求值的nr]。
有没有办法找出convergence code 1
的确切含义?另外,我想知道它是否和Model failed to converge
一样严重?我一直在R帮助页面和GLMM FAQ中寻找答案,但似乎找不到任何答案。任何帮助深表感谢!
答案 0 :(得分:0)
好的,所以我在这里做了一些阅读,希望能够帮助一位语言学家。让我们从在注释中指定的模型开始:
model=glmer(Correct_or_incorrect~ (condition|CASE) + condition + sound + syll + condition:sound + condition:syll + syll:sound + condition:sound:syll, dataMelt, control=glmerControl(optimizer="nlminbwrap"), family = binomial)
警告消息代码没有说任何有用的信息,但是convergence code 1
中的bobyqa
至少已使用 ,即将超过函数求值的最大数量。您尝试进行多高的迭代?您将要失去的只是几个小时,所以我会尝试将其设置得很高,然后查看警告消息是否消失。您将失去的只是计算机时间,我个人认为,为不发出警告的模型付出的代价很小。
您还提到当省略3向交互时,警告不存在,我倾向于认为您对模型复杂性是正确的。如果您没有关于该交互作用的任何具体假设,那么我将省略并完成该交互,但是如果您这样做,我认为您可能还没有提到您已经尝试过的一些选择。
有一个名为allFit()
的函数,它将使模型与所有可用的优化器匹配。这将是查看所有不同优化器之间的估算值是否大致相同的快速简便的方法。您可以在已经拟合的模型上运行它,如下所示:
allFit(model)
使用allFit()
有一个很好的选择,这里有不同的论点:https://joshua-nugent.github.io/allFit/此页面还为您的问题提供了许多其他潜在的解决方案。
如果可以的话,我将利用一台具有多个内核的机器并以尽可能多的迭代运行allFit
,并查看是否有任何优化程序不发出此警告,这大概是关于在迭代用尽之前不最小化损失函数。