Приведите пример, как бы вы проверили гипотезу в данных.
Проверка гипотезы — это один из ключевых этапов аналитики данных, позволяющий оценить, есть ли статистически значимые различия или взаимосвязи в наблюдаемых данных. Ниже приведён максимально подробный пример, как проверить гипотезу на практике с использованием реальных методов анализа.
ЗАДАЧА:
Допустим, мы хотим проверить гипотезу:
Пользователи, которые видят новую версию сайта (группа B), проводят на сайте больше времени, чем пользователи старой версии (группа A).
1. Сформулируем гипотезы
В статистике проверяется нулевая гипотеза (H₀) и альтернативная гипотеза (H₁):
- H₀ (нулевая гипотеза): среднее время на сайте в группах A и B одинаковое
H0:μA=μBH₀: \mu_A = \mu_B - H₁ (альтернативная гипотеза): пользователи в группе B проводят больше времени
H1:μB>μAH₁: \mu_B > \mu_A
Это односторонний t-тест.
2. Сбор данных
Для проверки гипотезы нужно получить выборки для каждой группы. Например:
-
Группа A (контроль): старый интерфейс
-
Группа B (эксперимент): новый интерфейс
Каждая строка данных может содержать:
user_id | group | session_time_min |
---|---|---|
101 | A | 5.2 |
--- | --- | --- |
102 | B | 7.8 |
--- | --- | --- |
103 | A | 4.5 |
--- | --- | --- |
... | ... | ... |
--- | --- | --- |
3. Проведем предварительный анализ
-
Размеры выборок: примерно одинаковые (важно для t-теста)
-
Распределение session_time: нормальное или нет?
- Используем тест Шапиро–Уилка, график гистограммы или QQ-plot
-
Выбросы: Boxplot поможет их обнаружить
-
Среднее и стандартное отклонение: полезно для описательной статистики
4. Выбор статистического теста
Исходя из распределения:
-
Если данные нормально распределены и дисперсии одинаковы, используем:
- t-тест Стьюдента (Student’s t-test)
-
Если распределение сильно скошено, либо дисперсии не равны, либо выборки маленькие:
- **непараметрический тест Манна–Уитни (U-test)
**
- **непараметрический тест Манна–Уитни (U-test)
5. Проведение теста (на Python)
import pandas as pd
from scipy import stats
\# Предположим, у нас есть DataFrame \`df\`
group_A = df\[df\['group'\] == 'A'\]\['session_time_min'\]
group_B = df\[df\['group'\] == 'B'\]\['session_time_min'\]
\# Проверка на нормальность
stats.shapiro(group_A) # Если p > 0.05 — нормальное
stats.shapiro(group_B)
\# Проверка на равенство дисперсий
stats.levene(group_A, group_B)
\# T-тест (односторонний)
t_stat, p_val = stats.ttest_ind(group_A, group_B, equal_var=True)
\# Преобразуем p-value к одностороннему
p_val /= 2
print(f"T-статистика: {t_stat}, p-value: {p_val}")
6. Интерпретация результатов
-
Если p-value < 0.05, то мы отвергаем H₀ в пользу H₁, то есть новый интерфейс действительно увеличивает время на сайте.
-
Если p-value ≥ 0.05, у нас нет оснований отвергнуть H₀, то есть различия статистически незначимы.
7. Оценка мощности теста (Power Analysis)
Важно понимать, насколько велика вероятность обнаружить эффект, если он действительно существует.
-
Используется для оценки достаточности размера выборки.
-
Например, с помощью библиотеки statsmodels можно рассчитать:
from statsmodels.stats.power import TTestIndPower
effect_size = 0.5 # ожидаемый размер эффекта (можно оценить по пилотным данным)
alpha = 0.05
power = 0.8
analysis = TTestIndPower()
sample_size = analysis.solve_power(effect_size=effect_size, alpha=alpha, power=power)
print(f"Необходимый размер выборки на каждую группу: {sample_size}")
8. Дополнительно — Визуализация
Для лучшего восприятия разницы между группами строим:
-
Boxplot — сравнение распределений
-
Histogram — наложение двух гистограмм
-
Bar chart с доверительными интервалами — для средних значений
9. Проверка других гипотез (расширение)
-
Проверка по другим сегментам: по странам, устройствам, времени суток
-
Проверка на возврат пользователей, CTR, конверсии и т. д.
-
Построение доверительных интервалов:
CI=xˉ±z⋅σnCI = \bar{x} \pm z \cdot \frac{\sigma}{\sqrt{n}}
10. Ошибки, которых следует избегать
-
Использовать t-тест при неравенстве дисперсий без Welch’s коррекции
-
Проверять множество гипотез без корректировки (например, Bonferroni)
-
Злоупотреблять p-value и интерпретировать результат без учёта контекста
-
Сравнивать медианы t-тестом (используйте U-test)
Таким образом, процесс проверки гипотезы — это строго формализованная процедура, требующая понимания статистики, характера данных, выбора корректного теста и правильной интерпретации результата. Это основа A/B-тестирования, продуктовой аналитики и бизнес-решений, принимаемых на основе данных.