Test post hoc après ANOVA avec mesures répétées en utilisant R

24

J'ai effectué une ANOVA de mesures répétées en R, comme suit:

aov_velocity = aov(Velocity ~ Material + Error(Subject/(Material)), data=scrd)
summary(aov_velocity)
  • Quelle syntaxe en R peut être utilisée pour effectuer un test post hoc après une ANOVA avec des mesures répétées?
  • Le test de Tukey avec correction de Bonferroni serait-il approprié? Si oui, comment cela pourrait-il être fait dans R?
L_T
la source
1
voir cette question connexe sur les tests post hoc pour les conceptions de mesures répétées stats.stackexchange.com/questions/575/…
Jeromy Anglim
3
À propos de votre 2e point: le HSD de Tukey inclut déjà une "correction" pour la multiplicité (au niveau de la statistique de test, pas au niveau alpha comme dans la méthode de Bonferroni). Il n'est donc pas nécessaire de combiner les deux.
chl
1
@chl: nous n'avons donc pas besoin de corriger le niveau alpha lors des comparaisons multiples par paires dans le cas du HSD de Tukey?
stan
3
@stan No. (Remarque: des tests imprévus (post-hoc) doivent être effectués après que l'ANOVA a montré un résultat significatif, surtout s'il s'agit d'une approche confirmative.)
chl

Réponses:

20

Ce que vous pourriez faire, c'est spécifier le modèle avec lme, puis utiliser à glhtpartir du multcomppackage pour faire ce que vous voulez. Cependant, lme donne des valeurs F légèrement différentes de celles d'une ANOVA standard (voir également mes questions récentes ici ).

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"))

Pour d'autres contrastes, puis bonferroni, voir par exemple, le livre multcompdes auteurs du paquet .

Vous pouvez également voir ce post sur la liste R-mailing , et ce billet de blog pour spécifier une des mesures répétées ANOVA dans R .

Cependant, comme le montre cette question de ma part, je ne sais pas si cette approche est identique à une ANOVA. De plus, glht ne signale que les valeurs z au lieu des valeurs t ou F habituelles . Cela semble également être rare.

Jusqu'à présent, je n'ai pas rencontré d'autre moyen de le faire.

Henrik
la source
2

Si vous souhaitez vous en tenir à la aov()fonction, vous pouvez utiliser le emmeanspackage qui peut gérer aovlist(et de nombreux autres ) objets.

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

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

Après avoir créé un emmGridobjet comme suit

emm <- emmeans(aov_velocity, ~ Material)

il est très facile d'obtenir toutes les comparaisons (post hoc) par paires en utilisant la pairs()fonction ou tout contraste souhaité en utilisant la contrast()fonction du emmeanspackage. Des ajustements de tests multiples peuvent être obtenus via l' adjustargument de ces fonctions:

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

Pour plus d'informations à ce sujet, j'ai trouvé les vignettes Emmeans détaillées et la documentation très utiles.

En outre, vous pouvez trouver un exemple complet (reproductible) comprenant une description sur la façon d'obtenir les poids de contraste corrects dans ma réponse ici .

Notez cependant que l'utilisation d'un modèle univarié pour les tests post hoc peut entraîner des valeurs p anti-conservatrices si la sphéricité est violée.

statmerkur
la source
0

Si la sphéricité est satisfaite, vous pouvez exécuter une ANOVA bidirectionnelle:

aov_velocity = aov(Velocity~Material+Subject, data=scrd)
posthoc      = TukeyHSD(aov_velocity, 'Material', conf.level=0.95).
Juan José González Henríquez
la source