Як налаштувати та інтерпретувати контрасти 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 (як, наприклад, лише один у випадку 2х2). Коефіцієнти в контрасті взаємодії 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.