Что такое p-value и как его интерпретировать?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
# P-value и его интерпретация
Что такое p-value?
P-value — это вероятность получить наблюдаемый результат (или ещё более экстремальный) при условии, что нулевая гипотеза верна.
Формально: p-value = P(наблюдаемые данные | H0 верна)
Правильная интерпретация
✅ Правильно: "Если между группами нет разницы (H0 верна), вероятность увидеть такую разницу составляет 2%"
❌ Неправильно:
- "p = 0.02 означает 98% вероятность того, что мой результат верен"
- "p-value — это вероятность нулевой гипотезы"
- "p = 0.02 означает, что эффект на 98% существует"
Порог значимости
Стандартный порог: α = 0.05 (5%)
- Если p < 0.05 → отклоняем H0 (результат значим)
- Если p ≥ 0.05 → не отклоняем H0 (недостаточно доказательств)
Пример: A/B тест платёжной страницы
import numpy as np
from scipy.stats import chi2_contingency
# Данные
control_purchases = 95 # из 1000
treatment_purchases = 115 # из 1000
contingency_table = np.array([
[95, 905], # control: купили, не купили
[115, 885] # treatment: купили, не купили
])
chi2, p_value, dof, expected = chi2_contingency(contingency_table)
control_rate = 95/1000 # 9.5%
treatment_rate = 115/1000 # 11.5%
print(f"Control: {control_rate:.1%}")
print(f"Treatment: {treatment_rate:.1%}")
print(f"P-value: {p_value:.4f}")
Результат: p = 0.024
Интерпретация: Если новый дизайн не влияет на конверсию (H0 верна), вероятность увидеть разницу 9.5% vs 11.5% (или более экстремальную) составляет 2.4%.
Поскольку p = 0.024 < 0.05, мы отклоняем H0 → результат статистически значим.
Нулевая и альтернативная гипотезы
- H0 (нулевая): Между группами нет разницы
- H1 (альтернативная): Между группами есть разница
Частые ошибки
1. Игнорирование effect size
Большой N может дать p < 0.05 для маленького эффекта:
# N = 100,000 на каждую группу
# Разница конверсии: 10.0% vs 10.1% (только 0.1%)
# Результат: p < 0.001 (очень значим!)
# Но практически это неважно для бизнеса
# Нужно смотреть на effect size, не только p-value
2. Пороговое мышление
p = 0.049 vs p = 0.051 — минимальная разница, но одно "значимо", другое нет. Лучше смотреть на доверительный интервал.
3. p-hacking и multiple testing
# Если делать 100 независимых тестов,
# ожидаем ~5 случайных p < 0.05 (false positives)
# Решение: Bonferroni correction или FDR
p-value vs Effect Size vs Confidence Interval
p-value: Есть ли эффект? (Да/нет) Effect size: Насколько большой? (Величина) CI: Какой диапазон значений? (Точность)
Все три нужны для полной картины.
Доверительный интервал вместо p-value
from scipy import stats
# 95% доверительный интервал для разницы
ci = stats.t.interval(0.95, df, loc=mean_diff, scale=se)
# Если 0 в интервале → p > 0.05
# Если 0 вне интервала → p < 0.05
if ci[0] < 0 < ci[1]:
print("Not significant (p > 0.05)")
else:
print("Significant (p < 0.05)")
Что означает "статистически значим"?
- Результат вряд ли объясняется случайностью
- Если бы мы повторили эксперимент, мы вероятно увидели бы похожий результат
- НО: это не означает, что эффект большой или практически важный
Итоговые правила интерпретации
- p-value ≠ вероятность того, что нулевая гипотеза верна
- p-value = вероятность данных, если H0 верна
- p < 0.05 обычно считается статистически значимым
- Всегда смотри effect size и CI, не только p-value
- Будь осторожен с множественным тестированием
- p > 0.05 ≠ доказательство того, что H0 верна
- Большой p-value просто означает недостаточно доказательств против H0