2 votos

modelización multinivel con lmer(): comprensión de la falta de convergencia en un ejemplo de juguete

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.

4voto

Maran Puntos 2283

Basándose en la respuesta de @Emma Jean, su marco de datos creado no es multinivel en el sentido de que la persona (la variable de agrupación) y la mujer están en el mismo nivel. Para que sus datos se adapten a una pendiente aleatoria, tendría que medir una variable que variara en persona. Puede ser cualquier cosa -el estado de ánimo o el cortisol o la calderilla- siempre que se mida repetidamente. Así, aunque mida a cada una de sus personas en múltiples ocasiones, la persona Alice siempre tiene un valor de 1 en mujer, Bob siempre tiene un 0, Catherine siempre tiene 1 y David siempre un 0. En un modelo multinivel con tales datos, puede modelar la asociación entre mujer y la intersección y de cada persona (esencialmente una media de sus tres valores y observados). A continuación se muestra su código con la adición de una variable variable en el tiempo (estado de ánimo):

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,
  mood = c(4.5, 3.5, 4, 2.1, 3, 3.5, 1.6, 2.8, 4.3, 4.6, 4.2, 3.9))

Si se observa el marco de datos, se verá que el estado de ánimo varía dentro de las personas, por lo que varía en el tiempo. En el marco multinivel, estas variables que varían en el tiempo pueden investigarse como si tuvieran asociaciones con el resultado que pueden variar entre grupos (es decir, personas). No creé la variable de estado de ánimo con una consideración cuidadosa de la construcción de tales asociaciones únicas, y no es de extrañar que no se encontrara ninguna y que obtuviera advertencias de convergencia al tratar de estimar la pendiente aleatoria para el estado de ánimo.

Otra característica importante de las variables que varían en el tiempo, es que se pueden calcular estadísticas de resumen sobre ellas que luego se convierten en variables a nivel de grupo (persona). Así ocurre con el estado de ánimo variable en el tiempo:

myDF$pmn.mood <- with(myDF, ave(mood, person, FUN=mean))
str(myDF)
'data.frame':   12 obs. of  5 variables:
 $ y       : int  1 2 3 4 5 6 10 11 12 1 ...
 $ person  : Factor w/ 4 levels "Alice","Bob",..: 1 1 1 2 2 2 3 3 3 4 ...
 $ female  : int  1 1 1 0 0 0 1 1 1 0 ...
 $ mood    : num  4.5 3.5 4 2.1 3 3.5 1.6 2.8 4.3 4.6 ...
 $ pmn.mood: num  4 4 4 2.87 2.87 ...

Estas variables de resumen pueden incluirse, junto con su análogo variable en el tiempo, en su modelo multinivel como un predictor a nivel de persona del intercepto aleatorio:

m2 <- lmer(y ~ female + mood + pmn.mood + (1 | person), data = myDF) 
Linear mixed model fit by REML ['lmerMod']
Formula: y ~ female + mood + pmn.mood + (1 | person)
   Data: myDF

REML criterion at convergence: 32.6

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-1.36975 -0.36411  0.08105  0.39417  1.26723 

Random effects:
 Groups   Name        Variance Std.Dev.
 person   (Intercept) 12.8519  3.5850  
 Residual              0.9209  0.9596  
Number of obs: 12, groups:  person, 4

Fixed effects:
            Estimate Std. Error t value
(Intercept)  19.6480    10.6931   1.837
female        2.5451     3.6393   0.699
mood          0.5357     0.4125   1.299
pmn.mood     -5.0845     2.9531  -1.722

Correlation of Fixed Effects:
         (Intr) female mood  
female   -0.247              
mood      0.000  0.000       
pmn.mood -0.961  0.080 -0.140

Si calculara una media de la persona para la mujer, el valor de la variable media de la persona sería el mismo que su valor en la mujer y no sería admisible como predictor en un modelo que también tuviera la mujer.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X