P-hacking простыми словами

Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.

Короткое объяснение

P-hacking — это подгонка результатов статистического теста под «значимость» (p < 0.05), вместо того чтобы честно проверить заявленную гипотезу.

Человек выглядит так, будто нашёл эффект. Но если повторить эксперимент честно — эффекта нет. Это один из главных способов обмана в науке и аналитике.

Типичные примеры p-hacking

1. Peeking (подглядывание)

Проверяем p-value каждый день. Останавливаем тест, как только p < 0.05.

Проблема: при 20 проверках вероятность случайно увидеть p<0.05 — примерно 64%, а не 5%.

Подробнее: peeking в A/B-тесте.

2. Выбор «удачных» сегментов

Запустили A/B, общий результат не значим. Разделили пользователей по полу, возрасту, устройству, гео... и в каком-то из 10 сегментов получили p < 0.05.

Проблема: при 10 сегментах на 5% значимости случайный «успех» — ~40% probability.

3. Тестирование разных метрик

Запустили A/B с 15 метриками (конверсия, AOV, время на сайте, retention, NPS...). Одна «выстрелила».

Проблема: multiple testing без поправки → любая метрика может случайно показать p<0.05.

4. Смена гипотезы после данных

Планировали проверить: «новый дизайн ↑ конверсию». Смотрим данные: конверсия не выросла, но время на сайте — выросло. Пишем отчёт: «новый дизайн улучшил engagement».

Проблема: HARKing (Hypothesizing After Results are Known) — подгонка гипотезы под данные.

5. Удаление «выбросов», чтобы получить p<0.05

«Эти 20 пользователей — странные, уберём». Случайно после этого p-value становится <0.05.

Проблема: данные подгоняем под нужный результат.

6. Выбор выгодного окна данных

Считаем конверсию за неделю → не значимо. За 2 недели → не значимо. За 11 дней → значимо!

Проблема: перебор окон — то же самое, что многократное тестирование.

7. Добавление ковариат до получения p<0.05

В модели регрессии добавляем одну за другой переменные, пока p-value целевой не станет <0.05.

Почему это плохо

Ложные выводы

Решения на основе p-hacked данных → обычно ничего не улучшают. Тратите ресурсы на «фичу, которая не работает».

Repeatability

Честные тесты воспроизводимы. P-hacked — нет.

Долгосрочный вред

Компания накапливает «победы», которые не дают реального роста → через год MRR не вырос, а все хвалят себя за прошлые «успешные A/B».

Как избежать p-hacking

1. Pre-registration

Зафиксируйте гипотезу, метрику и окно ДО запуска теста:

«Мы проверяем: новый дизайн корзины поднимает конверсию в purchase на 1+ п.п. за 14 дней. Метрика — conversion rate в session. Размер выборки — 50 000 на группу».

Всё, что выходит за рамки — exploratory, а не confirmatory.

2. Жёстко соблюдать окно

Тест запускается на 14 дней. Смотрим результат только на 14-й день.

Если очень хочется «подглядывать» — используйте sequential testing (SPRT, Always Valid Inference). Но тогда выборка больше.

3. Не смотреть на метрики по одной

Выбрать primary metric заранее. Secondary metrics — только для подтверждения / guardrails, не для принятия решения.

4. Поправка на multiple testing

При анализе подсегментов или нескольких метрик:

  • Bonferroni: α / k, где k — число тестов
  • Benjamini-Hochberg: FDR control

Строже α → меньше false positives.

5. Честно репортить fail

Если primary metric не значима — это провал теста. Не переписывайте историю под secondary метрику.

6. Re-run на свежей когорте

Если получили «интересный» результат на подсегменте — запустите новый тест, где этот сегмент будет primary analysis.

На собесе

Популярный вопрос: «Вот данные A/B-теста, расскажите, как вы интерпретируете».

Хороший ответ включает:

  • Запросить pre-registered гипотезу
  • Проверить SRM (sample ratio mismatch)
  • Учесть guardrail-метрики
  • Не фокусироваться только на primary metric результате
  • При многомерном анализе — применить поправки
  • Честно говорить «не значимо», если так

Плохой ответ: «Найдём сегмент, где эффект есть».

Ещё один классический кейс

Garden of Forking Paths (сад разветвляющихся тропок) — даже без злого умысла, у аналитика есть десятки решений:

  • Какой период брать?
  • Включать ли outliers?
  • По какой метрике считать?
  • Как группировать пользователей?

Каждое решение — «ветка». Если выбирать такие ветки, которые дают p<0.05 — это p-hacking, даже без осознанной манипуляции.

Решение: зафиксировать все решения ДО просмотра данных.

Связанные концепции

False Discovery Rate (FDR)

Доля ложных открытий среди «значимых» результатов. Бенджамини-Хохберг процедура контролирует FDR.

Replication crisis

В психологии и медицине обнаружили: половина «значимых» результатов не воспроизводится. P-hacking — одна из причин.

Pre-registration movement

В академии внедрили pre-registration на научные работы. В продуктовой аналитике идёт похожий тренд.

Частые ошибки

Ошибка 1. «Тест не удался → перепроверю»

Перепроверка + продление → скрытый peeking.

Ошибка 2. «Это не p-hacking, у меня есть объяснение сегмента»

Post-hoc объяснение часто подгоняется. Правильно — pre-register гипотезу и проверить на свежих данных.

Ошибка 3. Смешивать exploratory и confirmatory

Exploratory анализ полезен — генерировать гипотезы. Но принимать решения на его основе — p-hacking.

Ошибка 4. «Гипотеза была такой с самого начала»

Без pre-registration это слова против слов.

Связанные темы

FAQ

P-hacking — это обман?

Иногда намеренный, иногда — непреднамеренный «garden of forking paths». В любом случае приводит к ложным выводам.

Можно ли смотреть на сегменты?

Можно — для exploratory анализа. Для принятия решений — только с поправкой на multiple testing или повторным тестом.

Как отличить легитимный анализ от p-hacking?

Спросите: была ли гипотеза зафиксирована ДО сбора данных? Если нет — повышен риск p-hacking.

Peeking — это всегда плохо?

В классическом A/B — да. В sequential testing — можно, но с корректной методикой.


Тренируйте статистику — откройте тренажёр с 1500+ вопросами для собесов.