Come impostare e interpretare i contrasti ANOVA con il pacchetto auto in R?


15

Diciamo che ho un semplice esperimento fattoriale 2x2 su cui voglio fare ANOVA. In questo modo, ad esempio:

d   <- data.frame(a=factor(sample(c('a1','a2'), 100, rep=T)),
                  b=factor(sample(c('b1','b2'), 100, rep=T)));
d$y <- as.numeric(d$a)*rnorm(100, mean=.75, sd=1) +
       as.numeric(d$b)*rnorm(100, mean=1.2, sd=1) +
       as.numeric(d$a)*as.numeric(d$b)*rnorm(100, mean=.5, sd=1) +
       rnorm(100);
  1. In assenza di un'interazione significativa, per impostazione predefinita (ovvero contr.treatment) l'output di Anova()è il significato complessivo di aoltre tutti i livelli di be di btutti i livelli di a, è giusto?

  2. Come dovrei specificare un contrasto che mi consentirebbe di testare il significato dell'effetto acon il bmantenimento costante al livello b1, dell'effetto acon il bmantenimento costante al livello b2 e dell'interazione a:b?

Risposte:


18

Il tuo esempio porta a dimensioni cellulari ineguali, il che significa che i diversi "tipi di somma dei quadrati" contano, e il test per gli effetti principali non è così semplice come lo affermi. Anova()usa la somma dei quadrati di tipo II. Vedi questa domanda per iniziare.

Esistono diversi modi per testare i contrasti. Si noti che i tipi di SS non contano poiché alla fine stiamo testando il design a fattoriale associato. Suggerisco di utilizzare i seguenti passaggi:

# turn your 2x2 design into the corresponding 4x1 design using interaction()
> d$ab <- interaction(d$a, d$b)       # creates new factor coding the 2*2 conditions
> levels(d$ab)                        # this is the order of the 4 conditions
[1] "a1.b1" "a2.b1" "a1.b2" "a2.b2"

> aovRes <- aov(y ~ ab, data=d)       # oneway ANOVA using aov() with new factor

# specify the contrasts you want to test as a matrix (see above for order of cells)
> cntrMat <- rbind("contr 01"=c(1, -1,  0,  0),  # coefficients for testing a within b1
+                  "contr 02"=c(0,  0,  1, -1),  # coefficients for testing a within b2
+                  "contr 03"=c(1, -1, -1,  1))  # coefficients for interaction

# test contrasts without adjusting alpha, two-sided hypotheses
> library(multcomp)                   # for glht()
> summary(glht(aovRes, linfct=mcp(ab=cntrMat), alternative="two.sided"),
+         test=adjusted("none"))
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: User-defined Contrasts
Fit: aov(formula = y ~ ab, data = d)

Linear Hypotheses:
              Estimate Std. Error t value Pr(>|t|)
contr 01 == 0  -0.7704     0.7875  -0.978    0.330
contr 02 == 0  -1.0463     0.9067  -1.154    0.251
contr 03 == 0   0.2759     1.2009   0.230    0.819
(Adjusted p values reported -- none method)    

Ora controlla manualmente il risultato per il primo contrasto.

> P       <- 2                             # number of levels factor a
> Q       <- 2                             # number of levels factor b
> Njk     <- table(d$ab)                   # cell sizes
> Mjk     <- tapply(d$y, d$ab, mean)       # cell means
> dfSSE   <- sum(Njk) - P*Q                # degrees of freedom error SS
> SSE     <- sum((d$y - ave(d$y, d$ab, FUN=mean))^2)    # error SS
> MSE     <- SSE / dfSSE                   # mean error SS
> (psiHat <- sum(cntrMat[1, ] * Mjk))      # contrast estimate
[1] -0.7703638

> lenSq <- sum(cntrMat[1, ]^2 / Njk)       # squared length of contrast
> (SE   <- sqrt(lenSq*MSE))                # standard error
[1] 0.7874602

> (tStat <- psiHat / SE)                   # t-statistic
[1] -0.9782893

> (pVal <- 2 * (1-pt(abs(tStat), dfSSE)))  # p-value
[1] 0.3303902

3
GRAZIE!!! Hai appena risposto a una domanda che due semestri di statistiche di livello universitario non hanno. Avevo anche preso in considerazione l'idea di utilizzare anova a senso unico prima, ma non sono riuscito a trovare alcuna conferma che si trattasse di un approccio legittimo.
f1r3br4nd

@ f1r3br4nd È legittimo poiché l'errore MS è uguale nel design unidirezionale associato e nel design bidirezionale originale.
Caracal,

Un'ultima domanda di follow-up, se posso: in che modo l'interazione a due vie si generalizza alle interazioni di un numero maggiore di variabili? Se avessi un termine A B C, lo creerei da A: B = (A | B = 1 - A | B = 2), C: B = (C | B = 1 - C | B = 2 ), A: B: C = A: B - C: B e così via?
f1r3br4nd

2
@ f1r3br4nd In un design 2x2x2, esiste un solo contrasto di interazione A B C unico (come se ne esistesse solo uno in un caso 2x2). I coefficienti in un contrasto di interazione A B C devono sommarsi a zero su righe (A), colonne (B) e piani (C) nel "cubo di progettazione". Se l'ordine delle celle nel disegno unidirezionale associato è a1.b1.c1, a2.b1.c1, a1.b2.c1, a2.b2.c1, a1.b1.c2, a2.b1.c2, a1.b2.c2, a2.b2.c2, allora i coefficienti sono c(1, -1, -1, 1, -1, 1, 1, -1). Se hai più di due gruppi nei tuoi fattori, tutti i contrasti che seguono la regola somma-zero sono contrasti di interazione a 3 vie.
Caracal,
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.