Я использовал var.test
и bartlett.test
проверять основные предположения ANOVA, среди других, homoscedascity (однородность, равенство различий). Процедура довольно проста для Односторонней 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 могут быть проверены с графическими процедурами, но что относительно "арифметической опции"? Это, вообще, управляемо? Как Вы тестируете homoscedascity в Двухсторонней ANOVA?
Проверка гипотез - неправильный инструмент для оценки достоверности предположений модели. Если размер выборки мал, у вас нет возможности обнаружить какие-либо различия в дисперсии, даже если эти различия велики. При большом объеме выборки у вас есть возможность обнаружить даже самые незначительные отклонения от равной дисперсии, поэтому вы почти всегда отвергнете нулевое значение. Имитационные исследования показали, что предварительное тестирование предположений модели приводит к ненадежным ошибкам типа 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')
Вы не потеряете много мощности при использовании робастного метода (гетроскедастические согласованные ковариационные матрицы), поэтому, если вы сомневаетесь, выбирайте робастный метод.
Вы можете проверить гетероскедастичность, используя тест Флигнера – Киллина однородности дисперсий. Предположим, ваша модель похожа на
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
Кроме того, вы можете выполнить ] Тест Левена
для равных групповых дисперсий как в одностороннем, так и в двустороннем дисперсионном анализе. Реализации теста Левена можно найти в пакетах 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
Для bartlett.test
bartlett.test(split(x,list(g1,g2)))
var.test
не применяется, поскольку он работает только при наличии двух групп.