Проверка гипотез на python
С каждым днем количество данных становится больше и больше. И как говорится, чем больше ты знаешь, тем больше ты задаешь вопросов, и тем больше ты хочешь получить ответов. Получить ответы на основе данных можно с помощью статистики. А именно, если требуется что-то сравнить, поможет проверка статистических гипотез.
Что же такое статистическая гипотеза. Приведём определение из Википедии.
Статистическая гипотеза — предположение о виде распределения и свойствах случайной величины, которое можно подтвердить или опровергнуть применением статистических методов к данным выборки.
Случайная величина, например, среднее, берется из выборки, которая тоже должна быть взята случайно и в ней должно быть от 30 элементов. Если выборка берется не случайно, то и данные будут не достоверные. Значение в 30 элементов это научно доказанный факт, так как начиная от 30 выборочные среднее и дисперсия близки к реальному среднему и дисперсии генеральной совокупности.
В общем виде алгоритм проверки выглядит следующим образом:
1. Формулировка основной гипотезы Н₀ и альтернативной гипотезы Н₁;
2. Задание уровня значимости α;
Определение уровня значимости довольно большая тема, поэтому обозначим кратко основные моменты.
Есть стандартные уровни значимости 0,1; 0,05; 0,01; 0,001.
И условно их можно выбирать так. Если объем выборки небольшой до 100 единиц, то можно вполне отвергнуть нулевую гипотезу при уровне значимости 0,05 или даже 0,1. При объеме выборки, измеряемой сотнями – от 100 до 1000, следует понизить уровень значимости хотя бы до 0,01. А при больших выборках, измеряемых тысячами наблюдений, уверенно отвергать нулевую гипотезу можно только при значимости меньшей 0,001.
В целом же для каждой конкретной задачи нужно смотреть на данные и подбирать уровень значимости, который в лучшей мере подойдет для этих данных.
3. Выбор статистического критерия;
4. Определения правила принятия решения;
5. Принятие решения на основе данных.
Теперь проведем тест на Python используя библиотеку scipy.stats.
Гипотеза: средние показатели переменных различаются.
- Сформулируем нулевую гипотезу (Н₀). Среднее значение тарифов тариф_1 и тариф_2 одинаковое.
- Сформулируем альтернативную гипотезу (Н₁). Среднее значение тарифов тариф_1 и тариф_2 разное.
Для примера возьмем распределение для тарифа_1 в виде data_1, а для тарифа_2 в виде data_2
Будем использовать следующие данные для проверки гипотез.
В нашем примере будем использовать α = 0.05
Первым тестом для проверки будет тест Шапиро-Уилка.
Тест оценивает набор данных и дает количественную оценку вероятности того, что данные были получены из Гауссовского (нормального) распределения.
Для теста используется формула:
Здесь S2 - сумма квадратов отклонений значений выборки от среднего арифметического:
Значение B2 находят по формуле:
Тест показал, что нормальность не соблюдается.
Следующий тест, тест Левена.
Логическая статистика, используемая для оценки равенства дисперсий для переменной, рассчитанной для двух или более групп. Некоторые распространенные статистические процедуры предполагают, что дисперсии популяций, из которых взяты различные выборки, равны. Тест Левена оценивает это предположение. Он проверяет нулевую гипотезу о том, что дисперсии популяции равны. Если результирующее p-значение теста Левена меньше некоторого уровня значимости (обычно 0.05), полученные различия в выборочных дисперсиях вряд ли имели место на основе случайной выборки из популяции с равными дисперсиями. Таким образом, нулевая гипотеза равных дисперсий отвергается и делается вывод о наличии разницы между дисперсиями в популяции.
Для теста используется формула:
Где:
k - это число различных групп, к которым принадлежат отобранные случаи,
N_i - это количество случаев в i группе,
N - это общее количество случаев во всех группах,
Y_ij - это значение измеряемой переменной для j случая из i группы,
Первое среднее по группе j
Второе медиана по группе i
Проверим гипотезу с помощью scipy.stats.ttest_ind, так как с его помощью можно сравнить средние двух совокупностей.
Тест показывает, что гипотеза Н₀ не подтверждена, следовательно, отвергаем нулевую гипотезу. Поэтому принимаем альтернативную гипотезу Н₁, cреднее значение тарифа_1 и тарифа_2 разное.
В статистике есть и другие тесты для проверки гипотезы, главное понять какой конкретный тест подходит для Ваших данных. И не допускать ошибок первого и второго рода. Так как вероятность принять неправильную гипотезу, Н₀, или отвергнуть правильную всегда есть. Поэтому тестов много, как и данных, найдите правильный тест для своих гипотез.