Почему 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), заранее определяющие, как «расходовать» уровень значимости на каждую проверку.
Совет: решайте заранее — до запуска теста — когда его остановите. Фиксируйте запланированную длительность или размер выборки. Правило «смотрим только в конце» проще всего — и самое эффективное, если дисциплина есть.