8 votos

R lmerTest y pruebas de efectos aleatorios múltiples

Tengo curiosidad por saber cómo el paquete lmerTest en R, específicamente la función "rand", maneja las pruebas de efectos aleatorios. Considere el ejemplo del lmerTest pdf en CRAN que utiliza el conjunto de datos incorporado de las "zanahorias":

#import lme4 package and lmerTest package
  library(lmerTest)
#lmer model with correlation between intercept and slopes
#in the random part
  m <- lmer(Preference ~ sens2+Homesize+(1+sens2|Consumer), data=carrots)
# table with p-values for the random effects
  rand(m)

El modelo especifica dos varianzas aleatorias (el intercepto y "sens2"), ambas anidadas en "Consumer", y la covarianza entre el intercepto y "sens2". La salida (no proporcionada en el pdf) para los componentes aleatorios de la ejecución del lmer es la siguiente:

Random effects:
Groups   Name        Variance Std.Dev. Corr
Consumer (Intercept) 0.195168 0.44178      
         sens2       0.002779 0.05271  0.18
Residual             1.070441 1.03462      
Number of obs: 1233, groups:  Consumer, 103

Lo cual es de esperar dada la especificación del modelo. El resultado de la función rand es el siguiente:

Analysis of Random effects Table:
                 Chi.sq Chi.DF p.value  
sens2:Consumer   6.99      2    0.03 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Dada la tabla de efectos aleatorios, creo que lmerTest está evaluando la pendiente aleatoria para "sens2", pero también podría ser la covarianza entre la pendiente y el intercepto. La prueba para el intercepto aleatorio no está incluida. Estimé otro modelo con sólo la intercepción aleatoria (sin pendiente aleatoria o covarianza), y obtuve lo siguiente de la declaración "rand":

Analysis of Random effects Table:
           Chi.sq Chi.DF p.value    
Consumer   79.6      1  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

La prueba de la varianza aleatoria asociada al intercepto se proporciona aquí. Entonces, ¿alguien sabe lo que la prueba de los componentes de la varianza aleatoria del primer modelo está probando? ¿Hay alguna forma que no pueda ver en la documentación para probar los tres componentes aleatorios? Debo mencionar la página para la prueba rand en inside-R.org tiene la siguiente descripción confusa (que no veo en el pdf en CRAN):

Values
Produces a data frame with tests for the random terms being non-significant.

Note
If the effect has random slopes, then first the correlations between itercept [sic] and slopes are checked for significance

¿Es posible que la descripción de los "Valores" esté al revés y que sólo se informen los efectos significativos? He ejecutado el procedimiento de "paso" y no estaba claro si los tres componentes de la varianza aleatoria se consideraron en la ejecución.

Se agradece cualquier idea al respecto.

Joe

EDIT: La trama se complica un poco. Se me ocurrió comprobar una estructura de covarianza "diagonal" (sin covarianza entre el intercepto aleatorio y la pendiente) utilizando lo siguiente (basado en este excelente post ):

m2 <- lmer(Preference ~ sens2+Homesize+(1|Consumer)+(0+sens2|Consumer), data=carrots)

El resultado de lmer para las varianzas aleatorias, utilizando VarCorr, es el siguiente:

Groups     Name        Std.Dev.
Consumer   (Intercept) 0.441807
Consumer.1 sens2       0.052719
Residual               1.034618

Que omite correctamente la covarianza (correlación) entre la pendiente y el intercepto aleatorios. La ejecución de la función "rand" de lmerTest produce la siguiente salida:

Analysis of Random effects Table:
                 Chi.sq Chi.DF p.value    
Consumer         84.4      1  <2e-16 ***
sens2:Consumer    6.3      1    0.01 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Así que probará los dos componentes de la varianza para este modelo. Pero la pregunta sigue siendo sobre el primer modelo con la covarianza aleatoria. ¿Qué prueba lmerTest?

2voto

Tony Beans Puntos 31

La documentación sobre el lmerTest::rand() función es definitivamente tersa.

Por lo que he podido averiguar, yo piense en comprueba la hipótesis de que la variación del efecto aleatorio (es decir, un intercepto variable (1 | Consumer) ) es significativa frente a la nula de que no hay variación a nivel de grupo, $H_0 : \sigma_{\alpha}^2 = 0$ , donde $\alpha_{j[i]} \sim N(\mu_\alpha, \sigma_\alpha^2)$ para $j = 1, \ldots, J$ es el indicador de grupo. (Sigo la notación de Gelman y Hill (2007), véase el capítulo 12).


No soy un experto, así que el código me confundió un poco. En concreto, no tengo claro qué es lo que elimRandEffs pero supongo que está convirtiendo $\alpha_{j[i]}$ a un plazo fijo (es decir, mancomunado) $\alpha$ y luego compararlo con el modelo original. Esperemos que alguien con mayores conocimientos pueda aclararlo.

En el aspecto teórico, rand debe estar realizando algo parecido a la prueba propuesta en Lee y Braun 2012 . Sin embargo, a diferencia de su extensión a las pruebas $0<r \leq q$ efectos aleatorios a la vez (sección 3.2), el rand La salida parece probar sólo un efecto aleatorio a la vez. Un resumen más simple de la misma idea está en las diapositivas 10-12 encontradas aquí .


Así que tu intuición de que "lmerTest está evaluando la pendiente aleatoria para 'sens2' [y] podría ser también la covarianza entre la pendiente y el intercepto" es correcta en el sentido de que rand comprueba si las varianzas de los efectos aleatorios son significativamente diferentes de cero.

Pero es incorrecto decir que "no se incluye la prueba del intercepto aleatorio". El RE en su primera especificación:

 (1 + sens2 | Consumer) 

asume una correlación no nula entre el intercepto y la pendiente, lo que significa que varían juntos y así rand() prueba esa especificación frente a un modelo sin RE (es decir, reduciendo a la regresión clásica).

El segundo pliego de condiciones

 (1  | Consumer) + (0 + sens2 | Consumer) 

da dos líneas de salida porque los efectos aleatorios son aditivamente separables. Aquí rand comprueba (en la primera fila de resultados) un modelo con un intercepto fijo/agrupado con una pendiente aleatoria contra su especificación. En la 2ª fila, la prueba es contra una pendiente agrupada con un intercepto aleatorio. Así que, al igual que el step función, rand prueba a los ER independientes de uno en uno.

Todavía estoy desconcertado por la nota de inside-R.org que

  Note
  If the effect has random slopes, then first the correlations between itercept [sic] and slopes are checked for significance

Eso no está en la documentación del paquete, así que no sé de dónde salió ni dónde se encontraría esa prueba en la salida.

EDITAR

Creo que me equivoco con el modelo nulo en un modelo de pendiente/intercepto correlacionado como en la primera especificación. El step dice la documentación:

en la parte aleatoria si hay correlación entre la pendiente y el intercepción, el modelo simplificado contendrá sólo una intercepción. Es decir, si la parte aleatoria del modelo inicial es (1+c|f), entonces este modelo se compara con (1|f) utilizando la TRL.

Me imagino que el mismo principio funciona para rand .

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