Test post hoc po ANOVA z powtarzanymi pomiarami przy użyciu R.

24

Wykonałem powtarzane pomiary ANOVA w R, jak następuje:

aov_velocity = aov(Velocity ~ Material + Error(Subject/(Material)), data=scrd)
summary(aov_velocity)
  • Jakiej składni w R można użyć do wykonania testu post hoc po ANOVA z powtarzanymi pomiarami?
  • Czy test Tukeya z korekcją Bonferroniego byłby odpowiedni? Jeśli tak, jak można to zrobić w R?
L_T
źródło
1
zobacz to powiązane pytanie dotyczące testów post hoc dla projektów z powtarzanymi pomiarami stats.stackexchange.com/questions/575/…
Anglim
3
O twoim drugim punkcie: HSD Tukeya zawiera już „korektę” wielokrotności (na poziomie statystyki testowej, a nie na poziomie alfa, jak w metodzie Bonferroniego). Więc nie ma potrzeby łączenia obu.
chl
1
@chl: więc nie musimy korygować poziomu alfa podczas wielokrotnych porównań parami w przypadku HSD Tukeya?
stan
3
@stan Nie. (Uwaga: Nieplanowane (post-hoc) testy powinny być wykonane po tym, jak ANOVA wykazała znaczący wynik, szczególnie jeśli dotyczy podejścia potwierdzającego.)
chl.

Odpowiedzi:

20

Co możesz zrobić, to określić model, lmea następnie użyć glhtz multcomppakietu, aby zrobić to, co chcesz. Jednak lme podaje nieco inne wartości F niż standardowa ANOVA (patrz także moje ostatnie pytania tutaj ).

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

Inne kontrasty niż bonferroni, patrz np . Książka multcompautorów pakietu .

Można też zobaczyć ten wpis na liście R-mailingowej i to na blogu dla określenia ANOVA z powtarzanymi pomiarami w R .

Jednak, jak pokazano w tym pytaniu ode mnie, nie jestem pewien, czy takie podejście jest identyczne z ANOVA. Ponadto glht zgłasza tylko wartości z zamiast zwykłych wartości t lub F. To również wydaje się rzadkie.

Jak dotąd nie spotkałem się z tym sposobem.

Henrik
źródło
2

Jeśli chcesz pozostać przy tej aov()funkcji, możesz użyć emmeanspakietu, który obsługuje aovlist(i wiele innych ) obiektów.

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

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

Po utworzeniu emmGridobiektu w następujący sposób

emm <- emmeans(aov_velocity, ~ Material)

bardzo łatwo jest uzyskać wszystkie porównania (post hoc) parami za pomocą pairs()funkcji lub dowolnego pożądanego kontrastu za pomocą contrast()funkcji emmeanspakietu. adjustArgumenty tych funkcji umożliwiają wielokrotne dostosowanie testów :

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

Aby uzyskać więcej informacji na ten temat, uważam, że szczegółowe emmeans winiety i dokumentacja są bardzo pomocne.

Ponadto, można znaleźć kompletne (powtarzalne) Przykład wraz z opisem, w jaki sposób uzyskać odpowiednie ciężary kontrast w moją odpowiedź tutaj .

Należy jednak zauważyć, że zastosowanie modelu jednoczynnikowego do testów post hoc może prowadzić do antykonserwatywnych wartości p, jeśli sferyczność zostanie naruszona.

statmerkur
źródło
0

Jeśli sferyczność jest spełniona, możesz uruchomić dwukierunkową ANOVA:

aov_velocity = aov(Velocity~Material+Subject, data=scrd)
posthoc      = TukeyHSD(aov_velocity, 'Material', conf.level=0.95).
Juan José González Henríquez
źródło