我们应该对lme4中的收敛警告感到多么恐惧


88

如果我们重新装上一目了然的眼镜,我们可能会收到一条警告,告知我们该模型正在难以收敛...例如

>Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.00389462 (tol = 0.001)

@Ben Bolker 在此线程中讨论的另一种检查收敛的方法是:

 relgrad <- with(model@optinfo$derivs,solve(Hessian,gradient))
 max(abs(relgrad))
 #[1] 1.152891e-05

如果max(abs(relgrad))可以,<0.001那么事情可能没事...所以在这种情况下,我们得出的结果相互矛盾?我们应该如何在方法之间进行选择,并通过模型拟合感到安全?

另一方面,当我们获得更多极限值时,例如:

>Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 35.5352 (tol = 0.001)

relgrad <- with(model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
#[1] 0.002776518

这是否意味着我们必须忽略模型结果/估计/ p值?0.0027太大了吗?

当不同的优化器给出不同的结果并且变量居中/删除参数(将模型剥离到最小)无济于事,但VIF较低,模型没有过度分散,并且模型结果基于先验期望具有逻辑意义时,似乎很难知道该怎么办。

关于如何解释趋同问题,真正需要我们解决它们的极端程度的建议以及尝试解决上述问题的可能方法将非常有帮助。

使用: R version 3.1.0 (2014-04-10)lme4_1.1-6


10
较新版本lme4(版本1.1-7)具有不同的警告行为,因此作者认为不太可能发出“假警报”警告。您可能会尝试更新lme4到最新版本,再次拟合模型,并查看是否仍然收到类似的警告,至少在第一种情况下。
Jake Westfall

Answers:


91

害怕。非常害怕

去年,我采访了约翰·纳什,和的Optim的optimx笔者,对于文章在IBM的developerWorks网站。我们讨论了优化器如何工作以及为什么失败时失败。他似乎认为他们经常这样做。这就是诊断程序包含在包装中的原因。他还认为您需要“了解您的问题”并了解您的数据。所有这些都意味着警告应得到认真对待,并邀请您以其他方式查看您的数据。

通常,当优化器无法再将损失函数提高有意义的数量时,它会停止搜索。基本上,它不知道下一步要去哪里。如果此时损失函数的梯度不为零,则您尚未达到任何极值。如果Hessian不是正数,但梯度为零,则没有找到最小值,但是有可能找到了最大值或鞍点。但是,取决于优化程序,可能不会提供有关Hessian的结果。在Optimx中,如果要评估KKT条件,则必须要求它们-默认情况下不评估它们。(这些条件着眼于渐变色和Hessian,看您是否真的有最小值。)

混合模型的问题在于,随机效应的方差估计被约束为正,从而在优化区域内放置了边界。但是,假设您的模型中确实不需要特定的随机效果-即随机效果的方差为0。优化器将进入该边界,无法继续进行,并以非零梯度停止。如果删除该随机效应可改善收敛性,您将知道是问题所在。

顺便说一句,请注意,渐近最大似然理论假设在内部点(即不在合法参数值的边界上)找到了MLE-因此,当确实存在零方差的零假设时,方差分量的似然比检验可能不起作用真正。可以使用仿真测试来完成测试,该仿真测试在软件包RLRsim中实现。

对我来说,我怀疑当参数数量的数据太少时,优化器会遇到问题,或者所提出的模型确实不合适。想想玻璃拖鞋和丑陋的姐姐:无论您多么努力,而且必须付出一些努力,您都无法将数据塞入模型中。

即使数据碰巧适合模型,它们也可能没有能力估算所有参数。这些事情对我来说很有趣。我模拟了一些混合模型来回答问题关于在拟合混合效果模型时不允许随机效果相互关联会发生什么。我模拟了两个随机效应之间具有很强相关性的数据,然后使用lmer两种方式对模型进行拟合:放置0相关性和自由相关性。相关模型比不相关模型拟合得更好,但是有趣的是,在1000次仿真中,拟合真实模型时有13个错误,而拟合较简单模型时有0个错误。我不完全理解为什么会发生这种情况(我将模拟重复到类似的结果)。我怀疑相关参数相当无用,优化器无法找到该值(因为这无关紧要)。

您询问了当不同的优化器给出不同结果时该怎么做。约翰和我讨论了这一点。在他看来,某些优化器并不是那么好!它们都有弱点-即会导致它们失败的数据集。这就是为什么他写了optimx的原因,其中包括各种优化程序。您可以对同一数据集运行多个。

如果两个优化器提供相同的参数,但诊断方法不同-并且这些参数在现实中有意义-那么我将倾向于信任这些参数值。问题可能出在诊断上,这并非万无一失。如果您未明确提供梯度函数和/或Hessian矩阵,则优化器将需要从损失函数和数据中估算出这些,否则可能会出错。

如果您还获得了不同的参数值,那么您可能想要尝试使用不同的起始值,然后看看会发生什么。一些优化器和一些问题对初始值非常敏感。您想从球场开始。


3
啊!我刚刚打开这个问题就是说“害怕。非常害怕”。玩笑。对你好。同样也擅长将其纳入实际答案中,我无意这样做。
亚历克西斯

2
您应该真正阅读纳什(Nash)写的书。确定Hessian在实践中非常困难,因此优化器在许多情况下可能已经收敛,但是Hessian不精确,因此,如果您从不同的优化器获得相似的结果,但是会发出警告,则经常会出现您的Hessian是伪造的而不是模型的情况。Hessian或梯度测试可确保您的放心。有时,像当您使用有边界约束的优化器时,粗麻布也没有多大意义,但是您的粗麻布算法没有考虑到这一点(例如lme4),并且您碰到了边界。

18

我只想补充@Placidia的出色答案。您可能要查看James Hodges(2014)的“使用随机效应的富参数化线性模型:加法,时间序列和空间模型”。它讨论了我们对混合模型不了解的内容,同时尝试提供广泛的理论以及拟合复杂模型的实用技巧。

我自己一个经常被吓到的建模者,我发现霍奇关于“难题”的讨论是无价的。他解释了因拟合混合效果模型而引起的奇怪情况,包括“随机效果与固定效果竞争”和“随机效果之间的竞争”。听起来很熟悉?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.