Как настроить и интерпретировать контрасты ANOVA с пакетом автомобилей в R?


15

Допустим, у меня есть простой факторный эксперимент 2x2, на котором я хочу провести ANOVA. Вот так, например:

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. При отсутствии значительного взаимодействия по умолчанию (т. Е. contr.treatment) Результатом Anova()является общее значениеa всех уровней bи для bвсех уровней a, правильно?

  2. Как мне указать контраст, который позволил бы мне проверить значимость эффекта aс bпостоянством на уровне b1, эффекта aс bпостоянством на уровне b2 и взаимодействия a:b?

Ответы:


18

Ваш пример приводит к неравным размерам ячеек, а это значит, что разные «типы суммы квадратов» имеют значение, и тест на основные эффекты не так прост, как вы его заявили. Anova()использует сумму квадратов типа II. Посмотрите этот вопрос для начала.

Существуют разные способы проверки контрастов. Обратите внимание, что типы SS не имеют значения, поскольку мы в конечном итоге проводим тестирование в соответствующем однофакторном проекте. Я предлагаю использовать следующие шаги:

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

Теперь вручную проверьте результат для первого контраста.

> 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
СПАСИБО!!! Вы только что ответили на вопрос, которого нет в двух семестрах статистики уровня выпускника. Я даже раньше думал об использовании односторонней ановы, но не смог найти подтверждения, что это был законный подход.
f1r3br4nd

@ f1r3br4nd Это законно, так как ошибка MS одинакова в ассоциированном одностороннем и оригинальном двухстороннем дизайне.
Каракал

Последний вопрос, если позволите: как двустороннее взаимодействие обобщается на взаимодействия большего числа переменных? Если бы у меня был термин A B C, я бы построил его из A: B = (A | B = 1 - A | B = 2), C: B = (C | B = 1 - C | B = 2 ), A: B: C = A: B - C: B и так далее?
f1r3br4nd

2
@ f1r3br4nd В дизайне 2x2x2 есть только один уникальный контраст взаимодействия A B C (как и в случае 2x2 только один). Коэффициенты в контрасте взаимодействия A B C должны суммироваться до нуля по строкам (A), столбцам (B) и плоскостям (C) в «кубе проектирования». Если порядок ячеек в связанной односторонней схеме равен a1.b1.c1, a2.b1.c1, a1.b2.c1, a2.b2.c1, a1.b1.c2, a2.b1.c2, a1.b2.c2, a2.b2.c2, то коэффициенты равны c(1, -1, -1, 1, -1, 1, 1, -1). Если в ваших факторах более двух групп, все контрасты, следующие правилу суммы к нулю, являются трехсторонними контрастами взаимодействия.
Каракал
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.