¿Cómo elegir la estructura de efectos aleatorios y fijos en modelos lineales mixtos?

19

Considere los siguientes datos de un diseño bidireccional dentro de los sujetos:

df <- "http://personality-project.org/r/datasets/R.appendix4.data"
df <- read.table(df,header=T)
head(df)

Observation Subject Task Valence Recall
1           1     Jim Free     Neg      8
2           2     Jim Free     Neu      9
3           3     Jim Free     Pos      5
4           4     Jim Cued     Neg      7
5           5     Jim Cued     Neu      9
6           6     Jim Cued     Pos     10

Me gustaría analizar esto usando modelos lineales mixtos. Considerando todos los posibles efectos fijos y aleatorios, existen múltiples modelos posibles:

# different fixed effects with random-intercept
a0 <- lmer(Recall~1 + (1|Subject), REML=F,df)
a1 <- lmer(Recall~Task + (1|Subject), REML=F,df)
a2 <- lmer(Recall~Valence + (1|Subject), REML=F,df)
a3 <- lmer(Recall~Task+Valence + (1|Subject), REML=F,df)
a4 <- lmer(Recall~Task*Valence + (1|Subject), REML=F,df)

# different fixed effects with random-intercept-random-slope
b0 <- lmer(Recall~1 + (1|Subject) + (0+Task|Subject) + (0+Valence|Subject), REML=F,df)
b1 <- lmer(Recall~Task + (1|Subject) + (0+Task|Subject) + (0+Valence|Subject), REML=F,df)
b2 <- lmer(Recall~Valence + (1|Subject) + (0+Task|Subject) + (0+Valence|Subject), REML=F,df)
b3 <- lmer(Recall~Task+Valence + (1|Subject) + (0+Task|Subject) + (0+Valence|Subject), REML=F,df)
b4 <- lmer(Recall~Task*Valence + (1|Subject) + (0+Task|Subject) + (0+Valence|Subject), REML=F,df)

# different fixed effects with random-intercept-random-slope including variance-covariance matrix
c0 <- lmer(Recall~1 + (1 + Valence + Task|Subject), REML=F,df)
c1 <- lmer(Recall~Task + (1 + Valence + Task|Subject), REML=F,df)
c2 <- lmer(Recall~Valence + (1 + Valence + Task|Subject), REML=F,df)
c3 <- lmer(Recall~Task+Valence + (1 + Valence + Task|Subject), REML=F,df)
c4 <- lmer(Recall~Task*Valence + (1 + Valence + Task|Subject), REML=F,df)
  1. ¿Cuál es la forma recomendada para seleccionar el mejor modelo de ajuste en este contexto? Cuando se utilizan pruebas de relación de probabilidad logarítmica, ¿cuál es el procedimiento recomendado? ¿Generando modelos hacia arriba (del modelo nulo al modelo más complejo) o hacia abajo (del modelo más complejo al modelo nulo)? ¿Inclusión o exclusión gradual? ¿O se recomienda poner todos los modelos en una prueba de relación de probabilidad logarítmica y seleccionar el modelo con el valor p más bajo? ¿Cómo comparar modelos que no están anidados?

  2. ¿Se recomienda encontrar primero la estructura de efectos fijos adecuada y luego la estructura de efectos aleatorios adecuada o al revés (he encontrado referencias para ambas opciones ...)?

  3. ¿Cuál es la forma recomendada de informar los resultados? Informe del valor p de la prueba de razón de probabilidad logarítmica que compara el modelo mixto completo (con el efecto en cuestión) con el modelo reducido (sin el efecto en cuestión). ¿O es mejor usar la prueba de relación de probabilidad logarítmica para encontrar el mejor modelo de ajuste y luego usar lmerTest para informar los valores p de los efectos en el modelo de mejor ajuste?

jokel
fuente

Respuestas:

18

No estoy seguro de que realmente haya una respuesta canónica a esto, pero lo intentaré.

