Estoy intentando comprender mejor los fallos de convergencia en los modelos multinivel que estimo con lmer()
. "Fallo de convergencia" es vago; quiero ser capaz de especificar el problema que subyace a estos fallos, y expresarlo numéricamente en términos de los datos que estoy utilizando. Estoy empezando con poco conocimiento de las matemáticas que sustentan la estimación de estos modelos.
Considere el siguiente ejemplo de juguete:
library(lme4)
set.seed(1234)
person <- factor(rep(c("Alice", "Bob", "Catherine", "David"), each = 3))
female <- rep(1:0, each = 3)
myDF <- data.frame(
y = c(1:6, 10:12, 1:3),
person = person,
female = female)
lmer(y ~ (1 + female | person), data = myDF)
La ejecución de ese ejemplo genera estas advertencias:
Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
unable to evaluate scaled gradient
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge: degenerate Hessian with 1 negative eigenvalues
Aunque he mantenido el conjunto de datos pequeño (n = 12), las advertencias de convergencia no parecen deberse a la pequeña muestra. Hay más observaciones que parámetros a estimar, y con un pequeño ajuste, puedo generar las mismas advertencias cuando (digamos) n = 1200, manteniendo constante el número de parámetros.
Dicho esto, sólo tengo un conocimiento superficial de lo que significan las advertencias. ¿Pueden expresarse los problemas en términos de los datos utilizados en este ejemplo -- en términos de los valores de y
los valores de female
¿ y así sucesivamente?
Hay muchos posts aquí sobre fallos en la convergencia cuando se usa lmer()
. Son útiles, pero por lo general hacen hincapié en las estrategias de programación -utilizar un optimizador diferente, etc.- más que en la intuición que hay detrás de esas estrategias. -- más que en la intuición que hay detrás de esas estrategias. Algunos posts son útiles para desarrollar la intuición: por ejemplo, Advertencia "El modelo no converge" en lmer() y este post que no es de StackExchange . Pero me temo que ni siquiera esos posts me ayudan a entender el problema anterior. No he encontrado ninguna fuente que trabaje con ejemplos numéricos sencillos como éste.