ANOVA de medidas repetidas con lme / lmer en R para dos factores dentro del sujeto

19

Estoy tratando de usar lmeel nlmepaquete para replicar resultados de aovANOVA de medidas repetidas. He hecho esto para un experimento de medidas repetidas de un solo factor y para un experimento de dos factores con un factor entre sujetos y un factor dentro de los sujetos, pero tengo problemas para hacerlo para un experimento de dos factores con dos dentro -factores de los sujetos.

Un ejemplo se muestra a continuación. Ay Bson factores de efecto fijo y subjectes un factor de efecto aleatorio.

set.seed(1)
d <- data.frame(
    Y = rnorm(48),
    subject = factor(rep(1:12, 4)),
    A = factor(rep(1:2, each=24)),
    B = factor(rep(rep(1:2, each=12), 2)))

summary(aov(Y ~ A*B + Error(subject/(A*B)), data=d))  # Standard repeated measures ANOVA

library(nlme)
# Attempts:
anova(lme(Y ~ A*B, data=d, random = ~ 1 | subject))  # not same as above
anova(lme(Y ~ A*B, data=d, random = ~ 1 | subject/(A+B)))  # gives error

No pude ver una explicación de esto en el libro de Pinheiro y Bates, pero puedo haberlo pasado por alto.

mark999
fuente

Respuestas:

15

Lo que usted está ajustada con el aovque se denomina una trama tira, y es difícil de encajar con lmeporque los subject:Ay subject:Bde efectos aleatorios se cruzan.

Su primer intento es equivalente a aov(Y ~ A*B + Error(subject), data=d), que no incluye todos los efectos aleatorios; su segundo intento es la idea correcta, pero la sintaxis de los efectos aleatorios cruzados con lme es muy complicada.

Usando lmedesde el nlmepaquete, el código sería

lme(Y ~ A*B, random=list(subject=pdBlocked(list(~1, pdIdent(~A-1), pdIdent(~B-1)))), data=d)

Usando lmerdesde el lme4paquete, el código sería algo así como

lmer(Y ~ A*B + (1|subject) + (1|A:subject) + (1|B:subject), data=d)    

Estos hilos de R-help pueden ser útiles (y para dar crédito, de ahí es de donde obtuve el nlmecódigo).

http://www.biostat.wustl.edu/archives/html/s-news/2005-01/msg00091.html

http://permalink.gmane.org/gmane.comp.lang.r.lme4.devel/3328

http://www.mail-archive.com/[email protected]/msg10843.html

Este último enlace se refiere a la p.165 de Pinheiro / Bates; eso también puede ser útil.

EDITAR: también tenga en cuenta que en el conjunto de datos que tiene, algunos de los componentes de varianza son negativos, lo que no está permitido usar efectos aleatorios con lme, por lo que los resultados difieren. Se puede crear un conjunto de datos con todos los componentes de la varianza positiva utilizando una semilla de 8. Los resultados entonces están de acuerdo. Ver esta respuesta para más detalles.

También tenga en cuenta que lmefrom nlmeno calcula los grados de libertad del denominador correctamente, por lo que las estadísticas F están de acuerdo pero no los valores p, y lmerfrom lme4no lo intenta también porque es muy complicado en presencia de efectos aleatorios cruzados desequilibrados, y puede que no incluso ser una cosa sensata que hacer. Pero eso es más de lo que quiero entrar aquí.

Aaron - Restablece a Monica
fuente
Aaron, no creo que tu código sea correcto. La aovllamada de OP es simplemente un diseño estándar de medidas repetidas, que se analizaría con lmer as lmer(Y~A*B+(1|subject)). (Sin embargo, consulte también esta respuesta para modelos más complicados que permiten estimar la varianza y las correlaciones del efecto cross -Ss: stats.stackexchange.com/questions/13166/rs-lmer-cheat-sheet/… )
Mike Lawrence
44
La llamada aov del OP tiene tres efectos aleatorios; replicar eso con lmermi código anterior es correcto. Su lmercódigo solo tiene un efecto aleatorio. Lo que sea correcto dependerá del contexto.
Aaron - Restablece a Mónica el
También tenga en cuenta que la respuesta a la que se vinculó no tiene ejemplos de efectos aleatorios cruzados.
Aaron - Restablece a Mónica el
6

Su primer intento es la respuesta correcta si eso es todo lo que está tratando de hacer. nlme () resuelve los componentes entre y dentro de ellos, no necesita especificarlos.

El problema con el que te encuentras no es porque no sabes cómo especificar el modelo, es porque las medidas repetidas ANOVA y los efectos mixtos no son lo mismo. Algunas veces los resultados del modelo ANOVA y de efectos mixtos coincidirán. Este es especialmente el caso cuando agrega sus datos como lo haría para un ANOVA y calcula ambos a partir de eso. Pero, en general, cuando se hace correctamente, aunque las conclusiones pueden ser similares, los resultados casi nunca son los mismos. Sus datos de ejemplo no son como medidas reales repetidas donde a menudo tiene réplicas de cada medida dentro de S. Cuando realiza un ANOVA, generalmente se agrega a través de esas réplicas para obtener una estimación del efecto para cada sujeto. En el modelado de efectos mixtos no haces tal cosa. Trabajas con los datos en bruto. Cuando haces eso, tú

[como un aparte, usando lmer () (del paquete lme4) en lugar de lme (), dame valores SS y MS que coinciden exactamente con el ANOVA para los efectos en tu ejemplo, es solo que las F son diferentes]

John
fuente
1
Creo que si todo está equilibrado, el resultado utilizando un modelo mixto (es decir, obtener estimaciones con ML o REML) y el resultado utilizando un ANOVA (es decir, obtener estimaciones con momentos) será casi idéntico. El problema en este caso es la sintaxis para que el mismo modelo se ajuste usando ambos métodos.
Aaron - Restablece a Mónica el
No estoy seguro de lo que estás tratando de lograr. Parecía que solo intentabas aprender a replicar resultados para comprender mejor la relación. Lo que quieres hacer no se puede hacer con nlme. Acabo de mirar lmer y tampoco es posible allí (aunque al menos informa la MS de sus efectos de forma idéntica al ANOVA). Si desea resultados ANOVA, simplemente haga un ANOVA. Con datos reales, hechos correctamente, los dos casi nunca son exactamente iguales.
John
1
También tenga en cuenta que el primer intento no es correcto porque no tiene en cuenta adecuadamente los efectos aleatorios cruzados.
Aaron - Restablece a Mónica el
1
John, gracias por tu respuesta. Mi razón para hacer esto fue que leí en alguna parte de este sitio que generalmente no se recomienda ANOVA de medidas repetidas, prefiriéndose los modelos de efectos mixtos. Por alguna razón, tenía la impresión de que los dos métodos darían los mismos resultados para un diseño equilibrado, y estaba tratando de confirmarlo.
mark999
Aaron, lo tomé como la respuesta correcta a lo que se consideraría más o menos equivalente. Por lo general, es lo que se recomienda como primer paso para replicar medidas repetidas. No hay "correcto" como en la combinación perfecta. Agregar más efectos aleatorios no resolverá el problema. Observo que una de las respuestas a las que se refiere recomienda la solución que escribió. Sin embargo, ese no es un resultado ANOVA (el modelo es diferente pero no ANOVA) de lo que dije que era correcto. Sospecho que el autor estaba tratando de igualar lo que pedía el OP, pero no es un modelo razonable.
John