Что проверяют статистические тесты?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Статистические тесты: назначение и сущность
Статистические тесты — это один из фундаментальных инструментов в работе Data Scientist. Они позволяют принимать обоснованные решения на основе данных и минимизировать вероятность ошибок.
Основная цель
Статистические тесты проверяют гипотезы о данных. Они отвечают на вопрос: "Является ли наблюдаемое различие статистически значимым или это просто случайная флуктуация?"
Нулевая и альтернативная гипотезы
Каждый тест работает с двумя гипотезами:
- H₀ (нулевая гипотеза) — предположение, что эффекта нет (различия случайны)
- H₁ (альтернативная гипотеза) — предположение, что эффект существует
Тест либо отклоняет H₀, либо не отклоняет её. Это не означает, что H₀ верна — просто недостаточно доказательств против неё.
Ключевые концепции
P-value (p-значение) Вероятность получить такой же или более экстремальный результат при условии, что H₀ верна. Если p < α (обычно 0.05), отклоняем H₀:
from scipy import stats
import numpy as np
# Пример: сравнение двух выборок
group1 = np.array([1.2, 1.5, 1.3, 1.6])
group2 = np.array([1.8, 2.1, 1.9, 2.2])
# t-тест
t_statistic, p_value = stats.ttest_ind(group1, group2)
print(f"p-value: {p_value:.4f}")
if p_value < 0.05:
print("Различия статистически значимы")
else:
print("Различия не значимы")
Уровень значимости (α) Порог, при котором мы готовы отклонить H₀. Стандартно α = 0.05 (5% риск ошибки первого рода).
Типы ошибок
| Ошибка | Описание |
|---|---|
| Type I (α) | Отклонили H₀, хотя она верна (ложноположительный результат) |
| Type II (β) | Не отклонили H₀, хотя она ложна (ложноотрицательный результат) |
Основные тесты в DS
1. t-тест (сравнение средних)
# Одна выборка vs известное значение
stats.ttest_1samp(data, 0)
# Две независимые выборки
stats.ttest_ind(group1, group2)
# Две зависимые выборки (парный тест)
stats.ttest_rel(before, after)
2. ANOVA (сравнение трёх и более групп)
group1, group2, group3 = [1,2,3], [2,3,4], [3,4,5]
f_stat, p_value = stats.f_oneway(group1, group2, group3)
3. Тест хи-квадрат (категориальные данные)
# Проверка независимости категорий
contingency_table = np.array([[10, 20], [15, 25]])
chi2, p_value, dof, expected = stats.chi2_contingency(contingency_table)
4. Mann-Whitney U тест (непараметрический аналог t-теста)
# Когда данные не нормальны
stats.mannwhitneyu(group1, group2)
Допущения тестов
Это критично! Разные тесты требуют разные условия:
- Нормальность (для t-теста): данные распределены нормально
- Гомогенность дисперсий: дисперсии в группах одинаковы
- Независимость: наблюдения независимы друг от друга
Если допущения нарушены, используй непараметрические тесты (Mann-Whitney, Kruskal-Wallis).
Практические примеры
A/B тестирование:
# Конверсия контрольной и тестовой группы
control_conversions = 45
control_users = 1000
test_conversions = 55
test_users = 1000
# Тест пропорций
from statsmodels.stats.proportion import proportions_ztest
stat, pval = proportions_ztest([test_conversions, control_conversions],
[test_users, control_users])
Выводы
Статистические тесты — это не просто числа в отчёте. Они помогают:
- Валидировать гипотезы перед дорогостоящими решениями
- Оценивать значимость различий между группами
- Контролировать ошибки при множественном тестировании
- Принимать обоснованные решения под неопределённостью
В работе всегда проверяю допущения тестов, учитываю размер выборки и применяю поправки для множественного тестирования (Bonferroni, FDR).