¿Cuál es la forma recomendada para seleccionar el mejor modelo de ajuste en este contexto? Cuando se utilizan pruebas de relación de probabilidad logarítmica, ¿cuál es el procedimiento recomendado? ¿Generando modelos hacia arriba (del modelo nulo al modelo más complejo) o hacia abajo (del modelo más complejo al modelo nulo)? ¿Inclusión o exclusión gradual? ¿O se recomienda poner todos los modelos en una prueba de relación de probabilidad logarítmica y seleccionar el modelo con el valor p más bajo? ¿Cómo comparar modelos que no están anidados?

Depende de cuáles son tus objetivos.

  • En general, usted debe ser muy , muy cuidadoso con la selección del modelo (véase, por ejemplo esta respuesta , o este post , o simplemente "paso a paso Harrell" Google ...).
  • Si está interesado en que su p-valores sean significativos (es decir, que están haciendo la prueba de hipótesis de confirmación), usted debe no hacer la selección del modelo. Sin embargo : no es tan claro para mí si los procedimientos de selección del modelo son tan malos si está haciendo la selección del modelo en partes no focales del modelo , por ejemplo, haciendo la selección del modelo en los efectos aleatorios si su interés principal es la inferencia en los efectos fijos.
  • No existe tal cosa como "poner todos los modelos en una prueba de razón de probabilidad": la prueba de razón de probabilidad es un procedimiento por pares. Si quisiera hacer una selección de modelo (p. Ej.) Sobre los efectos aleatorios, probablemente recomendaría un enfoque "todo a la vez" utilizando criterios de información como en este ejemplo , que al menos evita algunos de los problemas de los enfoques escalonados (pero no de selección del modelo en general).
  • Barr y col. 2013 "Keep it maximal" Journal of Memory and Language (doi: 10.1016 / j.jml.2012.11.001) recomendaría usar el modelo máximo (solo).
  • Shravan Vasishth no está de acuerdo , argumentando que tales modelos tendrán poca potencia y, por lo tanto, serán problemáticos a menos que el conjunto de datos sea muy grande (y la relación señal / ruido sea alta)
  • Otro enfoque razonablemente defendible es ajustar un modelo grande pero razonable y luego, si el ajuste es singular, eliminar los términos hasta que ya no sea más
  • Con algunas advertencias (enumeradas en las preguntas frecuentes de GLMM ), puede utilizar criterios de información para comparar modelos no anidados con diferentes efectos aleatorios (aunque Brian Ripley no está de acuerdo: consulte la parte inferior de la página 6 aquí )

¿Se recomienda encontrar primero la estructura de efectos fijos adecuada y luego la estructura de efectos aleatorios adecuada o al revés (he encontrado referencias para ambas opciones ...)?

