Sto cercando di eseguire misure ripetute Anova in R seguito da alcuni contrasti specifici su quel set di dati. Penso che l'approccio corretto sarebbe quello di utilizzare
Anova()
dal pacchetto auto.
Permettiamo di illustrare la mia domanda con l'esempio tratto ?Anova
dall'uso dei
OBrienKaiser
dati (Nota: ho scelto il fattore di genere dall'esempio):
abbiamo un progetto con uno tra soggetti fattore, trattamento (3 livelli: controllo, A, B) e 2 ripetuti -misura (all'interno dei soggetti) fattori, fase (3 livelli: pretest, posttest, followup) e ora (5 livelli: da 1 a 5).
La tabella standard ANOVA è data da (a differenza dell'esempio (Anova) sono passato a Somma di quadrati di tipo 3, questo è ciò che il mio campo vuole):
require(car)
phase <- factor(rep(c("pretest", "posttest", "followup"), c(5, 5, 5)),
levels=c("pretest", "posttest", "followup"))
hour <- ordered(rep(1:5, 3))
idata <- data.frame(phase, hour)
mod.ok <- lm(cbind(pre.1, pre.2, pre.3, pre.4, pre.5, post.1, post.2, post.3, post.4, post.5, fup.1, fup.2, fup.3, fup.4, fup.5) ~ treatment, data=OBrienKaiser)
av.ok <- Anova(mod.ok, idata=idata, idesign=~phase*hour, type = 3)
summary(av.ok, multivariate=FALSE)
Ora, immagina che l'interazione di ordine più elevato sarebbe stata significativa (il che non è il caso) e vorremmo esplorarla ulteriormente con i seguenti contrasti:
C'è una differenza tra le ore 1 e 2 rispetto alle ore 3 (contrasto 1) e tra le ore 1 e 2 rispetto alle ore 4 e 5 (contrasto 2) nelle condizioni di trattamento (A&B insieme)?
In altre parole, come posso specificare questi contrasti:
((treatment %in% c("A", "B")) & (hour %in% 1:2))
contro((treatment %in% c("A", "B")) & (hour %in% 3))
((treatment %in% c("A", "B")) & (hour %in% 1:2))
contro((treatment %in% c("A", "B")) & (hour %in% 4:5))
La mia idea sarebbe quella di eseguire un altro ANOVA che offra la condizione di trattamento non necessaria (controllo):
mod2 <- lm(cbind(pre.1, pre.2, pre.3, pre.4, pre.5, post.1, post.2, post.3, post.4, post.5, fup.1, fup.2, fup.3, fup.4, fup.5) ~ treatment, data=OBrienKaiser, subset = treatment != "control")
av2 <- Anova(mod2, idata=idata, idesign=~phase*hour, type = 3)
summary(av2, multivariate=FALSE)
Tuttavia, non ho ancora idea di come impostare la matrice di contrasto all'interno del soggetto appropriata confrontando le ore 1 e 2 con 3 e 1 e 2 con 4 e 5. E non sono sicuro se omettere il gruppo di trattamento non necessario sia davvero una buona idea in quanto cambia il termine generale di errore.
Prima di andare, Anova()
stavo anche pensando di farlo lme
. Tuttavia, ci sono piccole differenze nei valori F e p tra il manuale ANOVA e ciò che viene restituito a anove(lme)
causa di possibili variazioni negative nell'ANOVA standard (che non sono consentite inlme
). Allo stesso modo, qualcuno mi ha indicato gls
che consente di adattare misure ripetute ANOVA, tuttavia, non ha argomenti di contrasto.
Per chiarire: voglio un test F o t (usando somme di quadrati di tipo III) che risponda se i contrasti desiderati sono significativi o meno.
Aggiornare:
Ho già fatto una domanda molto simile su R-help, non ho avuto risposta .
Una domanda simile è stata posta su R-help qualche tempo fa. Tuttavia, anche le risposte non hanno risolto il problema.
Aggiornamento (2015):
Dato che questa domanda genera ancora qualche attività, specificare le tesi e praticamente tutti gli altri contrasti ora può essere fatto relativamente facilmente con il afex
pacchetto in combinazione con il lsmeans
pacchetto come descritto nella vignetta afex .
treatment
, 3) per ogni persona media su livelli diprePostFup
, 4) per ogni persona media su ore 1,2 (= gruppo di dati 1) oltre alle ore 3,4 (= gruppo di dati 2), 5) eseguire il test t per 2 gruppi dipendenti. Dal momento che Maxwell & Delaney (2004) e Kirk (1995) scoraggiano i contrasti con un termine di errore aggregato nei progetti interni, questa potrebbe essere una semplice alternativa.