Проверка гипотез и p-value
Изменение дало эффект — или это просто случайность? Проверка гипотез отвечает на этот вопрос строго.
p-value — вероятность получить наблюдаемый (или ещё более сильный) результат, если на самом деле никакого эффекта нет (верна нулевая гипотеза).
Две гипотезы
Любая проверка начинается с двух взаимоисключающих утверждений:
- Нулевая гипотеза (H₀) — «эффекта нет, всё как раньше, разница случайна». Это позиция скептика по умолчанию.
- Альтернативная (H₁) — «эффект есть, разница реальна».
Логика как в суде: H₀ — презумпция невиновности. Мы не доказываем H₁ напрямую, а смотрим, достаточно ли данных, чтобы отвергнуть H₀. Если данные слишком неправдоподобны при H₀ — отвергаем её в пользу H₁.
Уровень значимости и p-value
Заранее выбирают порог α (обычно 0.05). Затем считают p-value — насколько правдоподобны наши данные, если H₀ верна. Решение простое: p < α — отвергаем H₀ (результат «статистически значим»); p ≥ α — оснований отвергнуть нет.
Пример: честная ли монета?
Монету бросили 100 раз, выпало 63 орла. Подозрительно много? Проверим H₀ «монета честная (p = 0.5)». Оценим p-value симуляцией: как часто у честной монеты выпадает 63 или больше орлов (или 37 и меньше — отклонение в любую сторону).
import random
random.seed(123)
observed = 63
n = 100
trials = 100000
extreme = 0
for _ in range(trials):
heads = sum(1 for _ in range(n) if random.random() < 0.5)
# отклонение от 50 не меньше наблюдаемого (двусторонний тест)
if abs(heads - 50) >= abs(observed - 50):
extreme += 1
p_value = extreme / trials
print("Наблюдалось орлов:", observed)
print("p-value (симуляция):", round(p_value, 4))
print("Отвергаем H0 при alpha=0.05?", p_value < 0.05)
Вывод:
Наблюдалось орлов: 63 p-value (симуляция): 0.0116 Отвергаем H0 при alpha=0.05? True
p-value ≈ 0.012: если бы монета была честной, результат «63 или более экстремально» случался бы примерно в 1% случаев. Это меньше 0.05 — отвергаем H₀, монета похожа на нечестную. Заметьте: мы не доказали нечестность, а лишь показали, что честностью данные объясняются плохо.
Чего p-value НЕ означает (критично!)
Вокруг p-value море заблуждений. Запомните, чем оно не является:
| Неверно | Верно |
| «Вероятность, что H₀ истинна» | Вероятность таких данных ПРИ условии, что H₀ истинна |
| «Вероятность, что результат — случайность» | Насколько данные совместимы с «эффекта нет» |
| «p = 0.04 важнее, чем p = 0.06» | 0.05 — условный порог, не магическая граница |
| «Маленькое p = большой эффект» | p ничего не говорит о размере эффекта |
Последний пункт особенно важен: при огромной выборке даже микроскопическая, бесполезная на практике разница даёт крошечное p-value. Статистическая значимость ≠ практическая важность. Всегда смотрите и на размер эффекта (например, на доверительный интервал разницы), а не только на p.
Граница 0.05 условна
Порог α = 0.05 — традиция, а не закон природы. p = 0.049 и p = 0.051 практически неразличимы, хотя формально лежат по разные стороны порога. Поэтому современная практика — приводить точное p-value и размер эффекта, а не просто писать «значимо / незначимо».
Итог
- H₀ — «эффекта нет», H₁ — «эффект есть»; мы пытаемся отвергнуть H₀.
- p-value — вероятность таких (или более экстремальных) данных, ЕСЛИ H₀ верна.
- p < α (обычно 0.05) — отвергаем H₀; иначе оснований нет.
- Маленькое p не значит «большой эффект» и не равно «вероятности, что H₀ верна»; значимость ≠ важность.