He realizado un ANOVA de medidas repetidas de tres vías; ¿Qué análisis post-hoc son válidos?
Este es un diseño totalmente equilibrado (2x2x2) con uno de los factores que tiene una medida repetida dentro de los sujetos. Soy consciente de los enfoques multivariados para ANOVA de medidas repetidas en R, pero mi primer instinto es proceder con un estilo simple de aov () de ANOVA:
aov.repeated <- aov(DV ~ IV1 * IV2 * Time + Error(Subject/Time), data=data)
DV = variable de respuesta
IV1 = variable independiente 1 (2 niveles, A o B)
IV2 = variable independiente 2 (2 niveles, sí o no)
IV3 = Tiempo (2 niveles, antes o después)
Asunto = ID de sujeto (40 sujetos totales, 20 para cada nivel de IV1: nA = 20, nB = 20)
summary(aov.repeated)
Error: Subject
Df Sum Sq Mean Sq F value Pr(>F)
IV1 1 5969 5968.5 4.1302 0.049553 *
IV2 1 3445 3445.3 2.3842 0.131318
IV1:IV2 1 11400 11400.3 7.8890 0.007987 **
Residuals 36 52023 1445.1
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Error: Subject:Time
Df Sum Sq Mean Sq F value Pr(>F)
Time 1 149 148.5 0.1489 0.701906
IV1:Time 1 865 864.6 0.8666 0.358103
IV2:Time 1 10013 10012.8 10.0357 0.003125 **
IV1:IV2:Time 1 852 851.5 0.8535 0.361728
Residuals 36 35918 997.7
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Alternativamente, estaba pensando en usar el paquete nlme para un ANOVA de estilo lme:
aov.repeated2 <- lme(DV ~ IV1 * IV2 * Time, random = ~1|Subject/Time, data=data)
summary(aov.repeated2)
Fixed effects: DV ~ IV1 * IV2 * Time
Value Std.Error DF t-value p-value
(Intercept) 99.2 11.05173 36 8.975972 0.0000
IV1 19.7 15.62950 36 1.260437 0.2156
IV2 65.9 15.62950 36 4.216385 0.0002 ***
Time 38.2 14.12603 36 2.704228 0.0104 *
IV1:IV2 -60.8 22.10346 36 -2.750701 0.0092 **
IV1:Time -26.2 19.97722 36 -1.311494 0.1980
IV2:Time -57.8 19.97722 36 -2.893295 0.0064 **
IV1:IV2:Time 26.1 28.25206 36 0.923826 0.3617
Mi primer instinto post-hoc de interacciones significativas de 2 vías con contrastes de Tukey usando glht () del paquete multcomp:
data$IV1IV2int <- interaction(data$IV1, data$IV2)
data$IV2Timeint <- interaction(data$IV2, data$Time)
aov.IV1IV2int <- lme(DV ~ IV1IV2int, random = ~1|Subject/Time, data=data)
aov.IV2Timeint <- lme(DV ~ IV2Timeint, random = ~1|Subject/Time, data=data)
IV1IV2int.posthoc <- summary(glht(aov.IV1IV2int, linfct = mcp(IV1IV2int = "Tukey")))
IV2Timeint.posthoc <- summary(glht(aov.IV2Timeint, linfct = mcp(IV2Timeint = "Tukey")))
IV1IV2int.posthoc
#A.Yes - B.Yes == 0 0.94684
#B.No - B.Yes == 0 0.01095 *
#A.No - B.Yes == 0 0.98587 I don't care about this
#B.No - A.Yes == 0 0.05574 . I don't care about this
#A.No - A.Yes == 0 0.80785
#A.No - B.No == 0 0.00346 **
IV2Timeint.posthoc
#No.After - Yes.After == 0 0.0142 *
#Yes.Before - Yes.After == 0 0.0558 .
#No.Before - Yes.After == 0 0.5358 I don't care about this
#Yes.Before - No.After == 0 0.8144 I don't care about this
#No.Before - No.After == 0 0.1941
#No.Before - Yes.Before == 0 0.8616
El principal problema que veo con estos análisis post-hoc son algunas comparaciones que no son útiles para mis hipótesis.
Cualquier sugerencia para un análisis post-hoc apropiado es muy apreciada, gracias.
Editar: preguntas y respuestas relevantes que apuntan a probar matrices de contraste manuales
Error
término de aov()
esta manera para especificar que Time
es el factor dentro de los grupos. De Baron Error(subj/(color + shape))
parece ser utilizado de la misma manera.
lme
modelo, no tengo claro el uso adecuado de /
. ¿Cómo especificarías Time
como el factor dentro de los grupos como Error()
con aov()
?
/
se usa para denotar la anidación (como se ve típicamente en un experimento de parcela dividida), a diferencia de su uso en elError
término deaov()
donde principalmente indica cómo construir estratos de error .