我之前看到过一些关于Stack的类似抱怨,但没有找到适合我的解决方案。此外,由于理论上的影响,我确实需要保留模型中的所有内容。我也研究了Rfast
包(感谢创建者之一,他非常友好地通过电子邮件回复了我的问题)。然而,在我的例子中,它并没有达到目的,因为我需要随机斜率和随机截获,以及两者之间的相关性。
所以,我得到的模型是:
acc_glmer <- glmer(Accuracy ~ Language * Switching +
(Language|Subject) + (Switching|Subject) +
(Language|Item) + (Switching|Item),
family = "binomial", data)
有没有人能建议我如何加速这个过程,或者哪里会出问题?即使需要几个小时,我也会很高兴,因为它仍然会在某个时候结束。目前它运行了一天以上,然后我杀死了进程,RStudio通常会阻塞,所以我必须重新启动它(没有错误消息或警告)。作为附加信息,我在27,000个观察值的数据上运行它(这些变量没有NAs )。
任何意见都将不胜感激,谢谢。
发布于 2021-11-12 15:21:31
感谢大家提供的非常有用的反馈!我将详细说明将来对其他人进行故障排除时,我尝试了哪些内容,哪些内容对我的数据有效或无效:
所以,我先试着添加verbose=2
,但似乎什么也没做。它仍然会永远运行(至少16小时),不显示任何内容。
control = glmerControl(optimizer = "Nelder_Mead")
,发现它对我的数据不收敛,并显示以下消息:Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge with max|grad| = 0.130366 (tol = 0.002, component 1)
control = glmerControl(optimizer = "Nelder_Mead", calc.derivs=FALSE)
时,它确实很“收敛”,但我认为下一个解决方案效果更好。glmer
选项control = glmerControl(optimizer = "bobyqa")
尝试了同样的方法。根据我所读到的模型converged.bobyqa
默认使用nAGQ=0
(如果错误,请纠正我),所以我也尝试了以下设置:control = glmerControl(optimizer = "Nelder_Mead"), nAGQ=0
。模型收敛了。mustart
或estart
,因为我不认为我很好地理解了为我的情况添加什么样的值是有意义的,不幸的是。所以我不能评论它们对我是否有效。nAGQ=0
对模型运行allFit
时,我得到的总结是它们都是好的,并且它们之间的可能性非常相似(所有的都是-8101.988,Nelder-Mead是-8102.555 )。再次感谢大家!我认为在阅读了推荐的文章后,我对我的问题有了更好的理解。请随时评论和纠正我的上述任何一点。
https://stackoverflow.com/questions/69929896
复制相似问题