Lmer 模型无法收敛

机器算法验证 r lme4-nlme
2022-03-07 08:14:21

此处描述了我的数据拟合重复测量方差分析时,什么会导致 aov 中的“Error() 模型是奇异错误”?

我正在尝试使用以下方式查看交互的效果,lmer因此我的基本情况是:

my_null.model <- lmer(value ~ Condition+Scenario+ 
                             (1|Player)+(1|Trial), data = my, REML=FALSE)

my.model <- lmer(value ~ Condition*Scenario+ 
                             (1|Player)+(1|Trial), data = my, REML=FALSE)

运行anova给了我显着的结果,但是当我尝试考虑随机斜率 ( (1+Scenario|Player)) 时,模型失败并出现以下错误:

  Warning messages:
 1: In commonArgs(par, fn, control, environment()) :
   maxfun < 10 * length(par)^2 is not recommended.
 2: In optwrap(optimizer, devfun, getStart(start, rho$lower, rho$pp),  :
  convergence code 1 from bobyqa: bobyqa -- maximum number of function evaluations exceeded
 3: In commonArgs(par, fn, control, environment()) :
  maxfun < 10 * length(par)^2 is not recommended.
 4: In optwrap(optimizer, devfun, opt$par, lower = rho$lower, control = control,  :
   convergence code 1 from bobyqa: bobyqa -- maximum number of function evaluations exceeded
 5: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
   Model failed to converge with max|grad| = 36.9306 (tol = 0.002)
 6: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
   Model failed to converge: degenerate  Hessian with 1 negative eigenvalues

或者,如果它在多次迭代后未能收敛(我将其设置为100 000)并且之后我得到相同的结果50k100k这意味着它非常接近实际值,只是没有达到它。那么我可以像这样报告我的结果吗?

请注意,当我将迭代设置得如此之高时,我只会收到以下警告:

 Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
 Model failed to converge with max|grad| = 43.4951 (tol = 0.002)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
 Model failed to converge: degenerate  Hessian with 1 negative eigenvalues
1个回答

有关评估收敛的另一种方法,请参阅此对话。具体来说,来自 Ben Bolker 的评论:

谢谢。一个更简单的测试是举一个合适的例子,给你收敛警告,看看结果,
relgrad <- with(fitted_model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
看看它是否相当小(例如<0.001?)

或者,您可以在此处尝试 Bolker 的建议,即尝试不同的优化器。