Uso de lmer para el modelo lineal de efectos mixtos de medidas repetidas


41

EDIT 2: originalmente pensé que necesitaba ejecutar un ANOVA de dos factores con medidas repetidas en un factor, pero ahora creo que un modelo lineal de efectos mixtos funcionará mejor para mis datos. Creo que casi sé lo que debe suceder, pero todavía estoy confundido por algunos puntos.

Los experimentos que necesito analizar se ven así:

  • Los sujetos fueron asignados a uno de varios grupos de tratamiento.
  • Las mediciones de cada sujeto se tomaron en varios días.
  • Asi que:
    • El sujeto está anidado dentro del tratamiento.
    • El tratamiento se cruza con el día.

(a cada sujeto se le asigna un solo tratamiento y se toman medidas de cada sujeto cada día)

Mi conjunto de datos contiene la siguiente información:

  • Sujeto = factor de bloqueo (factor aleatorio)
  • Día = dentro del sujeto o factor de medidas repetidas (factor fijo)
  • Tratamiento = entre factor sujeto (factor fijo)
  • Obs = variable medida (dependiente)

ACTUALIZACIÓN OK, así que fui y hablé con un estadístico, pero él es un usuario de SAS. Él piensa que el modelo debería ser:

Tratamiento + Día + Sujeto (Tratamiento) + Día * Sujeto (Tratamiento)

Obviamente su notación es diferente de la sintaxis R, pero se supone que este modelo explica:

  • Tratamiento (fijo)
  • Día (fijo)
  • la interacción Tratamiento * Día
  • Sujeto anidado dentro del Tratamiento (aleatorio)
  • Día cruzado con "Sujeto dentro del tratamiento" (aleatorio)

Entonces, ¿es esta la sintaxis correcta para usar?

m4 <- lmer(Obs~Treatment*Day + (1+Treatment/Subject) + (1+Day*Treatment/Subject), mydata)

Me preocupa especialmente si el Día cruzado con la parte "Sujeto dentro del tratamiento" es correcto. ¿Alguien familiarizado con SAS o seguro de que comprende lo que está sucediendo en su modelo puede comentar si mi triste intento de sintaxis R coincide?

Aquí están mis intentos anteriores de construir un modelo y escribir sintaxis (discutido en respuestas y comentarios):

m1 <- lmer(Obs ~ Treatment * Day + (1 | Subject), mydata)

¿Cómo trato con el hecho de que el sujeto está anidado dentro del tratamiento? ¿Cómo m1difiere de:

m2 <- lmer(Obs ~ Treatment * Day + (Treatment|Subject), mydata)
m3 <- lmer(Obs ~ Treatment * Day + (Treatment:Subject), mydata)

y son m2y m3equivalentes (y si no, ¿por qué)?

Además, ¿necesito usar nlme en lugar de lme4 si quiero especificar la estructura de correlación (como correlation = corAR1)? Según las medidas repetidas , para un análisis de medidas repetidas con medidas repetidas en un factor, la estructura de covarianza (la naturaleza de las correlaciones entre las medidas del mismo sujeto) es importante.

Cuando intentaba hacer un ANOVA de medidas repetidas, decidí usar un SS Tipo II; ¿Sigue siendo relevante? Y si es así, ¿cómo hago para especificarlo?

Aquí hay un ejemplo de cómo se ven los datos:

