使用lmer在optwrap中隐藏警告lme4

时间:2013-12-23 12:19:44

标签: r lme4

使用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

如果在干净的会话中再次尝试过,并且错误再现,并且dput再次失败

我知道我不会给人们太多的工作,就像我说我很想重现这个问题。 Cayone对此警告有所了解?

1 个答案:

答案 0 :(得分:5)

(我不确定这是评论还是回答,但它有点长,可能可以作为答案。)

  • 复制结果困难的近因是lme4使用环境和参考类:这些都很难“序列化”,即转换为可以通过{{1 }或dput()。 (你能否试试save(),看看它是否比save()更好?
  • 此外,环境和引用类都使用“pass-by-reference”语义,因此对保存的模型进行操作可以更改它。 dput()自动重新修改模型,这会在保存的模型对象的内部结构中进行一些微小但非零的更改(我们仍在尝试跟踪此情况)。
  • @ alexkeil的评论错误:anova()中使用的非线性优化器使用对伪随机数生成器的任何调用。它们是确定性的(但上面两点解释了为什么事情可能看起来有点奇怪)。

为了减轻你的顾虑,我会通过计算最终拟合的渐变和Hessian来检查拟合,例如。

lme4

我们正在实施类似检查,以便在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 内自动运行。

那就是说,我仍然希望看到你的榜样,如果有办法相对容易地重现它。

PS:为了使用lme4,您必须使用bobyqa或使用glmer修改默认优化器选项... ??