Почему peeking — самая распространённая ошибка в A/B тестировании

Итак: тест запущен, идёт третий день. Вы открываете дашборд и видите — вариант B обгоняет A, p = 0.03. Кажется, победитель найден. Можно останавливать?

Нет. Это именно то, что называется peeking.

Как p-value ведёт себя во времени

P-value не монотонно убывает к «правильному» финальному значению. Он случайно колеблется — может опуститься ниже 0.05 на третий день, вырасти до 0.15 на пятый, снова упасть до 0.04 на восьмой. Если смотреть каждый день и останавливаться при первом «значимом» результате, вы берёте случайную точку из этого блуждания.

День 3:  p = 0.03  ← "победил!" (но это ещё шум)
День 5:  p = 0.14  ← если бы не остановились, увидели бы это
День 8:  p = 0.04  ← снова "значимо"
День 14: p = 0.22  ← финальный результат — нет эффекта

При 20 ежедневных проверках вероятность увидеть p < 0.05 хотя бы раз — около 64%, даже при нулевом реальном эффекте.

Сколько ложных побед создаёт peeking

Число промежуточных проверок Реальный уровень ошибки первого рода
1 (нет peeking) 5%
5 ~22%
10 ~40%
20 ~64%

При агрессивном peeking большинство «значимых» результатов — случайный шум.

Как правильно работать с промежуточными данными

Байесовский подход — самое практичное решение. Метрика «Probability to be Best» (вероятность, что B лучше A) корректно интерпретируется в любой момент и не «ломается» от промежуточных просмотров.

Sequential testing — если используете frequentist-статистику, применяйте поправки (alpha spending), заранее определяющие, как «расходовать» уровень значимости на каждую проверку.

Совет: решайте заранее — до запуска теста — когда его остановите. Фиксируйте запланированную длительность или размер выборки. Правило «смотрим только в конце» проще всего — и самое эффективное, если дисциплина есть.