Prueba post hoc después de ANOVA con medidas repetidas utilizando R


24

He realizado un ANOVA de medidas repetidas en R, de la siguiente manera:

aov_velocity = aov(Velocity ~ Material + Error(Subject/(Material)), data=scrd)
summary(aov_velocity)
  • ¿Qué sintaxis en R puede usarse para realizar una prueba post hoc después de un ANOVA con medidas repetidas?
  • ¿Sería apropiada la prueba de Tukey con corrección de Bonferroni? Si es así, ¿cómo podría hacerse esto en R?

1
vea esta pregunta relacionada sobre pruebas post hoc para diseños de medidas repetidas stats.stackexchange.com/questions/575/…
Jeromy Anglim

3
Acerca de su segundo punto: el HSD de Tukey ya incluye una "corrección" para la multiplicidad (al nivel de la estadística de prueba, no al nivel alfa como en el método de Bonferroni). Por lo tanto, no hay necesidad de combinar ambos.
chl

1
@chl: ¿entonces no necesitamos corregir el nivel alfa durante las comparaciones múltiples por pares en el caso de HSD de Tukey?
Stan

3
@stan No. (Nota: las pruebas no planificadas (post-hoc) deben realizarse después de que el ANOVA mostró un resultado significativo, especialmente si se trata de un enfoque confirmatorio.)
chl

Respuestas:


20

Lo que podría hacer es especificar el modelo lmey luego usarlo glhtdesde el multcomppaquete para hacer lo que quiera. Sin embargo, lme proporciona valores F ligeramente diferentes que un ANOVA estándar (consulte también mis preguntas recientes aquí ).

lme_velocity = lme(Velocity ~ Material, data=scrd, random = ~1|Subject)
anova(lme_velocity)

require(multcomp)
summary(glht(lme_velocity, linfct=mcp(Material = "Tukey")), test = adjusted(type = "bonferroni"))

Para otros contrastes luego de bonferroni, ver, por ejemplo, el libro multcompde los autores del paquete .

También es posible que desee ver esta entrada en la lista de R-correo , y esta entrada del blog para especificar un ANOVA de medidas repetidas en I .

Sin embargo, como se muestra en esta pregunta, no estoy seguro de si este enfoque es idéntico a un ANOVA. Además, glht solo informa valores z en lugar de los valores t o F habituales . Esto también parece ser poco común.

Hasta ahora, no he encontrado otra forma de hacer esto.


2

Si desea seguir con la aov()función, puede usar el emmeanspaquete que puede manejar aovlist(y muchos otros ) objetos.

library("emmeans")
# set orthogonal contrasts
options(contrasts = c("contr.sum", "contr.poly"))

aov_velocity <- aov(Velocity ~ Material + Error(Subject / Material), data = scrd)

Después de crear un emmGridobjeto de la siguiente manera

emm <- emmeans(aov_velocity, ~ Material)

Es muy fácil obtener todas las comparaciones por pares (post hoc) usando la pairs()función o cualquier contraste deseado usando la contrast()función del emmeanspaquete. Se pueden lograr múltiples ajustes de prueba a través del adjustargumento de estas funciones:

pairs(emm)  # adjust argument not specified -> default p-value adjustment in this case is "tukey"  

Para obtener más información sobre esto, encontré que las viñetas detalladas de emmeans y la documentación son muy útiles.

Además, puede encontrar un ejemplo completo (reproducible) que incluye una descripción sobre cómo obtener los pesos de contraste correctos en mi respuesta aquí .

Sin embargo, tenga en cuenta que el uso de un modelo univariante para las pruebas post hoc puede dar como resultado valores p anticonservadores si se viola la esfericidad.


0

Si se cumple la esfericidad, puede ejecutar un ANOVA de dos vías:

aov_velocity = aov(Velocity~Material+Subject, data=scrd)
posthoc      = TukeyHSD(aov_velocity, 'Material', conf.level=0.95).
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.