mydata <- data.frame(
  Subject  = c(13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 
               34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 
               19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
               40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 
               29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65), 
  Day       = c(rep(c("Day1", "Day3", "Day6"), each=28)), 
  Treatment = c(rep(c("B", "A", "C", "B", "C", "A", "A", "B", "A", "C", "B", "C", 
                      "A", "A", "B", "A", "C", "B", "C", "A", "A"), each = 4)), 
  Obs       = c(6.472687, 7.017110, 6.200715, 6.613928, 6.829968, 7.387583, 7.367293, 
                8.018853, 7.527408, 6.746739, 7.296910, 6.983360, 6.816621, 6.571689, 
                5.911261, 6.954988, 7.624122, 7.669865, 7.676225, 7.263593, 7.704737, 
                7.328716, 7.295610, 5.964180, 6.880814, 6.926342, 6.926342, 7.562293, 
                6.677607, 7.023526, 6.441864, 7.020875, 7.478931, 7.495336, 7.427709, 
                7.633020, 7.382091, 7.359731, 7.285889, 7.496863, 6.632403, 6.171196, 
                6.306012, 7.253833, 7.594852, 6.915225, 7.220147, 7.298227, 7.573612, 
                7.366550, 7.560513, 7.289078, 7.287802, 7.155336, 7.394452, 7.465383, 
                6.976048, 7.222966, 6.584153, 7.013223, 7.569905, 7.459185, 7.504068, 
                7.801867, 7.598728, 7.475841, 7.511873, 7.518384, 6.618589, 5.854754, 
                6.125749, 6.962720, 7.540600, 7.379861, 7.344189, 7.362815, 7.805802, 
                7.764172, 7.789844, 7.616437, NA, NA, NA, NA))

Respuestas:


18

Creo que tu enfoque es correcto. El modelo m1especifica una intersección separada para cada sujeto. El modelo m2agrega una pendiente separada para cada sujeto. Su pendiente es de varios días ya que los sujetos solo participan en un grupo de tratamiento. Si escribe el modelo de la m2siguiente manera, es más obvio que modela una intersección y pendiente separadas para cada sujeto

m2 <- lmer(Obs ~ Treatment * Day + (1+Day|Subject), mydata)

Esto es equivalente a:

m2 <- lmer(Obs ~ Treatment + Day + Treatment:Day + (1+Day|Subject), mydata)

Es decir, los principales efectos del tratamiento, el día y la interacción entre los dos.

Creo que no debe preocuparse por anidar siempre que no repita las identificaciones de los sujetos dentro de los grupos de tratamiento. El modelo correcto es el que realmente depende de su pregunta de investigación. ¿Hay alguna razón para creer que las pendientes de los sujetos varían además del efecto del tratamiento? Puede ejecutar ambos modelos y compararlos anova(m1,m2)para ver si los datos son compatibles con cualquiera de ellos.

¿No estoy seguro de lo que quieres expresar con la modelo m3? La sintaxis de anidamiento utiliza a /, por ejemplo (1|group/subgroup).

No creo que deba preocuparse por la autocorrelación con un número tan pequeño de puntos de tiempo.


Esto no es correcto. El tratamiento es una variable de nivel 2, no se puede anidar dentro de los sujetos.
Patrick Coulombe

Acerca de la autocorrelación y el número de puntos temporales: solo muestro tres datos en este ejemplo, pero mis datos reales contienen observaciones en 8 días diferentes, por lo que creo que probablemente será un problema. ¿Alguna idea de cómo poner eso?
fosforilado

1
Además, ahora estoy bastante confundido acerca de la anidación; ¿Es (1 + Tratamiento | Sujeto) diferente de (1 + Tratamiento / Sujeto)? ¿Qué significa el "|" es decir, en inglés simple? No entiendo las explicaciones que he leído.
fosforilado

Hola. ¿Qué es aquí una "pendiente separada para cada sujeto"? porque sujeto es una variable de factor, no una variable continua.
skan

12

No me siento lo suficientemente cómodo para comentar sobre su problema de errores autocorrelacionados (ni sobre las diferentes implementaciones en lme4 vs. nlme), pero puedo hablar con el resto.

Su modelo m1es un modelo de intercepción aleatoria, donde ha incluido la interacción de niveles cruzados entre Tratamiento y Día (el efecto del Día puede variar entre los grupos de Tratamiento). Para permitir que el cambio en el tiempo difiera entre los participantes (es decir, para modelar explícitamente las diferencias individuales en el cambio a lo largo del tiempo), también debe permitir que el efecto del Día sea aleatorio . Para hacer esto, debería especificar:

m2 <- lmer(Obs ~ Day + Treatment + Day:Treatment + (Day | Subject), mydata)

