El modelo Lmer no logra converger

12

Mis datos se describen aquí. ¿Qué puede causar un "error () es un error singular" en aov cuando se ajusta un ANOVA de medidas repetidas?

Estoy tratando de ver el efecto de una interacción usando, lmerasí que mi caso base es:

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)

Ejecutar anovame da resultados significativos, pero cuando trato de tener en cuenta la pendiente aleatoria ( (1+Scenario|Player)), el modelo falla con este error:

  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

Alternativamente, si no puede converger después de muchas iteraciones (lo configuré en 100 000) y obtengo los mismos resultados después 50ky 100ksignifica que está muy cerca del valor real, simplemente no lo alcanza. Entonces, ¿puedo informar mis resultados así?

Tenga en cuenta que cuando configuro las iteraciones tan altas, solo recibo estas advertencias:

 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
Pio
fuente

Respuestas:

8

Vea esta conversación para un método alternativo de evaluación de la convergencia. Específicamente, este comentario de Ben Bolker:

Gracias. Una prueba aún más simple sería tomar un ejemplo ajustado que le diera advertencias de convergencia y observar los resultados
relgrad <- with(fitted_model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
y ver si es razonablemente pequeño (por ejemplo, <0.001?)

Alternativamente, puede probar el consejo de Bolker aquí , que es probar un optimizador diferente.

filups21
fuente
1
¿Qué se debe hacer si max (abs (relgrad)) le da un valor de 2.9239489e-05?
Jens
1
@Jens entonces eso sería muy, muy pequeño (e-05 significa "escribe 5 ceros y luego los números que ves a la izquierda", con un punto después del primer cero). ¡Entonces uno estaría muy feliz con ese valor!
Arthur Spoon