Испытание гомоскедентности для двухстороннего ANOVA - PullRequest
15 голосов
/ 29 мая 2010

Я использовал var.test и bartlett.test для проверки базовых допущений ANOVA, среди прочего, однородность (однородность, равенство дисперсий) Процедура для One-Way ANOVA довольно проста:

bartlett.test(x ~ g)  # where x is numeric, and g is a factor
var.test(x ~ g)

Но для таблиц 2x2, т.е. двухсторонних ANOVA, я хочу сделать что-то вроде этого:

bartlett.test(x ~ c(g1, g2))  # or with list; see latter:
var.test(x ~ list(g1, g2))

Конечно, предположения ANOVA можно проверить с помощью графических процедур, но как насчет "арифметического параметра" ? Это вообще управляемо? Как вы тестируете гомоскаскантность в двухстороннем ANOVA?

Ответы [ 3 ]

18 голосов
/ 29 мая 2010

Проверка гипотез - это неправильный инструмент для оценки обоснованности предположений модели. Если размер выборки невелик, вы не сможете обнаружить любые различия, даже если различия большие. Если у вас большой размер выборки, у вас есть возможность обнаружить даже самые тривиальные отклонения от одинаковой дисперсии, поэтому вы почти всегда будете отклонять ноль. Имитационные исследования показали, что предварительная проверка допущения модели приводит к ненадежным ошибкам типа I.

Хорошим показателем является поиск остатков во всех ячейках, или, если ваши данные нормальные, вы можете использовать AIC или BIC с / без одинаковых отклонений в качестве процедуры выбора.

Если вы считаете, что существуют неравные отклонения, отбросьте предположение примерно так:

library(car)
model.lm <- lm(formula=x ~ g1 + g2 + g1*g2,data=dat,na.action=na.omit)
Anova(model.lm,type='II',white.adjust='hc3')

Вы не теряете много силы с помощью надежного метода (согласованные по гетероскедастическим матрицам ковариации), поэтому, если сомневаетесь, становитесь устойчивыми.

7 голосов
/ 29 мая 2010

Вы можете проверить гетероскедастичность, используя критерий Флингера-Киллина однородности дисперсий. Предположим, что ваша модель похожа на

model<-aov(gain~diet*supplement)

fligner.test(gain~diet*supplement)

        Fligner-Killeen test of homogeneity of variances

data:  gain by diet by supplement 
Fligner-Killeen:med chi-squared = 2.0236, df = 2, p-value = 0.3636

Вы могли бы использовать bartlett.test (но это скорее тест ненормальности, чем равенства дисперсий)

bartlett.test(gain~diet*supplement)
        Bartlett test of homogeneity of variances

data:  gain by diet by supplement 
Bartlett's K-squared = 2.2513, df = 2, p-value = 0.3244

Более того, вы можете выполнить Levene test для одинаковых групповых дисперсий как в одностороннем, так и в двухстороннем ANOVA. Реализации теста Левена можно найти в пакетах car (ссылка исправлена), s20x и lawstat

levene.test(gain~diet*supplement)  # car package version

Levene's Test for Homogeneity of Variance
      Df F value Pr(>F)
group 11  1.1034 0.3866
      36 
5 голосов
/ 29 мая 2010

Для bartlett.test

bartlett.test(split(x,list(g1,g2)))

var.test не применимо, поскольку работает только при наличии двух групп.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...