Есть данные по одному количественному показателю в двух группах, нужно определить, отличаются ли значения показателя в одной группе от значений показателя в другой группе.
Определить, правда ли, что средний балл по английскому языку у девочек выше, чем у мальчиков; проверить, действительно ли скорость реакции у людей, которые водят машину, отличается от скорости реакции людей, которые машину не водят.
Используется, когда распределение исследуемого количественного показателя является нормальным в обеих группах (в каждой из групп).
Нулевая гипотеза, которая проверяется с помощью данного критерия:
\[ H_0: \mu_1 = \mu_2 \text{ (средние равны, нет различий)} \] Возможные альтернативные гипотезы:
\[ H_1: \mu_1 \ne \mu_2 \text{ или } H_1: \mu_1 < \mu_2 \text{ или } H_1: \mu_1 > \mu_2 \]
Под средними значениями в гипотезах подразумеваются средние значения генеральных совокупностей, то есть средние значения показателя «вообще», а не для двух конкретных выборок. Для конкретных выборок (столбцов, которые мы берем из таблицы с данными) нет смысла формулировать гипотезы и проверять их на каком-либо уровне значимости, мы и так можем посчитать средние арифметические явно, сравнить их и сказать, равны они или нет. Но такой вывод не будет надежным: в исследовании мы хотим учитывать все возможные варианты выборок, а не один (может, так случайно получилось, что средние арифметические в двух группах совпали, опросим других людей и сформируем новую выборку, а там они уже не совпадут).
Статистика критерия (значение, которое позволяет понять, насколько сильно наши данные отличаются от того, что ожидается согласно нулевой гипотезе) имеет t-распределение, распределение Стьюдента с числом степеней свободы равным \(\text{df} = n_1 + n_2 - 2\), где \(n_1\) — число наблюдений в первой выборке, а \(n_2\) — число наблюдений во второй выборке.
Существуют различные модификации t-теста для разного типа выборок и разных ограничений. Мы будем обсуждать тесты для независимых выборок (пример независимых выборок: мужчины vs женщины, пример зависимых выборок: вес одних и тех же людей до и после диеты).
Есть t-тест, который предполагает, что выборки взяты из генеральных совокупностей, имеющих одинаковые дисперсии (\(\sigma_1 = \sigma_2\)), а есть t-тест, который предполагает обратное (\(\sigma_1 \ne \sigma_2\)). В R по умолчанию используется второй вариант теста с предположением о неравных дисперсиях. При желании можно сформулировать гипотезу о равенстве дисперсий, проверить ее с помощью F-критерия и сделать вывод, какой вариант t-теста нам нужен.
F-критерий (F-тест)
Нулевая и альтернативные гипотезы:
\[ H_0: \sigma_1 = \sigma_2 \text{ (дисперсии равны)} \]
\[ H_1: \sigma_1 \ne \sigma_2 \text{ (дисперсии не равны)} \] Альтернативная гипотеза могла бы быть и односторонней, но давайте остановимся на базовом варианте (в R по умолчанию будет выбрана двусторонняя гипотеза).
Статистика критерия имеет F-распределение со степенями свободы \(\text{df}_1 = n_1 - 1\) и \(\text{df}_2 = n_2 - 1\), где \(n_1\) — число наблюдений в первой выборке, а \(n_2\) — число наблюдений во второй выборке.
Реализуется F- тест в R просто. Проверим равенство дисперсий показателя x
из датасета dat
для двух групп, через ~
указана переменная группировки:
var.test(dat$x ~ dat$group)
##
## F test to compare two variances
##
## data: dat$x by dat$group
## F = 0.41125, num df = 18, denom df = 12, p-value = 0.08622
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.1323156 1.1387048
## sample estimates:
## ratio of variances
## 0.4112508
Здесь
P-value здесь более 0.05, следовательно, на 5% уровне значимости нет оснований отвергнуть нулевую гипотезу о равенстве дисперсий. Дисперсии равны.
Если нулевая гипотеза не отвергается, то стоит выбрать t-тест для случая с равными дисперсиями. Если отвергается — для случая с неравными (и так вшит в R по умолчанию, дополнительных действий не требуется).
T-test с неравными дисперсиями
Проверяем равенство средних значений показателя x
из датасета dat
для двух групп, через ~
указана переменная группировки:
t.test(dat$x ~ dat$group)
##
## Welch Two Sample t-test
##
## data: dat$x by dat$group
## t = 1.2662, df = 18.715, p-value = 0.221
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -21.87858 88.71259
## sample estimates:
## mean in group 0 mean in group 1
## 160.2632 126.8462
Что содержит выдача?
1. t
— наблюдаемое значение статистики критерия, считается так:
\[ t = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}, \] где \(\bar{x_1}\) и \(\bar{x_2}\) — средние арифметические двух выборок, \(s_1^2\) и \(s_2^2\) — дисперсии двух выборок, \(n_1\) и \(n_2\) — количество наблюдений в двух выборках.
Посчитаем t «вручную» (но не без помощи R), используя информацию из выдачи и значения, посчитанные по датасету dat
.
group1 <- dat[dat$group == 0, ]$x
group2 <- dat[dat$group == 1, ]$x
var(group1); var(group2) # s1^2 и s2^2
## [1] 2906.094
## [1] 7066.474
length(group1); length(group2) # n1 и n2
## [1] 19
## [1] 13
Получаем:
\(\bar{x_1} = 160.2632\) (из выдачи по тесту);
\(\bar{x_2} = 126.8462\) (из выдачи по тесту);
\(s_1^2 = 2906.094\) (см выше);
\(s_2^2 = 7066.474\) (см выше);
\(n_1 = 19\) (см выше);
\(n_2 = 13\) (см выше).
Итог:
\[ t = \frac{160.2632 - 126.8462}{\sqrt{\frac{2906.094}{19} + \frac{7066.474}{13}}} \approx 1.2662. \]
Совпало!
2. df
— число степеней свободы t-распределения статистики, считается так (на ночь не смотреть, представлено как ответ на вопрос «откуда оно берется»):
\[ \text{df} = \frac{\big(\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}\big)^2}{\frac{s_1^4}{n_1^2(n_1-1)} + \frac{s_2^4}{n_2^2(n_2-1)}}. \]
Попробуем посчитать и сравнить со значением из выдачи.
\[ \text{df} = \frac{\big(\frac{2906.094}{19} + \frac{7066.474}{13}\big)^2}{\frac{2906.094^2}{19^2(19-1)} + \frac{7066.474^2}{13^2(13-1)}} = \frac{485150.2}{25922.5} \approx 18.715. \]
Совпало!
3. p-value
, то есть вероятность \(P(\text{T} > |\text{t}|) = P(\text{t} > |1.2662|)\) = 0.221. Так p-value больше любого конвенционального уровня значимости (0.01, 0.05 и 0.1), гипотезу о равенстве средних отвергаем, средние значения в двух группах не равны.
4. Выборочные средние, наши \(\bar{x}_1\) и \(\bar{x}_2\) (sample estimates
) и доверительный интервал для разности средних (95 percent confidence interval
).
T-test с равными дисперсиями
Проверяем равенство средних значений показателя x
из датасета dat
для двух групп, через ~
указана переменная группировки, плюс, дописана опция var.equal
:
t.test(dat$x ~ dat$group, var.equal = TRUE)
##
## Two Sample t-test
##
## data: dat$x by dat$group
## t = 1.3733, df = 30, p-value = 0.1798
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -16.27768 83.11169
## sample estimates:
## mean in group 0 mean in group 1
## 160.2632 126.8462
Выдача содержит те же самые показатели, что и в тесте выше, только статистика критерия вычисляется несколько иначе.
\[ t = \frac{\bar{x}_1 - \bar{x}_2}{s\sqrt{\frac{1}{n_1} +\frac{1}{n_2}}}, \]
где
\[ s = \sqrt{\frac{(n_1−1) \cdot s^2_1+(n_2−1) \cdot s^2_2}{n_1+n_2−2}}. \]
С df
проще: \(\text{df} = n_1 + n_2 - 2.\)
Можем опять все посчитать и свериться с выдачей.
\[ s = \sqrt{\frac{(19−1) \cdot 2906.094 + (13−1) \cdot 7066.474}{19+13−2}} \approx 67.604. \] \[ t = \frac{160.2632 - 126.8462}{67.604\sqrt{\frac{1}{19} +\frac{1}{13}}} \approx 1.373. \] И \(\text{df} = 19 + 13 - 2 = 30\).
Используется, когда распределение исследуемого количественного показателя не является нормальным хотя бы в одной из групп.
Нулевая гипотеза, которая проверяется с помощью данного критерия:
\[ H_0: \text{выборки взяты из одного распределения} \] Альтернативная гипотеза:
\[ H_1: \text{выборки взяты из разных распределений} \] Иногда гипотезы выше формулируют иначе и говорят о равенстве (неравенстве) медиан генеральных совокупностей.
Статистика критерия имеет распределение Уилкоксона, но при больших объемах выборок (более 30 наблюдений в каждой) можно перейти к стандартизованной статистике, которая будет иметь стандартное нормальное распределение (z-распределение).
wilcox.test(dat$x ~ dat$group)
## Warning in wilcox.test.default(x = c(110, 175, 105, 245, 62, 95, 123,
## 123, : cannot compute exact p-value with ties
##
## Wilcoxon rank sum test with continuity correction
##
## data: dat$x by dat$group
## W = 176, p-value = 0.0457
## alternative hypothesis: true location shift is not equal to 0
1. W
здесь — наблюдаемое значение статистики критерия, которое считается так:
\[ W = S_1 + S_2 + \dots + S_n, \] где \(S_1 \dots S_n\) — ранги наблюдений выборки большего размера, которые вычисляются по общей совокупности выборок. Другими словами мы «смешиваем» выборки, вычисляем ранги всех наблюдений, потом из них выбираем только те, которые относятся к большей выборке и их суммируем. Единственное, тот метод, который используется в R, еще вычитает из суммы рангов минимальное возможное значение ранга:
\[ W = S_1 + S_2 + \dots + S_n - \frac{n_1(n_1 + 1)}{2}, \] где \(n_1\) — число элементов в большей выборке.
Посчитаем все в полуавтоматическом режиме:
two_groups <- c(group1, group2) # склеили выборки (общая совокупность выборок)
rank(two_groups) # посчитали ранги
## [1] 13.0 21.0 10.0 29.5 2.0 8.0 16.5 16.5 24.0 24.0 24.0 26.0 27.0 28.0
## [15] 9.0 18.5 18.5 29.5 21.0 13.0 13.0 7.0 4.5 1.0 3.0 4.5 6.0 15.0
## [29] 31.0 21.0 32.0 11.0
rank(two_groups)[1:19] # выбрали только ранги для 1ой выборки, она больше, 19 наблюдений
## [1] 13.0 21.0 10.0 29.5 2.0 8.0 16.5 16.5 24.0 24.0 24.0 26.0 27.0 28.0
## [15] 9.0 18.5 18.5 29.5 21.0
sum(rank(two_groups)[1:19]) # суммировали
## [1] 366
sum(rank(two_groups)[1:19]) - 19 * (19 + 1) / 2 # вычли минимально возможный ранг
## [1] 176
Значение совпало с тем, что было в выдаче (W = 176
)!
2. p-value
— вероятность \(P(W > 176)\). Здесь p-value менее 0.05, поэтому на 5% уровне значимости нулевую гипотезу стоит отвергнуть. Выборки взяты из разных распределений — различия в распределениях по группам есть.