Post-hoc-Test nach ANOVA mit wiederholten Messungen mit R


24

Ich habe eine ANOVA mit wiederholten Messungen in R wie folgt durchgeführt:

aov_velocity = aov(Velocity ~ Material + Error(Subject/(Material)), data=scrd)
summary(aov_velocity)
  • Mit welcher Syntax in R kann nach einer ANOVA mit wiederholten Messungen ein Post-Hoc-Test durchgeführt werden?
  • Wäre Tukeys Test mit Bonferroni-Korrektur angemessen? Wenn ja, wie könnte dies in R geschehen?

1
siehe diese verwandte Frage auf Post-hoc-Tests für wiederholte Maßnahmen Designs stats.stackexchange.com/questions/575/…
Jeromy Anglim

3
Zu Ihrem 2. Punkt: Tukeys HSD enthält bereits eine "Korrektur" für die Multiplizität (auf der Ebene der Teststatistik, nicht der Alpha-Ebene wie bei der Bonferroni-Methode). Beides muss also nicht kombiniert werden.
chl

1
@chl: Müssen wir also bei Tukey's HSD den Alpha-Level während der mehrfachen paarweisen Vergleiche nicht korrigieren?
stan

3
@stan Nein. (Hinweis: Ungeplante (post-hoc) Tests sollten durchgeführt werden, nachdem die ANOVA ein signifikantes Ergebnis gezeigt hat, insbesondere wenn es sich um einen Bestätigungsansatz handelt.)
chl

Antworten:


20

Sie können das Modell angeben lmeund dann glhtaus dem multcompPaket verwenden, um das zu tun, was Sie möchten. Ich gebe jedoch etwas andere F-Werte als eine Standard-ANOVA (siehe auch meine letzten Fragen hier ).

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

Für andere Kontraste als bonferroni siehe zB das Buch über multcompdie Autoren des Pakets .

Möglicherweise möchten Sie diesen Beitrag auch in der R-Mailing-Liste und diesen Blog-Beitrag zur Angabe einer ANOVA mit wiederholten Messungen in R sehen .

Wie in dieser Frage von mir gezeigt, bin ich mir jedoch nicht sicher, ob diese Vorgehensweise mit einer ANOVA identisch ist. Außerdem berichtet glht nur z -Werten statt der üblichen t oder F - Werte. Dies scheint auch ungewöhnlich zu sein.

Bisher habe ich noch keinen anderen Weg gefunden, dies zu tun.


2

Wenn Sie an der aov()Funktion festhalten möchten, können Sie das emmeansPaket verwenden, das aovlist(und viele andere ) Objekte verarbeiten kann.

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

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

Nachdem Sie ein emmGridObjekt wie folgt erstellt haben

emm <- emmeans(aov_velocity, ~ Material)

Es ist sehr einfach, alle (post-hoc) paarweisen Vergleiche mithilfe der pairs()Funktion oder eines beliebigen Kontrasts mithilfe der contrast()Funktion des emmeansPakets durchzuführen. Anpassungen durch mehrere Tests können über das adjustArgument dieser Funktionen erreicht werden:

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

Für nähere Informationen hierzu halte ich die ausführlichen Emmeans-Vignetten und die Dokumentation für sehr hilfreich.

Außerdem finden Sie in meiner Antwort hier ein vollständiges (reproduzierbares) Beispiel mit einer Beschreibung, wie Sie die richtigen Kontrastgewichte erhalten .

Beachten Sie jedoch, dass die Verwendung eines univariaten Modells für die Post-Hoc-Tests zu anti-konservativen p- Werten führen kann, wenn die Sphärizität verletzt wird.


0

Wenn die Sphärizität erfüllt ist, können Sie eine Zwei-Wege-ANOVA ausführen:

aov_velocity = aov(Velocity~Material+Subject, data=scrd)
posthoc      = TukeyHSD(aov_velocity, 'Material', conf.level=0.95).
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.