gpt4 book ai didi

r - 在 optwrap 中使用 lmer 的模糊警告 lme4

转载 作者:行者123 更新时间:2023-12-02 05:20:57 25 4
gpt4 key购买 nike

使用lmer我收到以下警告:

Warning messages:
1: In optwrap(optimizer, devfun, x@theta, lower = x@lower) :
convergence code 3 from bobyqa: bobyqa -- a trust region step failed to reduce q

此错误是在使用 anova(model1, model2) 后生成的。我尝试使其可重现,但如果我 dput 数据并重试,则错误不会在 dput 数据上重现,尽管原始数据帧和新数据帧具有完全相同的 str >.

如果在干净的 session 中再次尝试,并且错误重现,并且再次因dput而丢失

我知道我不会在这里给人们太多的帮助,就像我说的我很乐意重现这个问题。 Cayone 解释了这个警告吗?

最佳答案

(我不确定这是评论还是答案,但它有点长,可能是一个答案。)

  • 难以重现结果的最直接原因是 lme4 同时使用环境和引用类:这些很难“序列化”,即转换为可以通过保存的线性流dput()save()。 (您可以尝试一下 save() 并看看它是否比 dput() 效果更好?
  • 此外,环境和引用类都使用“按引用传递”语义,因此对保存的模型进行操作可以更改它。 anova() 自动重新拟合模型,这会对保存的模型对象的内部结构进行一些微小但非零的更改(我们仍在尝试追踪这一点)。
  • @alexkeil 的评论是错误的:lme4 中使用的非线性优化器使用对伪随机数生成器的任何调用。它们是确定性的(但以上两点解释了为什么事情可能看起来有点奇怪)。

为了减轻您对拟合的担忧,我会通过计算最终拟合的梯度和 Hessian 来检查拟合,例如

library(lme4)
library(numDeriv)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
dd <- update(fm1,devFunOnly=TRUE)
params <- getME(fm1,"theta") ## also need beta for glmer fits
grad(dd,params)
## all values 'small', say < 1e-3
## [1] 0.0002462423 0.0003276917 0.0003415010
eigen(solve(hessian(dd,params)),only.values=TRUE)$values
## all values positive and of similar magnitude
## [1] 0.029051631 0.002757233 0.001182232

我们正在实现类似的检查,以便在 lme4 中自动运行。

也就是说,如果有一种方法可以相对轻松地重现它,我仍然希望看到您的示例。

PS:为了使用 bobyqa,您必须使用 glmer 或已使用 lmerControl 修改默认优化器选择。 ..??

关于r - 在 optwrap 中使用 lmer 的模糊警告 lme4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20743453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com