Две тысячи тестов, где A и B - одна и та же страница, на твоём трафике. Посмотри, сколько из них ежедневный проверяльщик назвал бы победой и сколько те же тесты обманывают того, кто ждёт даты окончания.
Самая дорогая привычка в A/B-тестировании, смоделированная на твоих числах
Вот привычка. Ты запускаешь тест и каждое утро открываешь дашборд. Полоска ползёт вверх, проседает, снова ползёт, и в один вторник пересекает 95%. Ты объявляешь результат, выкатываешь победителя и идёшь дальше. Проблема в том, что p-значение блуждает. В тесте, где два варианта одинаковы, p-значение всё равно в какие-то дни случайно пересекает 0.05; просто позже оно пересекает его обратно. Остановиться на первом пересечении - значит поймать его на проходе, и уровень уверенности, который, как ты думал, у тебя есть, исчез.
Размер эффекта людей удивляет. При уверенности 95% тест, прочитанный один раз в конце, обманывает тебя примерно раз из двадцати, и это та сделка, на которую ты подписался. Читай тот же тест каждый день четыре недели и останавливайся в первый зелёный день, и симулятор обычно показывает ложного победителя в четверти тестов и больше, где ничего не менялось. Оригинальная заметка Эвана Миллера оценивала это выше 20% для ежедневного проверяльщика; Optimizely в 2015 году перестроила свой статистический движок, потому что доля ложных срабатываний у её клиентов перевалила за эту отметку. Еженедельная проверка вместо ежедневной примерно вдвое уменьшает ущерб, но не убирает его.
Симуляция здесь честна в том, что она такое: каждый тест разыгрывает конверсии по истинной конверсии для обеих групп, запускает обычный z-тест для двух долей на каждом просмотре на всём собранном к этому моменту и записывает, где остановился бы подглядывающий. Каждая траектория на графике - один тест; каждая точка - утро, когда кто-то объявил бы результат. Поставь настоящий прирост на +10%, чтобы увидеть вторую половину истории, где подглядывающий ловит настоящий эффект рано, но с раздутым приростом, и «победил» бы с тем же азартом, будь эффект нулевым.
Что показывает симуляция
P-значение - это случайное блуждание. При нулевой гипотезе на любом отдельном просмотре оно распределено равномерно, а значит, в любое одно утро есть 5% шанс, что оно ниже 0.05. За двадцать восемь утр эти шансы складываются.
Доля ложных срабатываний зависит от того, сколько раз ты смотришь, а не от того, сколько идёт тест. Четырёхнедельный тест, читаемый раз в неделю, обманывает реже, чем двухнедельный, читаемый каждый день.
Ранние остановки завышают прирост. Когда подглядывающий останавливается в удачный день, наблюдаемый прирост в этот день по определению необычно велик. Выкаченные победители, которые «сдулись» после запуска, часто были именно этим.
Лекарство - либо дисциплина, либо другой тест. Дисциплина: зафиксируй размер выборки и дату окончания заранее и прочитай один раз. Другой тест: последовательные методы, вроде всегда валидных p-значений, которые используют Optimizely, Statsig и Eppo, построены так, чтобы их читали непрерывно, ценой большей выборки.
Байесовские дашборды не застрахованы. Вероятность быть лучшим, которую проверяют каждый день и по которой действуют при пороге, имеет ту же проблему в другом костюме.
Как пользоваться симулятором
1
Введи конверсию и дневных посетителей
Симуляция разыгрывает конверсии по твоей настоящей конверсии, так что блуждание p-значения соответствует шуму, который ты видел бы на самом деле.
2
Задай плановую длину и как часто ты смотришь
Каждый день, каждые три дня или раз в неделю. Разрыв между долей подглядывающего и честной долей - цена этой привычки.
3
Оставь настоящий прирост на «нет»
Так каждый тест становится A/A-тестом: любой победитель по построению ложная тревога. Потом переключи на +10% или +30%, чтобы увидеть подглядывающего на настоящем эффекте.
4
Прочитай два больших числа
Доля подглядывающего - как часто ежедневный проверяльщик объявлял победителя. Доля по дате окончания должна быть близка к выбранной тобой альфе; если так, честный тест делает то, что обещал.
5
Запусти ещё раз
Каждый прогон разыгрывает новые случайные тесты. Доли немного двигаются; разрыв - нет.
Типичные доли ложных срабатываний в A/A-тестах
При уверенности 95% одно честное чтение в конце обманывает примерно в 5% случаев. Ориентировочные цифры из симуляции и литературы для подглядывающего, который останавливается на первом значимом просмотре.
Как часто ты смотришь
Просмотров за 4 недели
Ложных победителей
Один раз, в конце
1
около 5%
Раз в неделю
4
около 10-13%
Каждые 3 дня
9-10
около 15-20%
Каждый день
28
около 25-30%
Каждый день 12 недель
84
больше 35%
Три привычки в симуляции
Ежедневный проверяльщик
Конверсия 5%, 1 000 посетителей в день, 28 дней, проверка каждое утро. В нашем прогоне: подглядывающий объявил победителя примерно в 28% из 2 000 A/A-тестов; при одном чтении в конце - 4.5%.
В шесть раз больше ложных тревог для теста, который казался аккуратным, потому что кто-то следил за ним каждый день. Половина этих «победителей» короновала B, половина - A, потому что находить было нечего.
Еженедельный проверяльщик
Тот же трафик, та же длина, проверка раз в неделю. В нашем прогоне: около 12% у подглядывающего против 5% в конце.
Смотреть четыре раза вместо двадцати восьми сильно помогает и всё равно больше чем вдвое превышает обещанную долю. Нет такого числа просмотров, кроме одного, которое держит обещание.
Настоящий прирост +10%
Поставь настоящий прирост B на +10% при том же трафике. У честного теста на 28 дней ограниченная мощность для такого маленького прироста при этом трафике; подглядывающий чаще останавливается рано, в удачные дни.
Это соблазнительный случай: подглядывающий будто бы находит быстрее. Но дни, в которые он останавливается, - это дни, когда прирост выглядел больше всего, так что выкаченная оценка завышена, и та же привычка нашла бы «победителя» при приросте, равном нулю.
Ошибки подглядывания
Останавливаться в первое значимое утро. Об этом вся страница. Уровень уверенности означает то, что написано, только если ты читаешь результат один раз.
Продлевать тест, который «почти дошёл». Решить гонять дольше, потому что результат почти значим, - это подглядывание наоборот, и оно раздувает долю ложных срабатываний точно так же.
Проверять каждый день «просто чтобы убедиться, что ничего не сломалось». Следить за багами нормально; следить за p-значением - нет. Смотри на разбиение трафика и долю ошибок, а не на прирост, до даты окончания.
Верить, что байесовский дашборд делает подглядывание безопасным. Действовать по порогу вероятности, который ты проверяешь каждый день, даёт то же завышение.
Отчитываться о приросте в день, когда ты остановился. Если остановиться рано всё же пришлось, отчитывайся интервалом и ожидай, что настоящий прирост меньше точечной оценки.
Вопросы о подглядывании
Что такое проблема подглядывания в A/B-тестировании?
Многократно читать тест с фиксированным горизонтом и останавливаться в первый раз, когда он выглядит значимым. Поскольку p-значение колеблется, пока приходят данные, каждый просмотр - ещё один шанс случайно пересечь порог. Тест, читаемый каждый день в течение месяца при уверенности 95%, даёт ложного победителя примерно в четверти случаев, когда ничего не менялось, вместо 5%, которые обещает уровень уверенности.
Неправильно ли смотреть на тест до его окончания?
Смотреть можно; проблема - действовать. Проверь, что трафик делится поровну, что оба варианта загружаются и что конверсии записываются. Не читай прирост и уверенность и не позволяй увиденному менять дату окончания ни в какую сторону.
Как A/B-тестировать, если я хочу проверять непрерывно?
Используй последовательный метод. Всегда валидные p-значения, групповые последовательные дизайны и им подобные построены так, чтобы их можно было читать в любой момент; они платят за это большим размером выборки при той же мощности. Большинство современных платформ предлагает какой-нибудь из них. Этот симулятор моделирует классический тест с фиксированным горизонтом, потому что именно им являются большинство расчётов в таблицах и дашбордах, включая другие вкладки этого сайта.
Имеет ли подглядывание значение, если я проверяю раз в неделю?
Меньше, но да. Четыре просмотра за четыре недели при 95% обычно удваивают долю ложных срабатываний. Единственное число просмотров, которое держит обещанную долю, - один.
Почему симулятор использует A/A-тесты?
Потому что при одинаковых группах каждый победитель по построению ложная тревога, и доля, которую сообщает симулятор, - это ровно доля ложных срабатываний моделируемой привычки. Включение настоящего прироста показывает другую сторону, где подглядывающий останавливается рано в удачные дни и сообщает завышенный эффект.
Решает ли байесовский тест проблему подглядывания?
Сам по себе нет. Байесовская вероятность, читаемая непрерывно и применяемая при фиксированном пороге, раздувает ложные решения точно так же, как показали Георгий Георгиев и другие. Байесовские методы с правильным решающим правилом и приором могут хорошо вести себя при непрерывном наблюдении, но одно слово «байесовский» - не лекарство.