使用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对此警告有所了解?
答案 0 :(得分:5)
(我不确定这是评论还是回答,但它有点长,可能可以作为答案。)
lme4
使用环境和参考类:这些都很难“序列化”,即转换为可以通过{{1 }或dput()
。 (你能否试试save()
,看看它是否比save()
更好?dput()
自动重新修改模型,这会在保存的模型对象的内部结构中进行一些微小但非零的更改(我们仍在尝试跟踪此情况)。 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
修改默认优化器选项... ??