Menu

Симулятор подглядывания в A/B-тест

Две тысячи тестов, где A и B - одна и та же страница, на твоём трафике. Посмотри, сколько из них ежедневный проверяльщик назвал бы победой и сколько те же тесты обманывают того, кто ждёт даты окончания.

Автор Nethanel Bar, Co-founder & CEO

Последнее обновление

Готовы по-настоящему научиться программировать?

Coddy учит на практике: вы пишете настоящий код прямо в браузере — интерактивные уроки, мгновенная проверка и помощь ИИ, когда застряли.

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

Другие инструменты разработчика

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

НАЧАТЬ