Test post hoc dopo ANOVA con misure ripetute usando R


24

Ho eseguito una ripetuta ANOVA misure in R, come segue:

aov_velocity = aov(Velocity ~ Material + Error(Subject/(Material)), data=scrd)
summary(aov_velocity)
  • Quale sintassi in R può essere utilizzata per eseguire un test post hoc dopo un ANOVA con misure ripetute?
  • Il test di Tukey con la correzione di Bonferroni sarebbe appropriato? In tal caso, come è possibile farlo in R?

1
vedere questa domanda correlata sui test post hoc per misure ripetute disegni stats.stackexchange.com/questions/575/…
Jeromy Anglim

3
Informazioni sul secondo punto: l'HSD di Tukey include già una "correzione" per la molteplicità (a livello della statistica del test, non del livello alfa come nel metodo di Bonferroni). Quindi, non è necessario combinare entrambi.
chl

1
@chl: quindi non abbiamo bisogno di correggere il livello alfa durante i confronti multipli a coppie nel caso dell'HSD di Tukey?
Stan

3
@stan No. (Nota: i test non pianificati (post-hoc) devono essere eseguiti dopo che l'ANOVA ha mostrato un risultato significativo, soprattutto se si tratta di un approccio di conferma.)
chl

Risposte:


20

Quello che potresti fare è specificare il modello con lmee quindi usare glhtdal multcomppacchetto per fare quello che vuoi. Tuttavia, lme fornisce valori F leggermente diversi rispetto ad un ANOVA standard (vedi anche le mie domande recenti qui ).

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

Per altri contrasti poi bonferroni, vedi ad esempio il libro sugli multcompautori del pacchetto .

Si consiglia inoltre di vedere questo post su R-mailing list , e questo post del blog per specificare un ripetute misure ANOVA in R .

Tuttavia, come mostrato in questa domanda da parte mia, non sono sicuro che questo approccio sia identico a un ANOVA. Inoltre, glht riporta solo valori z anziché i soliti valori t o F. Anche questo sembra insolito.

Finora non ho riscontrato un altro modo di farlo.


2

Se si desidera attenersi alla aov()funzione, è possibile utilizzare il emmeanspacchetto in grado di gestire aovlist(e molti altri ) oggetti.

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

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

Dopo aver creato un emmGridoggetto come segue

emm <- emmeans(aov_velocity, ~ Material)

è molto facile ottenere tutti i confronti (post hoc) a coppie usando la pairs()funzione o qualsiasi contrasto desiderato usando la contrast()funzione del emmeanspacchetto. Le regolazioni di test multipli possono essere ottenute tramite l' adjustargomento di queste funzioni:

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

Per ulteriori informazioni su questo ho trovato molto utili le vignette emmean dettagliate e la documentazione .

Inoltre, puoi trovare un esempio completo (riproducibile) che includa una descrizione su come ottenere i pesi di contrasto corretti nella mia risposta qui .

Si noti, tuttavia, che l'utilizzo di un modello univariato per i test post hoc può comportare valori p anti-conservativi in caso di violazione della sfericità.


0

Se viene soddisfatta la sfericità, è possibile eseguire un ANOVA a due vie:

aov_velocity = aov(Velocity~Material+Subject, data=scrd)
posthoc      = TukeyHSD(aov_velocity, 'Material', conf.level=0.95).
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.