Для формальной проверки статистических гипотез существуют различные статистические критерии. Их можно разделить на две большие группы: параметрические и непараметрические.
Параметрические критерии основаны на том, что распределение данных известно. То есть, при применении какого-нибудь параметрического критерия нужно всегда следить за тем, что главное допущение критерия – тип распределения – выполняется. Как правило, многие параметрические критерии предполагают нормальность распределения данных. Во многом это связано с тем, что нормальное распределение широко распространено. Кроме того, часто все, что мы можем сказать о распределении данных, это то, является ли оно нормальным или нет, потому что задача определения типа распределения довольно сложна и существующие формальные тесты могут определить лишь общий класс распределения или показать, “между какими” распределениями находится интересующее нас распределение.
Непараметрические критерии исходят из того, что распределение данных незвестно. Поэтому при использовании этих критериев часто действия производятся не с самими значениями в выборке/выборках, а с их рангами.
То, что при применении тех или иных критериев нужно думать о распределении данных, не всегда означает, что перед их использованием нужно обязательно проверять распределение данных на нормальность. Иногда формальный критерий может показать, что гипотезу о нормальном распределении нужно отвергнуть, но распределение интересующего нас показателя может быть очень близким к нормальному. Поэтому главное исходить из формы распределения и тщательно анализировать данные на качественном уровне: правда ли, что показатель слишком часто принимает минимальное или максимальное значение (распределение скошено вправо или влево), правда ли, что из теоретических знаний об исследуемом показателе следует, что его распределение похоже на нормальное?
Критерий Стьюдента для двух выборок (t-test)
Предположение: выборки взяты из нормального распределения.
Нулевая гипотеза: средние двух генеральных совокупностей равны.
Варианты: есть два варианта критерия Стьюдента: для независимых выборок (в двух выборках содержатся значения показателя для разных объектов) и для связных выборок (в двух выборках содержатся значения показателя для одних и тех же объектов, например, в разные периоды времени). Пример использования критерия Стьюдента для независимых выборок: сравнение средних значений ВВП на душу населения в демократиях и автократиях. Пример использования критерия Стьюдента для связных выборок: сравнение средней заработной платы в одних и тех же регионах до экономической реформы и после нее.
Строго говоря, есть еще одно деление внутри критерия Стьюдента для независимых выборок: при условии, что дисперсии генеральных совокупностей, из которых взяты выборки, равны, и при условии, что эти дисперсии не равны. В R по умолчанию встроена реализация второго варианта, так как это более реалистичное условие.
Реализация в R:
Сравним средний уровень детской смертности в католических и протестантских кантонах Швейцарии (данные за 1888 год, встроенная в R база swiss
). Предполагаем, что уровень смертности в католических и протестантских кантонах имеет нормальное распределение.
# переменная religion - по которой будем делить кантоны на 2 группы
swiss$religion <- ifelse(swiss$Catholic > 50, "catholic", "protestant")
# сам тест
# через ~ указывается показатель, по которому делим наблюдения в базе на 2 группы
t.test(data = swiss, Infant.Mortality ~ religion)
##
## Welch Two Sample t-test
##
## data: Infant.Mortality by religion
## t = 1.0863, df = 31.717, p-value = 0.2855
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.8620975 2.8310630
## sample estimates:
## mean in group catholic mean in group protestant
## 20.55000 19.56552
Здесь p-value = 0.2855
, значит, вероятность того, что наша нулевая гипотеза о равенстве средних верна (при условии имеющихся данных), равна 0.2855. На 5%-ном уровне значимости есть основания не отвергать нулевую гипотезу о равенстве средних значений (0.2855 > 0.05). Средний уровень детской смертности в католических и протестантских кантонах можно считать одинаковым.
Если вдруг в базе данных показатели, средние по которым нужно сравнить, просто находятся в двух разных столбцах, то t-test выглядит так:
# вместо векторов могут быть столбцы базы через $
set.seed(123)
index.a <- rnorm(100, mean = 2, sd = 6)
index.b <- rnorm(100, mean = 10, sd = 10)
t.test(index.a, index.b)
##
## Welch Two Sample t-test
##
## data: index.a and index.b
## t = -5.7428, df = 156.59, p-value = 4.705e-08
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -8.577204 -4.186989
## sample estimates:
## mean of x mean of y
## 2.542435 8.924532
Тут p-value = 4.705e-08
, то есть почти 0. На 5%-ном уровне значимости есть основания отвергнуть нулевую гипотезу о равенстве средних значений.
Для связных выборок (парных показателей), в качестве аргумента функции t.test
нужно дописать paired=TRUE)
.
Критерий Уилкоксона (Манна-Уитни) для двух групп
Предположение: выборки взяты не из нормального распределения (из какого – неизвестно).
Нулевая гипотеза: выборки взяты из одного и того же распределения (можно использовать как аналог t-test и говорить о равенстве средних двух независимых выборок, но изначально критерий Уилкоксона не об этом).
Варианты: как и в случае с критерием Стьюдента для двух выборок, есть вариант для независимых и связных выборок.
Реализация в R:
Сравним средний уровень детской смертности в католических и протестантских кантонах Швейцарии (данные за 1888 год, встроенная в R база swiss
). Предполагаем, что уровень смертности в католических и протестантских кантонах имеет распределение, отличное от нормального.
# через ~ указывается показатель, по которому делим наблюдения в базе на 2 группы
wilcox.test(data = swiss, Infant.Mortality ~ religion)
## Warning in wilcox.test.default(x = c(22.2, 20.2, 26.6, 23.6, 24.9, 21,
## 24.4, : cannot compute exact p-value with ties
##
## Wilcoxon rank sum test with continuity correction
##
## data: Infant.Mortality by religion
## W = 286.5, p-value = 0.5841
## alternative hypothesis: true location shift is not equal to 0
Если вылезает предупреждение “не могу подсчитать точное p-значение при наличии повторяющихся наблюдений”, можно добавить аргумент exact=FALSE
, что будет говорить R о том, что мы это понимаем, и не ждем от него втаком случае точного расчета p-value.
Случай с двумя столбцам:
wilcox.test(index.a, index.b)
##
## Wilcoxon rank sum test with continuity correction
##
## data: index.a and index.b
## W = 2923, p-value = 3.902e-07
## alternative hypothesis: true location shift is not equal to 0
ANOVA
ANOVA – analysis of variance, дисперсионный анализ.
Предположение: выборки взяты из нормального распределения.
Нулевая гипотеза: средние значения k генеральных совокупностей равны (где k – число исследуемых выборок).
Реализация в R:
Сравним средний вес цыплят в пяти группах – в зависимости от того, каким кормом их кормили (данные из встроенной в R базы chickwts
). Предполагаем, что вес цыплят, относящихся к разным группам, имеет нормальное распределение.
anova.res <- aov(data = chickwts, weight ~ feed) # ANOVA, выдает сумму квадратов
summary(anova.res) # все статистики + p-value
## Df Sum Sq Mean Sq F value Pr(>F)
## feed 5 231129 46226 15.37 5.94e-10 ***
## Residuals 65 195556 3009
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Критерий Краскела-Уоллиса
Предположение: выборки взяты из распределения, отличного от нормального (из какого – неизвестно).
Нулевая гипотеза: выборки взяты из одного и того же распределения (можно говорить о равенстве средних k независимых выборок, но изначально критерий не об этом).
Реализация в R:
Сравним средний вес цыплят в пяти группах – в зависимости от того, каким кормом их кормили (данные из встроенной в R базы chickwts
). Предполагаем, что вес цыплят, относящихся к разным группам, имеет распределение, отличное от нормального.
kruskal.test(data = chickwts, weight ~ feed)
##
## Kruskal-Wallis rank sum test
##
## data: weight by feed
## Kruskal-Wallis chi-squared = 37.343, df = 5, p-value = 5.113e-07