Підглядання в A/B-тестах: чому «вже значущий» — ще не результат
Підглядання в A/B-тестах множить хибні перемоги: у 100 000 симульованих A/A-тестів щоденні перевірки дали 27,6 % помилок замість 5 %. Що робити натомість.
Автор: Sergey BruhОпубліковано 8 хв читання
Підглядання в A/B-тестах (peeking) — це коли результати перевіряють, поки тест ще триває, і зупиняють його, щойно дашборд покаже . Проблема в тому, що кожна додаткова перевірка дає випадковому шуму ще один шанс перетнути поріг значущості, тож хибних «переможців» виходить набагато більше за ті 5 %, на які ви погоджувалися. Ми змоделювали 100 000 тестів, у яких обидві версії були однакові: одна перевірка наприкінці назвала «значущими» 5,0 % із них, а щоденні перевірки протягом чотирьох тижнів — 27,6 %. Помилка не в тому, щоб відкрити дашборд. Помилка — ухвалити рішення за першим зеленим числом.
Тест, який «позеленів» на дев'ятий день
Котокорм, інтернет-магазин кормів для тварин, тестує на сторінці товару блок «Підпишіться й заощаджуйте». Emily, продакт-менеджерка, спланувала тест як слід: базова конверсія — 4 %, найменший приріст, заради якого варто запускати зміну, — 10 % відносних. Для цього потрібно близько 39 500 відвідувачів у кожній групі, тобто чотири тижні за 3 000 відвідувачів на день. (Розрахунок є у статті про розмір вибірки для A/B-тесту.)
А далі дашборд показує таке:
На дев'ятий день варіант попереду на 14,4 %, результат значущий. Victor, керівник маркетингу, пише: «Уже зелене, просто запускаймо». Emily чекає. До 28-го дня розрив стискається до 0,9 %, а .
Тепер головне: ця траєкторія — один зі 100 000 тестів із симуляції нижче, обраний тому, що на ньому добре видно закономірність. У кожному з цих тестів справжня конверсія в обох групах була однакова. Блок не дав нічого. Дев'ятий день був шумом, схожим на перемогу.
Симуляція: 100 000 A/A-тестів
A/A-тест порівнює версію саму із собою, тому будь-яка «значуща» різниця в ньому — хибнопозитивний результат за побудовою. Налаштування:
- справжня конверсія 4 % в обох групах;
- 1 500 відвідувачів на день у кожній групі (разом 3 000 на день);
- 28 днів, тобто 42 000 відвідувачів у групі наприкінці;
- 100 000 симульованих тестів, початкове значення генератора випадкових чисел (seed) — 20261006;
- двобічний z-критерій для двох часток із порогом — той самий, що в уроці про тести для конверсії.
Під час кожної перевірки ми рахували p-значення за всіма даними, зібраними на той момент, і ставили одне питання: чи був цей тест «значущим» хоча б раз?
Одна запланована перевірка тримає слово: 5,0 %. Невинна на вигляд щотижнева перевірка вже дає 12,7 %. А за щоденних перевірок «зеленіє» більш ніж кожен четвертий тест.
Ще три факти про 27 550 хибних тривог за щоденних перевірок:
- Вони ранні. Половина вперше перетнула поріг не пізніше п'ятого дня, 60 % — протягом першого тижня.
- Вони виглядають переконливо. У момент першого перетину медіанний розрив між групами становив 16,8 % відносних. На малій вибірці значущим може бути лише великий розрив.
- Вони не тримаються. Лише 18 % цих тестів лишалися значущими на 28-й день.
Приблизно половина хибних тривог була на користь B. Команда, яка запускає зміну, щойно B «позеленіє», випустила б марну зміну в 13,8 % цих тестів — проти 2,5 % за однієї перевірки.
Чому підглядання множить хибнопозитивні результати
p-значення — не індикатор прогресу, який рівномірно заповнюється. Поки надходять дані, розрив між групами гуляє вгору-вниз, і p-значення гуляє разом із ним — найсильніше на початку, коли вибірка мала.
Гарантія «5 %» стосується одного заздалегідь запланованого моменту: якщо реального ефекту немає, імовірність, що результат опиниться за порогом саме в цей момент, дорівнює 5 %. Правило «зупиняємо, щойно зелене» ставить інше питання: чи перетне результат поріг у будь-який момент? Порівняйте «чи піде дощ наступної суботи опівдні?» і «чи піде дощ хоч раз за місяць?». Друге набагато ймовірніше, хоча погода та сама.
До того ж правило однобічне. Зелений результат завершує тест, а сірий отримує ще одну спробу завтра. Шуму досить пощастити один раз.
Це родич проблеми множинних порівнянь, коли серед багатьох метрик випадково знаходиться «переможець». Але перевірки перекриваються (дані десятого дня містять усі дані дев'ятого), тому 28 перевірок дають 27,6 %, а не , як було б для 28 незалежних спроб.
За чим можна стежити під час тесту
Не дивитися взагалі — теж погана ідея: зламаний варіант коштує реальних грошей.
Чого робити не варто — це використовувати p-значення чи приріст основної метрики, тобто тієї, за якою ухвалюють рішення, як сигнал «зупиняємо й запускаємо». Для захисних метрик умови зупинки узгодьте до запуску («зупиняємо, якщо кількість помилок у чекауті подвоїться»), щоб вони не стали другим способом підглядати.
Типові помилки
«Запустимо, тільки якщо значущість протримається два дні поспіль». У симуляції це правило все одно спрацювало у 17,2 % A/A-тестів. Краще, ніж 27,6 %, але більш ніж утричі вище за номінальний рівень.
«Ще не значуще, дамо тесту ще тиждень». Подовжувати тест, доки він не «позеленіє», — те саме підглядання, тільки з іншого кінця.
Довіряти приросту з тесту, зупиненого раніше. Навіть коли ефект реальний, перший перетин порога стається тоді, коли шум грає на вашу користь, тому приріст, який потрапить у прогноз, буде надто оптимістичним.
Що робити на практиці
Варіант 1: зафіксувати розмір вибірки й тривалість заздалегідь. Порахуйте вибірку в калькуляторі розміру вибірки для A/B-тесту, округліть тривалість до цілих тижнів і запишіть у бриф тесту чотири речі: основну метрику, розмір вибірки, дату завершення і правило рішення. Основну метрику аналізуйте один раз, наприкінці, а приріст подавайте разом із довірчим інтервалом.
Варіант 2: послідовне тестування. Якщо раннє рішення справді цінне, беріть метод, створений для повторних перевірок. Ідея проста: перевірки призначають заздалегідь, а 5 % «бюджету помилок» розподіляють між ними, тому на кожній перевірці поріг суворіший за 0,05. У нашій симуляції чотири щотижневі перевірки з порогом на кожній дали 5,0 % хибних спрацювань в A/A-тестах — стільки ж, як одна перевірка з порогом 0,05.
Ціна — чутливість. За реального приросту з 4,0 % до 4,4 % одна перевірка на 28-й день знаходила переможця у 82,5 % симульованих тестів, а схема з чотирма перевірками — у 74,7 %, зате її тести тривали в середньому 19,7 дня замість 28. Багато платформ для експериментів мають вбудований послідовний режим; з'ясуйте, яка статистика стоїть за зеленою позначкою у вашій.
Як пояснити це стейкхолдеру
Victor не потребує лекції про правила зупинки. Йому потрібні причина, дата й обіцянка:
«Зелене на дев'ятий день — ще не результат. У тестах на кшталт нашого, де насправді нічого не змінилося, більш ніж кожен четвертий хоч раз стає зеленим, якщо перевіряти щодня, і чотири з п'яти таких наприкінці вже не зелені. Ми домовилися про чотири тижні, бо саме стільки потрібно, щоб побачити приріст 10 %. На 28-й день я принесу підсумкове число з діапазоном, і якщо це перемога — запускаємо наступного ранку».
Назвіть і ціну: очікування забере ще 19 днів, а хибний переможець — це функція, яка нічого не дає, і прогноз, побудований на прирості, якого не було.
Головне
- Підглядання — це зупинка тесту на першому значущому результаті; у нашій симуляції воно перетворило 5 % хибнопозитивних результатів на 12,7 % за щотижневих перевірок і 27,6 % за щоденних.
- Хибні тривоги з'являються рано, виглядають великими й здебільшого зникають до запланованої дати завершення.
- За багами, співвідношенням вибірок і захисними метриками стежте вільно; основну метрику оцінюйте лише в запланований момент.
- Або фіксуйте розмір вибірки й тривалість заздалегідь, або використовуйте послідовне тестування, розраховане на повторні перевірки.
- Про правило зупинки домовляйтеся до запуску, а не перед зеленим дашбордом.
FAQ
Чи можна заглядати в дашборд під час A/B-тесту?
Так, якщо це не може змінити рішення. Перевіряйте, чи тест працює коректно, чи рівний поділ між групами і чи в нормі захисні метрики. Основну метрику аналізують у запланований момент завершення або на перевірках, які визначає ваш метод послідовного тестування.
Чи можна зупинити тест раніше, якщо результат дуже значущий?
Лише за правилом, встановленим заздалегідь. Набагато суворіший поріг справді захищає: щоденні перевірки з дали в нашій симуляції 0,9 % хибних спрацювань. Але зафіксувати такий поріг до тесту — це якраз те, що робить послідовне тестування. А вирішити вже після погляду на дані, що p-значення «достатньо мале», — те саме підглядання.
Що робити, якщо на запланований момент результат незначущий?
Зупиніть тест і звітуйте про те, що маєте: спостережуваний приріст і його довірчий інтервал, який показує, наскільки великий ефект ще міг лишитися непоміченим. Не подовжуйте тест у гонитві за значущістю. Якщо питання досі важливе, сплануйте новий тест із більшою вибіркою.
Спробуйте на практиці
У безкоштовному уроці Пастки: підглядання, множинні порівняння, ефект новизни можна потренуватися на тесті банера Котокорму, який був «уже значущий» за два дні: там є тести на розуміння і практичне завдання, яке перевіряє ШІ. Це частина безкоштовного курсу «Статистика для продакт-менеджерів і маркетологів».