No creo que nadie lo sepa. Vea la respuesta anterior sobre la selección del modelo de manera más general. Si pudieras definir tus objetivos con suficiente claridad (lo que pocas personas hacen), la pregunta podría responderse. Si tiene referencias para ambas opciones, sería útil editar su pregunta para incluirlas ... (Para lo que vale, este ejemplo (ya citado anteriormente) utiliza criterios de información para seleccionar la parte de efectos aleatorios, luego evita la selección en el parte de efecto fijo del modelo.

¿Cuál es la forma recomendada de informar los resultados? Informe del valor p de la prueba de razón de probabilidad logarítmica que compara el modelo mixto completo (con el efecto en cuestión) con el modelo reducido (sin el efecto en cuestión). ¿O es mejor usar la prueba de relación de probabilidad logarítmica para encontrar el mejor modelo de ajuste y luego usar lmerTest para informar los valores p de los efectos en el modelo de mejor ajuste?

Esta es (por desgracia) otra pregunta difícil. Si informa de los efectos marginales según ha informado lmerTest, usted tiene que preocuparse por la marginalidad (por ejemplo, si las estimaciones de los principales efectos de Ay Btienen sentido cuando hay un A-by- Binteracción en el modelo); Esta es una gran lata de gusanos, pero se mitiga un poco si se utiliza contrasts="sum"según lo recomendado por afex::mixed(). Los diseños equilibrados también ayudan un poco. Si realmente desea eliminar todas estas grietas, creo que lo recomendaría afex::mixed, lo que le da una salida similar lmerTest, pero trata de resolver estos problemas.

Ben Bolker
fuente
12

Actualización de mayo de 2017 : Resulta que gran parte de lo que he escrito aquí es un poco injusto . Algunas actualizaciones se realizan a lo largo de la publicación.


Estoy de acuerdo con lo que ya ha dicho Ben Bolker (gracias por el agradecimiento afex::mixed()), pero permítanme agregar algunas ideas más generales y específicas sobre este tema.

Concéntrese en los efectos fijos versus aleatorios y cómo informar los resultados.

Para el tipo de investigación experimental que se representa en el conjunto de datos de ejemplo de Jonathan Baron, la pregunta importante es si un factor manipulado tiene o no un efecto general. Por ejemplo, ¿encontramos un efecto principal general o interacción de Task? Un punto importante es que en esos conjuntos de datos generalmente todos los factores están bajo control experimental completo y asignados aleatoriamente. En consecuencia, el foco de interés suele estar en los efectos fijos.
En contraste, los componentes de efectos aleatorios pueden verse como parámetros "molestos" que capturan la variación sistemática (es decir, las diferencias entre individuos en el tamaño del efecto) que no son necesariamente importantes para la pregunta principal. Desde este punto de vista, la sugerencia de utilizar la estructura máxima de efectos aleatorios como lo recomiendan Barr et al. Sigue algo natural. Es fácil imaginar que una manipulación experimental no afecta a todas las personas exactamente de la misma manera y queremos controlar esto. Por otro lado, el número de factores o niveles generalmente no es demasiado grande, por lo que el peligro de sobreajuste parece relativamente pequeño.

En consecuencia, seguiría la sugerencia de Barr et al. y especificar una estructura máxima de efectos aleatorios e informar las pruebas de los efectos fijos como mis resultados principales. Para probar los efectos fijos, también sugeriría usarlo, afex::mixed()ya que informa las pruebas de efectos o factores (en lugar de la prueba de parámetros) y calcula esas pruebas de una manera bastante sensata (por ejemplo, usa la misma estructura de efectos aleatorios para todos los modelos en los que se elimina el efecto único, utiliza contrastes de suma a cero, ofrece diferentes métodos para calcular los valores p , ...).

¿Qué pasa con los datos de ejemplo?

El problema con los datos de ejemplo que proporcionó es que para este conjunto de datos, la estructura de efectos aleatorios máximos conduce a un modelo sobresaturado ya que solo hay un punto de datos por celda del diseño:

> with(df, table(Valence, Subject, Task))
, , Task = Cued

       Subject
Valence Faye Jason Jim Ron Victor
    Neg    1     1   1   1      1
    Neu    1     1   1   1      1
    Pos    1     1   1   1      1

, , Task = Free

       Subject
Valence Faye Jason Jim Ron Victor
    Neg    1     1   1   1      1
    Neu    1     1   1   1      1
    Pos    1     1   1   1      1

En consecuencia, se lmerahoga en la estructura máxima de efectos aleatorios:

> lmer(Recall~Task*Valence + (Valence*Task|Subject), df)
Error: number of observations (=30) <= number of random effects (=30) for term
(Valence * Task | Subject); the random-effects parameters and the residual variance
(or scale parameter) are probably unidentifiable

Lamentablemente, que yo sepa, no hay una forma acordada para tratar este problema. Pero déjame esbozar y discutir algunos:

  1. Una primera solución podría ser eliminar la pendiente aleatoria más alta y probar los efectos para este modelo:

    require(afex)
    mixed(Recall~Task*Valence + (Valence+Task|Subject), df)
            Effect    F ndf  ddf F.scaling p.value
    1         Task 6.56   1 4.00      1.00     .06
    2      Valence 0.80   2 3.00      0.75     .53
    3 Task:Valence 0.42   2 8.00      1.00     .67
    

    Sin embargo, esta solución es un poco ad-hoc y no está demasiado motivada.

    Actualización de mayo de 2017: este es el enfoque que estoy respaldando actualmente. Consulte esta publicación de blog y el borrador del capítulo del que soy coautor , sección "Estructuras de efectos aleatorios para diseños ANOVA tradicionales".

  2. Una solución alternativa (y que podría verse como defendida por la discusión de Barr et al.) Podría ser eliminar siempre las pendientes aleatorias para obtener el menor efecto. Sin embargo, esto tiene dos problemas: (1) ¿Qué estructura de efectos aleatorios utilizamos para averiguar cuál es el efecto más pequeño y (2) R es reacio a eliminar un efecto de orden inferior, como un efecto principal, si los efectos de orden superior, como un La interacción de este efecto está presente (ver aquí ). Como consecuencia, uno necesitaría configurar esta estructura de efectos aleatorios a mano y pasar la matriz del modelo así construida a la llamada anterior.

  3. Una tercera solución podría ser utilizar una parametrización alternativa de la parte de efectos aleatorios, es decir, una que corresponda al modelo RM-ANOVA para estos datos. Desafortunadamente (?), lmerNo permite "variaciones negativas", por lo que esta parametrización no se corresponde exactamente con el ANOVA-RM para todos los conjuntos de datos , consulte la discusión aquí y en otros lugares (por ejemplo, aquí y aquí ). El "lmer-ANOVA" para estos datos sería:

    > mixed(Recall~Task*Valence + (1|Subject) + (1|Task:Subject) + (1|Valence:Subject), df)
            Effect    F ndf  ddf F.scaling p.value
    1         Task 7.35   1 4.00      1.00     .05
    2      Valence 1.46   2 8.00      1.00     .29
    3 Task:Valence 0.29   2 8.00      1.00     .76

Dados todos estos problemas, simplemente no los usaría lmerpara ajustar conjuntos de datos para los que solo hay un punto de datos por celda del diseño a menos que esté disponible una solución más acordada para el problema de la estructura de efectos aleatorios máximos.

  1. En cambio, yo también podría usar el clásico ANOVA. Usar uno de los envoltorios para car::Anova()en afexlos resultados sería:

    > aov4(Recall~Task*Valence + (Valence*Task|Subject), df)
            Effect         df  MSE      F  ges   p
    1      Valence 1.44, 5.75 4.67   1.46  .02 .29
    2         Task       1, 4 4.08 7.35 +  .07 .05
    3 Valence:Task 1.63, 6.52 2.96   0.29 .003 .71

    Tenga en cuenta que afexahora también permite devolver el modelo con el aovque se puede pasar lsmeanspara las pruebas post-hoc (pero para la prueba de efectos, los que informan car::Anovason aún más razonables):

    > require(lsmeans)
    > m <- aov4(Recall~Task*Valence + (Valence*Task|Subject), df, return = "aov")
    > lsmeans(m, ~Task+Valence)
     Task Valence lsmean       SE   df lower.CL upper.CL
     Cued Neg       11.8 1.852026 5.52  7.17157 16.42843
     Free Neg       10.2 1.852026 5.52  5.57157 14.82843
     Cued Neu       13.0 1.852026 5.52  8.37157 17.62843
     Free Neu       11.2 1.852026 5.52  6.57157 15.82843
     Cued Pos       13.6 1.852026 5.52  8.97157 18.22843
     Free Pos       11.0 1.852026 5.52  6.37157 15.62843
    
    Confidence level used: 0.95 
Henrik
fuente
(+1) "Desafortunadamente, lmer no permite correlaciones negativas". ¿No debería ser esto "no permite variaciones negativas"? Además, vuelva a actualizar: ¿podría ser más explícito sobre qué es exactamente "incorrecto" en esta respuesta?
ameba dice Reinstate Monica
(Leí la publicación vinculada y parece que el mensaje principal es que el enfoque que figura aquí como # 1 es más kosher de lo que solía pensar. ¿Correcto? Todavía no está claro si ahora cree que es preferible a # 3 o # 4 )
ameba dice Reinstate Monica
@amoeba Sí, tienes razón. Era demasiado flojo para actualizar mi respuesta aquí en consecuencia.
Henrik
@amoeba Y también tienes razón en las correlaciones. lmerno permite variaciones negativas pero obviamente correlaciones negativas entre los componentes de la varianza.
Henrik
1
Hice algunas ediciones, es posible que desee asegurarse de no haberlo representado mal.
ameba dice Reinstate Monica