Приведите пример, как бы вы проверили гипотезу в данных.

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

ЗАДАЧА:

Допустим, мы хотим проверить гипотезу:
Пользователи, которые видят новую версию сайта (группа 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)
      **

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-тестирования, продуктовой аналитики и бизнес-решений, принимаемых на основе данных.