En este modelo:

  • La intersección si la puntuación predicha para la categoría de referencia de tratamiento en el día = 0
  • El coeficiente para el día es el cambio previsto en el tiempo para cada aumento de 1 unidad en días para la categoría de referencia del tratamiento.
  • Los coeficientes para los dos códigos ficticios para los grupos de tratamiento (creados automáticamente por R) son la diferencia predicha entre cada grupo de tratamiento restante y la categoría de referencia en el día = 0
  • Los coeficientes para los dos términos de interacción son la diferencia en el efecto del tiempo (día) en las puntuaciones predichas entre la categoría de referencia y los grupos de tratamiento restantes.

Tanto las intersecciones como el efecto de Day en la puntuación son aleatorios (se permite que cada sujeto tenga una puntuación predicha diferente en Day = 0 y un cambio lineal diferente con el tiempo). La covarianza entre las intersecciones y las pendientes también se está modelando (se les permite covariar).

Como puede ver, la interpretación de los coeficientes para las dos variables ficticias está condicionada a Día = 0. Le dirán si la puntuación prevista en el día = 0 para la categoría de referencia es significativamente diferente de los dos grupos de tratamiento restantes. Por lo tanto, donde decida centrar su variable Día es importante. Si se centra en el día 1, los coeficientes le indican si la puntuación prevista para la categoría de referencia en el día 1 es significativamente diferente de la puntuación prevista de los dos grupos restantes. De esta manera, podría ver si hay diferencias preexistentes entre los grupos . Si se centra en el día 3, los coeficientes le indican si el puntaje predicho para la categoría de referencia en el día 3es significativamente diferente del puntaje predicho de los dos grupos restantes. De esta manera, podría ver si hay diferencias entre los grupos al final de la intervención .

Finalmente, tenga en cuenta que los Sujetos no están anidados dentro del Tratamiento. Sus tres tratamientos no son niveles aleatorios de una población de niveles a los que desea generalizar sus resultados, sino que, como mencionó, sus niveles son fijos y desea generalizar sus resultados solo a estos niveles. (Sin mencionar que no debe usar el modelado multinivel si solo tiene 3 unidades de nivel superior; consulte Maas y Hox, 2005). En cambio, el tratamiento es un predictor de nivel 2, es decir, un predictor que toma un solo valor a través de los días (unidades de nivel 1) para cada asignatura. Por lo tanto, se incluye simplemente como un predictor en su modelo.

Referencia:
Maas, CJM y Hox, JJ (2005). Tamaños de muestra suficientes para el modelado multinivel. Metodología: European Journal of Research Methods for the Behavioral and Social Sciences , 1 , 86-92.


1
No es estimable por lmer porque el número de efectos aleatorios obs <= number y la varianza residual probablemente no sean identificables.
Shuguang

La estructura de la fórmula en la respuesta es correcta. Para anular el error mencionado por @Shuguang, deberá agregarlo ...,control=lmerControl(check.nobs.vs.nRE="ignore"). consulte este enlace para obtener más explicaciones de Ben Bolker.
NiuBiBang

Buenas explicaciones. ¿Podría explicar un poco más por qué "Los sujetos no están anidados en el Tratamiento" y por qué no crea un término de error + (Tratamiento | Asunto) y por qué no solo (1 | Asunto) o incluso (1 | Tratamiento * Día )?
skan

Técnicamente, podría anidar sujetos dentro del tratamiento, sin embargo, si el predictor es el mismo sin importar cuántas veces haya realizado el experimento, debería ser un efecto fijo (no aleatorio). Los factores que serían diferentes cada vez que realizara el experimento, como las características individuales del sujeto, por ejemplo, su valor inicial o su respuesta idiosincrásica a los cambios en el tratamiento a lo largo del tiempo, son efectos aleatorios. (1 + Day|Subject)significa un modelo de pendientes aleatorias, que permite que el valor inicial de cada sujeto (Intercepción) y la tasa de cambio en el resultado sean diferentes.
llewmills
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.