В параграфе 2.2 мы поговорили об описательных статистиках: среднем, медиане и моде. С их помощью мы можем проверить, есть ли различия между разными группами наблюдений. Но насколько они важны — мы не узнаем.
Чтобы это выяснить, мы должны использовать статистические тесты. Какие они бывают и как их проводить — расскажем в этом параграфе.
А ещё поговорим о проверке допущений (без неё у нас не получится применить некоторые статистические тесты) и правильном формулировании гипотез.
Прежде чем мы начнём, два важных нюанса:
- В этом параграфе мы дадим теорию, все вычисления будут в Python в следующем параграфе. Теория важна, чтобы вы лучше представляли, что происходит «под капотом».
- Этот параграф сложнее предыдущих. Но вы справитесь!
Статистические гипотезы
Прежде чем говорить о статистических тестах, поговорим о статистических гипотезах — потому что их мы, собственно, и проверяем тестом.
🔍 Статистическая гипотеза — это предположение о распределении переменной, которое может быть верным или нет.
Сейчас будет чуточку запутанно: статистическая гипотеза состоит из двух гипотез — нулевой и альтернативной.
- Нулевая гипотеза указывает на отсутствие различий в сравниваемых группах.
- Альтернативная гипотеза, наоборот, утверждает, что различия есть.
Предположим, мы хотим проверить, есть ли связь между количеством опубликованных художественных книг и гендером автора. В этом исследовании наша статистическая гипотеза будет выглядеть так:
- Нулевая гипотеза — при публикации художественной книги издателям безразличен гендер автора.
- Альтернативная гипотеза — при публикации художественной книги издатели предпочитают либо авторов-мужчин, либо авторов-женщин.
Как вы могли заметить, они сформулированы так, что противоречат друг другу. Нам нужно выбрать одно из них. В ситуации выбора между А и Б, работает закон исключённого третьего из формальной логики: «Если есть два противоречащих друг другу суждения, то одно из них истинное, а другое — ложное». И наоборот.
Проще говоря, мы выбираем либо орла, либо решку. Третьего не дано по условию. И его не может существовать для нашей ситуации. Когда мы проводим статистический тест, то либо отвергнем нулевую гипотезу, либо нет. Например:
- Мы не можем сказать, что издателям безразличен гендер автора (отвергли нулевую гипотезу).
- Издателям безразличен гендер автора (приняли нулевую гипотезу).
Однако мы можем сделать выбор между двумя вариантами неправильно и совершить одну из двух ошибок:
- Ошибка первого рода: мы указываем, что различия есть (хотя их нет) — и отвергаем нулевую гипотезу, переключаясь на альтернативную.
- Ошибка второго рода: мы указываем, что различий нет (хотя они есть) — и отвергаем альтернативную гипотезу, переключаясь на нулевую.
В нашем примере ошибка первого рода — исследователь утверждает, что различия есть, но на самом деле издатели равнодушны к гендеру автора. Ошибка второго рода — исследователь утверждает, что различий нет, но на самом деле издатели больше предпочитают писательниц или писателей.
Совершив одну из этих ошибок, мы придём к неправильным выводам в нашем исследовании. Поэтому старайтесь аккуратнее подходить к формулированию гипотез и подбору данных.
И последнее, о чём тут стоит сказать, — мы делаем выводы только о нулевой гипотезе. То есть наша задача — проверить нулевую гипотезу, а не подтвердить альтернативную. Чуть задержитесь на этой мысли, это одна из двух важнейших вещей при работе с данными.
Статистические тесты
Теперь — к статистическим тестам. Это строгое математическое правило, по которому принимается или отвергается статистическая гипотеза.
Проведение статистического теста состоит из следующих шагов:
- подготовка таблиц с данными;
- проверка нормальности распределения (только для параметрических тестов — об этом ниже);
- формулирование гипотез;
- вычисления.
Тесты бывают параметрические и непараметрические. Если мы уверены, что данные распределены нормально, — можем проводить параметрические тесты. Если нет — то непараметрические.
Например, мы хотим сравнить между собой средние оценки двух книжных серий. В одной опубликовано десять книг, в другой — четыре. Мы не знаем, распределены ли данные нормально, так как наша выборка — меньше 30 наблюдений (почему количество наблюдений важно, мы говорили в параграфе 3.1). Поэтому мы выбираем непараметрический тест.
Но обо всём по порядку. Давайте теперь посмотрим, какие тесты бывают, что они проверяют и когда применяются.
Биномиальный тест
- Тип: непараметрический.
- Применяется: когда у нас есть некоторое предположение о том, как часто должно случаться событие, и мы хотим его проверить.
- Данные: переменная, которая принимает два значения.
- Нулевая гипотеза: нет разницы между фактическим и ожидаемым распределением.
Попробуем начать с очень простого теста. Представим, что мы решили подкидывать монетку и фиксировать количество выпадений орла или решки. Вероятность того, что выпадет орёл, равна вероятности выпадения решки, если наша монетка не деформирована. Поскольку каждый результат подкидывания монетки не влияет на предыдущий, то теоретически вероятность выпадения орла или решки всегда будет одинакова.
Это теоретическое ожидание, которое мы можем проверить с помощью теста. Для этого нам нужно подкинуть монетку много раз, записать результат и сравнить получившееся распределение с теоретическим.
Эту идею мы можем использовать для сравнения размера двух групп между собой. Вернёмся к вопросу о гендерном равенстве писателей.
Напомним наши гипотезы:
- Нулевая гипотеза — при публикации художественной книги издателям безразличен гендер автора.
- Альтернативная гипотеза — при публикации художественной книги издатели предпочитают либо авторов-мужчин, либо авторов-женщин.
Предположим, что из 100 000 писателей, которые стремились опубликовать книгу, было 70 000 мужчин и 30 000 женщин. При этом у нас есть точные данные, что в итоге опубликовались 250 человек: 150 авторов-мужчин и 100 женщин.
Для выполнения теста нам нужно три показателя: число мужчин, опубликовавших книгу, общее число опубликовавшихся и ожидаемая нами вероятность события. Мы могли бы привести формулу, но она вам вряд ли пригодится — все вычисления за вас сделает Python. Мы поговорим об этом подробно в параграфе 3.3. Пока просто покажем, как выглядит результат вычислений.
>>> binomtest(bins[0], bins[1])
BinomTestResult(k=150, n=100, alternative='two-sided', statistic=0.7741935483870968, pvalue=5.98961404210972e-23)
Одним из итогов теста станет показатель под названием p-value. В нашем случае он равен 5.98e-23
.
p-value — это вероятность получить наши данные в реальности, где нулевая гипотеза верна.
Вас может смутить добавление e-23
, но это просто значит, мы должны умножить 5.98
на 10 в степени -23
. Если округлить, у нас получится очень маленькое число, меньше 0.002
.
В нашем тесте нулевая гипотеза — издателям безразличен гендер автора. Если различий действительно нет, то вероятность получить именно такие данные для этого теста меньше 0.2%. Для сравнения: вероятность выиграть в лотерею сумму больше 100 тысяч рублей в 10 раз меньше (0.002%).
Поэтому у нас есть два варианта для интерпретации результатов теста:
- отличий действительно нет, просто у нас каким-то чудом получилось вот такое вот распределение;
- отличия есть.
Если p-value
меньше 0.05, то мы не можем принять нулевую гипотезу. Почему именно 0.05? Потому что о таком пороге договорились статистики. Для нас этого достаточно, но есть и более строгий порог (0.01) — его применяют в медицинских исследованиях и в исследованиях, где нужна большая статистическая точность.
Результат нашего теста меньше 0.05. Значит, правильный вариант для интерпретации — №2: при публикации художественной книги издатели предпочитают либо авторов-мужчин, либо авторов-женщин.
Важно:
p-value
не позволяет нам сказать, с какой вероятностью верна нулевая гипотеза.
Это самая частая ошибка в его интерпретации.
Этот показатель оценивает вероятность результата статистического теста в альтернативной реальности, а не нулевую гипотезу в нашей.
Расчёт p-value
применяется и в других тестах — в качестве оценки значимости различий теста. То есть имеет ли значение результат теста, или нет.
T-test
- Тип: параметрический.
- Применяется: когда нужно понять, есть ли различия в среднем значении переменной между двумя группами наблюдений.
- Данные: должны состоять из двух переменных — по одной переменной они делятся на две группы, по другой — сравниваются между собой.
- Нулевая гипотеза: средние значения переменной в двух группах не отличаются значимо.
Группа наблюдений — это наблюдения с одной общей фиксированной переменной. Допустим, мы собрали данные о домашних животных, потом разделили их на котиков и собачек и теперь с помощью T-теста сравниваем, есть ли различия в том, сколько корма в среднем они едят. В этом случае фиксированной переменной будет видовая принадлежность, а переменной для сравнения — среднее количество корма.
Вот как выглядят наши данные:
Имя |
Вид |
Количество корма |
Барсик |
Кошка |
40 |
Пушок |
Кошка |
55 |
Бобик |
Собака |
320 |
Барбос |
Собака |
450 |
Апполинарий |
Кошка |
60 |
Что ещё можно проверить с помощью T-теста:
- различаются ли средние оценки художественных книг на английском языке по сравнению с оценками художественных книг вообще;
- насколько в среднем пациенты, которые сделали лазерную операцию на глаза, стали лучше видеть по сравнению с теми, кто не делал операцию;
- отличается ли среднее расстояние поездки в такси пассажиров с детьми и без.
Любопытный факт: T-тест — это основа для a/b-теста в маркетинге и продакт-менеджменте.
Продолжим. Прежде чем проводить T-тест, необходимо проверить, что переменная для оценки:
- непрерывна (например, количество корма);
- распределена близко к нормальному;
- обладает незначительными различиями в дисперсии между двумя группами наблюдений.
Сейчас расскажем, как проверить эти допущения.
Интерпретация тестов для проверки допущений T-теста
Эти допущения мы можем проверить с помощью дополнительных тестов. В каждом из них мы также будем формулировать нулевую и альтернативную гипотезу и отбрасывать их с помощью p-value (то есть результата биномиального теста, о котором мы говорили выше).
В качестве примера проверим, отличаются ли значимо средние оценки у книг, опубликованных в двух издательствах.
Издательство |
Название |
Рейтинг (по десятибалльной шкале) |
Первое издательство |
О людях и блинах |
6.9 |
Первое издательство |
Беспощадный срок |
6.81 |
|
|
|
Второе издательство |
Разум и мы |
7.27 |
Второе издательство |
Пыльца |
7.0 |
Полный список оценок книг:
- для первого издательства:
6.9, 6.81, 7.19, 7.11, 7.2, 6.82, 7.07, 7.11, 6.77, 6.82
; - для второго издательства:
7.28, 6.84, 7.1, 7.06, 7.36, 7.15, 7.41, 6.85, 7.27, 7.0
.
Наша переменная (средние оценки книг) непрерывна. Это мы можем сказать сразу — ✅.
Для проверки нормальности распределения оценок мы вычислим критерий Шапиро — Уилка. Он нужен, чтобы оценивать нормальность распределения с помощью статистического показателя, а не графика. Нулевая гипотеза в критерии Шапиро — Уилка: переменная распределена нормально.
Как вы помните, если мы получаем значение p-value больше 0.05
, то мы не можем отклонить нулевую гипотезу.
>>> shapiro(books)
ShapiroResult(statistic=0.038640296459198, pvalue=0.22597427666187286)
По итогам теста у нас получился p-value = 0.22597427666187286. Это больше, чем 0.05. Это значит, что мы не можем отвергнуть нулевую гипотезу и оценки книг распределены нормально — ✅.
Для проверки равенства дисперсий вычислим критерий Левене. Нулевая гипотеза для этого критерия звучит так: дисперсии в двух выборках не имеют значимых различий.
>>> levene(books_1, books_2)
LeveneResult(statistic=0.02724978973927725, pvalue=0.87072462456245680289)
После вычисления критерия мы получим значение p-value 0.87
.
Мы видим, что на основании p-value (0.87 > 0.05
) не можем отвергнуть нулевую гипотезу, поэтому считаем, что дисперсии в двух выборках не имеют значимых различий — ✅.
Все наши допущения выполнены, можем переходить к T-тесту.
Интерпретация T-теста
Напомним, нам нужно проверить, отличаются ли значимо средние оценки у книг, опубликованных в двух издательствах. Для теста наша нулевая гипотеза будет звучать так: средние оценки книг между издательствами не отличаются значимо.
>>> ttest_ind(books_1, books_2)
Ttest_indResult(statistic=-1.8255194645549253, pvalue=0.08456129574674251)
В результате теста мы получили p-value, равный 0.08. Мы его оцениваем так же, как и в остальных случаях: 0.08 > 0.05, значит, мы не можем отвергнуть нулевую гипотезу. В случае T-теста это означает, что значимых различий в средних оценках нет.
Последнее, о чём тут стоит сказать, — существует три вида T-теста:
Вид теста |
Пример |
Cравнение средних в независимых группах |
Cредние оценки книг в двух не связанных между собой издательствах |
Cравнение средних в связанных группах |
Cредние оценки книг в одном издательстве до того, как оно потратило 10 млн рублей на рекламу и после |
Cравнение среднего одной группы с фиксированным показателем |
Cредние оценки книг в издательстве по сравнению со всеми опубликованными книгами |
Какой выбрать вам — зависит от целей исследования. Подробнее о том, как проводить разные виды T-теста, мы расскажем в параграфе 3.3.
ANOVA
- Тип: параметрический.
- Применяется: когда нужно понять, есть ли различия в среднем значении какой-то переменной, когда групп наблюдений больше чем две.
- Данные: должны состоять из двух переменных — категориальной, по которой они делятся на несколько групп, и непрерывной, по которой сравниваются между собой.
- Нулевая гипотеза: между группами нет значимого различия в средних проверяемой непрерывной переменной.
На пальцах: фактически это тот же T-тест, но применять его нужно, когда групп наблюдения у нас больше двух. То есть если бы к нашим котикам и собачкам добавились черепашки, то для оценки количества съеденного корма мы бы использовали ANOVA. Кстати, эта аббревиатура расшифровывается как ANalysis Of VAriance — «анализ дисперсии средних оценок».
🔍 Анализ дисперсии — определение соотношения межгрупповой дисперсии к внутригрупповой дисперсии в измеряемых данных.
В таком случае наша нулевая гипотеза предполагает, что нет различий в дисперсии между средним внутри групп и между группами. Альтернативная предполагает, что они есть.
Давайте сравним оценки книг в четырёх издательствах.
Структура данных остаётся такой же, как в прошлом примере, но мы добавим ещё два издательства. Полный список оценок книг:
- для первого издательства:
6.9, 6.81, 7.19, 7.11, 7.2, 6.82, 7.07, 7.11, 6.77, 6.82
; - для второго издательства:
7.28, 6.84, 7.1, 7.06, 7.36, 7.15, 7.41, 6.85, 7.27, 7.0
; - для третьего издательства:
6.52, 6.62, 6.7, 6.85, 6.54, 6.34, 6.65, 7.18, 6.85, 6.58
; - для четвертого издательства
6.49, 6.95, 6.78, 6.8, 6.84, 6.72, 6.82, 6.68, 6.79, 6.74
.
Прежде чем применять тест ANOVA, необходимо помнить о тех же трёх допущениях, что и для T-теста, а также о независимости между групп. Чтобы сразу перейти к тесту, скажем:
- наша переменная непрерывна;
- распределение оценок нормально;
- значительных различий в дисперсии нет;
- сравниваем не зависящие друг от друга издательства.
>>> f_oneway(books_1, books_2, books_3, books_4)
F_onewayResult(statistic=-12.231145872048861, pvalue=1.1325420074774385e-05)
В результате теста мы получили p-value, равный 1.14e-5
. Мы его оцениваем так же, как и в остальных случаях: 1.14e-5 < 0.05, значит, мы не можем подтвердить нулевую гипотезу. В случае ANOVA это означает, что есть различия в дисперсии между средними внутри групп. Нам остаётся только сравнить их между собой с помощью попарного теста.
Типы ANOVA различаются по количеству независимых переменных. Можно выделить:
- однофакторный дисперсионный анализ (с одной независимой переменной) ← его мы только что провели;
- двухфакторный дисперсионный анализ (с двумя независимыми переменными).
Итак, мы разобрали, что такое статистические гипотезы и как устроены статистические тесты. Теперь вы знаете, как сравнивать среднее и дисперсию между разными группами и умеете интерпретировать статистические показатели этих тестов. Это очень большой шаг вперёд, потому что тесты из этого параграфа используются в статистике чаще всего — плюс они применяются в других тестах.
Переходите к следующему параграфу — в ней мы научимся выполнять эти тесты в Python.