Добавить в корзинуПозвонить
Найти в Дзене
Герман Геншин

Ваша статистика на грани провала? Узнайте за пару минут, можно ли ей доверять с помощью этого простого Python-приёма!

Данных мало — важно понять, несут ли они в себе реальный смысл. Буквально несколько строк на Python позволят быстро отличить: различия между группами случайны или за ними действительно стоит нечто важное? Проверка гипотез — это способ с помощью статистики понять: ваши результаты — просто совпадение или за ними стоит нечто существенное? Такой подход позволяет беспристрастно сравнивать выборки и выяснять, есть ли серьёзная разница между ними. Обычно исследование начинается с так называемой нулевой гипотезы, которая утверждает, что никаких различий нет. Дальше главная задача — найти основания, чтобы её отвергнуть в пользу альтернативной, в которой различия уже есть. Это почти как в суде: пока нет доказательств обратного, все считают подсудимого невиновным. Так и тут: пока статистика не сказала “да”, мы считаем, что разные группы одинаковы. Простой пример из жизни: тестируют новое лекарство. Одной группе дают плацебо, другой — препарат. Потом сравнивают результаты (например, измеряют давл
Оглавление

Быстрая навигация

Данных мало — важно понять, несут ли они в себе реальный смысл. Буквально несколько строк на Python позволят быстро отличить: различия между группами случайны или за ними действительно стоит нечто важное?

Что такое проверка гипотез?

Проверка гипотез — это способ с помощью статистики понять: ваши результаты — просто совпадение или за ними стоит нечто существенное? Такой подход позволяет беспристрастно сравнивать выборки и выяснять, есть ли серьёзная разница между ними.

Обычно исследование начинается с так называемой нулевой гипотезы, которая утверждает, что никаких различий нет. Дальше главная задача — найти основания, чтобы её отвергнуть в пользу альтернативной, в которой различия уже есть. Это почти как в суде: пока нет доказательств обратного, все считают подсудимого невиновным. Так и тут: пока статистика не сказала “да”, мы считаем, что разные группы одинаковы.

Простой пример из жизни: тестируют новое лекарство. Одной группе дают плацебо, другой — препарат. Потом сравнивают результаты (например, измеряют давление) и уже на основе чисел решают — действительно ли лекарство работает.

Если раньше замучились бы формулами и таблицами из учебников, то сегодня всё решается одной командой в Python — и именно поэтому для анализа данных он стал таким популярным.

Проверяют гипотезы при определённом уровне значимости — альфа. Например, если принять вероятность ошибки в 5% (то есть доверять результату на 95%), берём альфа = 0,05. Если уровень доверия нужен повыше — 99%, ставят альфа = 0,01. Если полученное p-значение меньше альфа, значит, есть причина схватиться за голову и отвергнуть нулевую гипотезу. То есть при доверии 95% отвергаем, если p < 0,05; при 99% — если p < 0,01.

Есть два варианта промахнуться: ошибка первого рода — случай, когда отвергаем правильную гипотезу, и ошибка второго рода, если, наоборот, оставляем без внимания настоящие отличия. Например, если отклонить реально верную нулевую гипотезу — это ошибка первого рода, а если проглядеть настоящие различия — это уже вторая ошибка.

Такие промахи бывают дорогими: можно принять опасное лекарство за полезное. Лучший способ снизить риск — использовать как можно больше данных.

Очень важно заранее продумать и чётко сформулировать обе гипотезы и выбрать подходящий уровень значимости, а не “подгонять” их под свои ожидания!

Зачем нужны статистические тесты?

Спросить “а что у меня тут есть?” у “сырых” данных напрямую не выйдет — просто по таблице не понять, случай это или настоящая закономерность. Перед выпуском нового лекарства потребуется доказать его эффективность — без статистики такой шанс не дадут. Так же и в бизнесе: если хочется узнать, покупают ли клиенты один товар вместе с другим — без тестов не разобраться.

Статистические тесты — это не просто формулы, а инструмент для адекватного и аргументированного понимания данных.

t-тест Стьюдента

На вводных лекциях по статистике любят приводить в пример нормальное распределение — ту самую “колоколообразную” кривую. В реальности этот подход редко применим: чтобы использовать его напрямую, надо знать стандартное отклонение всей совокупности, а это почти никогда недоступно, да и объёмы данных обычно недостаточны.

В повседневных задачах, если распределение хотя бы напоминает нормальное, используют t-тест Стьюдента. Обычно с его помощью проверяют, равно ли среднее по группе какому-то значению, или отличаются ли средние у двух независимых выборок.

t-тест с Python проще всего провести с помощью библиотеки Pingouin.

Давайте попробуем это на практике: сгенерируем с помощью NumPy массив из 15 случайных чисел и быстро проверим гипотезу.

Все шаги можно повторить в Jupyter Notebook — код выложен на GitHub. Для начала создадим массив из 15 значений с нормальным распределением.

В t-тесте предполагается, что данные действительно распределены нормально. В нашем примере так и есть — мы специально сгенерировали их именно так. А вот для реальных данных нужно это проверить дополнительно — здесь пригодится тест Шапиро–Уилка (он тоже есть в Pingouin и отлично работает с небольшими наборами).

-2

Теперь проверим, что среднее нашего массива — 0,45. Используем Pingouin:

Получили p-значение 0,99, то есть никакой причины отвергать нулевую гипотезу ни при альфа 0,05, ни при 0,01 нет.

Линейная регрессия

О линейной регрессии слышали почти все: берём точки — рисуем через них прямую. Но не все знают, что за этой прямой стоит конкретный статистический тест. Pingouin для модели регрессии сразу показывает t-статистику и p-значение. Проверяем гипотезу: а вдруг коэффициент наклона равен нулю, то есть линия совсем плоская? Если p-значение мало (а тут оно в научном формате), нулевую гипотезу отвергают.

Для наглядности воспользуемся библиотекой Seaborn — у неё есть интересный набор реальных данных о чаевых в ресторанах Нью-Йорка. Давайте его подгрузим:

Сначала посмотрим на структуру: используем head — получаем DataFrame из pandas, по сути ту же таблицу из SQL.

-3

Теперь построим график: разброс точек — чаевые по оси Y, сумма счёта по X. Проведём по этим точкам линию регрессии.

-4

Видим отличную “сцепку” данных с прямой.

Теперь формально это докажем — используем функцию linear_regression из Pingouin, для удобства округлим результаты:

-5

t-статистика и p-значение не оставляют шансов нулевой гипотезе: чем дальше коэффициент от нуля, тем выше t. Здесь t=14,26, p-значение почти ноль — разница есть и она однозначно значима.

ANOVA

Если t-тест — это сравнение средних, а регрессия — поиск связей, то ANOVA (анализ дисперсии) отвечает на вопрос: влияет ли категория (например, вид животного) на некоторую характеристику? Давайте разберёмся: c помощью Pingouin проверим, одинаковая ли длина ласт у разных видов penguin-ов. Нулевая гипотеза — у всех видов длина ласт одинакова.

-6

Здесь p=0 — нулевая гипотеза не проходит, вид penguin-а действительно влияет на длину ласты.

Непараметрические тесты

Во многих классических тестах предполагается определённое распределение данных (обычно нормальное — как у t-теста). Но на практике статистика редко бывает “идеальной”, особенно если речь о людях и их поведении. Для таких случаев есть непараметрические тесты — они не требуют выполнения строгих условий.

Например, тест Манна–Уитни — альтернатива t-тесту для случаев, когда о нормальном распределении остаётся только мечтать. Такой тест тоже есть в Pingouin — давайте сгенерируем пару случайных выборок и попробуем его в деле.

Теперь сравним средние значения этих двух выборок с помощью теста Манна–Уитни:

-7

Когда нельзя использовать обычную ANOVA, есть её непараметрический аналог — тест Крускала–Уоллиса. Покажу всё на примере с penguin-ами:

Результат тот же: вид penguin-а влияет на длину ласт, и это реально значимо.

Вот так просто статистические тесты на Python за несколько минут докажут, насколько вашим данным можно доверить судьбу бизнеса или жизни. Проверить всё — проще простого!

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: