Como configurar e interpretar os contrastes ANOVA com o pacote do carro em R?

15

Digamos que eu tenha um experimento fatorial 2x2 simples no qual eu quero fazer a ANOVA. Assim, por exemplo:

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. Na ausência de uma interação significativa, por padrão (ou seja contr.treatment), a saída de Anova()é a significância geral de atodos os níveis de be de btodos os níveis de a, certo?

  2. Como devo especificar um contraste que permita-me para testar a significância do efeito acom bsendo mantida constante em b1 nível, de efeito acom bsendo mantida constante em nível B2, e da interação a:b?

f1r3br4nd
fonte

Respostas:

18

Seu exemplo leva a tamanhos de célula desiguais, o que significa que os diferentes "tipos de soma dos quadrados" são importantes, e o teste dos efeitos principais não é tão simples quanto você afirma. Anova()usa soma de quadrados do tipo II. Veja esta pergunta para começar.

Existem diferentes maneiras de testar os contrastes. Observe que os tipos de SS não importam, pois estamos testando no projeto de fatorial associado. Sugiro usar as seguintes etapas:

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

Agora verifique manualmente o resultado para o primeiro contraste.

> 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
caracal
fonte
3
OBRIGADO!!! Você acabou de responder a uma pergunta que dois semestres das estatísticas do nível de pós-graduação ainda não responderam. Eu até pensei em usar anova de mão única antes, mas não consegui encontrar nenhuma confirmação de que essa fosse uma abordagem legítima.
F1r3br4nd
@ f1r3br4nd É legítimo, pois o erro MS é igual no design unidirecional associado e no design bidirecional original.
caracal
Uma última pergunta de acompanhamento, se eu puder: como a interação bidirecional se generaliza para interações de um número maior de variáveis? Se eu tivesse um termo A B C, construí-lo-ia de A: B = (A | B = 1 - A | B = 2), C: B = (C | B = 1 - C | B = 2 ), A: B: C = A: B - C: B e assim por diante?
F1r3br4nd 13/07/11
2
@ f1r3br4nd Num desenho 2x2x2, existe apenas um único Uma B contraste interacção C (como existe apenas uma em um caso 2x2). Os coeficientes em um contraste de interação A B C devem somar zero nas linhas (A), nas colunas (B) e nos planos (C) no "cubo de design". Se a ordem das células no design unidirecional associado for a1.b1.c1, a2.b1.c1, a1.b2.c1, a2.b2.c1, a1.b1.c2, a2.b1.c2, a1.b2.c2, a2.b2.c2, os coeficientes serão c(1, -1, -1, 1, -1, 1, 1, -1). Se você tiver mais de dois grupos em seus fatores, todos os contrastes que seguem a regra da soma para zero são contrastes de interação de três vias.
Caracal