Skip to content

[R-es] Warnings en GLMM (lme4)

4 messages · javier bueno enciso, Freddy López, Alex

#
Hola,
Soy nuevo manejando R y no tengo mucha experiencia. Estoy intentando modelar una función que me relacione el nº de cebas (nº de presas que los padres traen a los pollos) con el tamaño de parche de un bosque (factor categórico; 2 niveles= grande y pequeño). Al ser un conteo (nº de cebas) he pensado utilizar familia= poisson con link= logarítmico. He construido un GLMM con: Nº de cebas (variable respuesta), Duración del video (esfuerzo de muestreo:  60, 50 y 45 minutos) como una offset en el modelo (transformándola previamente por el logaritmo). Tamaño de parche, factor explicativo, Nº de pollos y fecha de puesta covariables. Además he incluido como random el año de estudio (3 años), el ID del nido anidado dentro del ID de cada parche (tengo varios parches, grandes y pequeños) y la identidad del padre y de la madre también como rándom, puesto que se pueden repetir entre años. La estructura de mi modelo es la siguiente:
#paquete(lme4), mi versión de R es la 3.1.1.

m1<- glmer(ncebas~offset(LogDur_video)+ TamañoParche*Ldate*Csize+(1|YEAR) + (1|Bosque/nideo)+ (1|Hembra) + (1|Macho), data=Cebas, family=poisson(link=log)) #con todas las variables e interacciones posibles para que sirva como referencia a la hora de la selección del modelo final.

El modelo me funciona, sin embargo me aparecen unos warnings que no sé a que se deben ni la importancia real en el cáculo de mi modelo. Mi pregunta es si alguien en el foro sabe  porqué aparecen y como solucionarlos. Los warnings son:

Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.00431561 (tol = 0.001, component 7)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?;Model is nearly unidentifiable: large eigenvalue ratio
 - Rescale variables? 
Muchas gracias, atentamente,
Javier
#
Hola Javier. Talvez peque de obvio, pero tu problema no es exactamente
del software sino del modelo. El mensaje es claro: casi no es
identificable. Puedes aumentar el número de iteraciones para ver si
este modelo específico converge felizmente (no sé si tenga esta opción
la función).

Lo que yo, externamente, sospecho, es que el modelo tiene muchos
efectos aleatorios (año, nido, hembra, macho) y posiblemente una gran
cantidad de interacciones. Considera correr un modelo con un
intercepto aleatorio primero y observa si obtienes warnings por
convergencia. Eso te dará ideas del problema.

¡Salud!
On 10/19/14, javier bueno enciso <jbuenoenciso en hotmail.com> wrote:

  
    
#
Hola Javier,
yo me he encontrado con errores similares. Aquí tienes la respuesta del 
propio Ben Bolker al respecto: 
http://stackoverflow.com/questions/21344555/convergence-error-for-development-version-of-lme4
Como puedes leer, eso podría resultar ser un falso positivo y recomienda 
utilizar el siguiente optimizador:

 > control=glmerControl(optimizer="bobyqa")

Otra cuestión es el reescalado de las variables. Posiblemente tengas 
variables de diferentes órdenes de magnitud lo que dificulta que 
converja el modelo. Te recomiendo que re-escales tus variables 
(centrarlas y ponerlas todas en el mismo orden de magnitud puede ser una 
buena opción).
Con estos pequeños "tips" yo he conseguido que mi modelo funcione sin 
warnings, espero que sean de ayuda.
Un saludo,
2 days later
#
Gracias Javier Rubén y Freddy por las respuestas. Efectivamente probablemente se deba a que el modelo es muy complicado, aunque comparando diferentes modelos con la función anova, el modelo que mejor se ajusta a los datos es el más complejo, incluyendo todos los factores random.
Un saludo.