Підглядання в A/B-тестах множить хибні перемоги: у 100 000 симульованих A/A-тестів щоденні перевірки дали 27,6 % помилок замість 5 %. Що робити натомість.
Як розрахувати розмір вибірки для A/B-тесту: формула, приклад із числами, як статистична потужність і MDE змінюють результат, і безкоштовний калькулятор.
Щоб визначити, скільки має тривати A/B-тест, поділіть загальну потрібну вибірку на кількість користувачів, які щодня потрапляють у тест, і округліть результат угору до цілих тижнів. Тест має тривати щонайменше два повні тижні, навіть якщо за розрахунком вистачає чотирьох днів. А якщо виходить більше ніж приблизно вісім тижнів, це привід змінити дизайн тесту.
«А результат буде до п'ятниці?»
Котокорм, інтернет-магазин кормів для тварин, хоче показувати на сторінці товару біля кнопки «Купити» очікувану дату доставки («Привеземо в четвер»). Emily, продакт-менеджерка, планує тест:
базовий рівень: 5 % відвідувачів, які відкрили сторінку товару, оформлюють замовлення;
мінімальний виявлюваний ефект (MDE): відносний приріст 10 %, з 5,0 % до 5,5 %;
рівень значущості 5 % (двобічний критерій), потужність 80 %.
Округлюємо вгору до цілих тижнів: тест триватиме 4 тижні (28 днів). До п'ятниці результату не буде.
Ділимо 62 468 потрібних користувачів на 2 500 тих, хто щодня потрапляє в тест, а не на всі 8 000 відвідувачів, округлюємо 25 днів до 4 тижнів і перевіряємо, що результат між двома і вісьмома тижнями
Два правила за цим числом
Рахуйте лише тих, хто потрапляє в тест
У тест потрапляють тільки ті, хто дійшов до сторінки зі зміною і може її побачити. Якби Emily поділила вибірку на всі 8 000 відвідувачів, у плані стояло б 8 днів. Але за 8 днів сторінку товару відкриють лише 20 000 людей, по 10 000 на групу, і з такою вибіркою шанс помітити реальний приріст 10 % становить близько 35 % замість запланованих 80 %. Тест найімовірніше показав би «незначуще», і робочу ідею відклали б у шухляду.
Трафік беріть за звичайні нещодавні тижні й рахуйте унікальних користувачів, а не сесії.
Округлюйте вгору до цілих тижнів
У вівторок зранку і в неділю ввечері люди купують по-різному. Якщо тест стартував у понеділок і зупинився на 25-й день, то дні з понеділка по четвер потраплять у дані чотири рази, а з п'ятниці по неділю лише тричі. Цілі тижні дають кожному дню однакову вагу.
Від трафіку та MDE до тижнів
Той самий тест (базовий рівень 5 %, α=0,05, потужність 80 %) для різних ефектів і різного трафіку:
Відносний MDE
Користувачів у групі
1 000 користувачів на день
2 500 на день
5 000 на день
5 %
122 124
245 днів → 35 тижнів
98 днів → 14 тижнів
49 днів → 7 тижнів
10 %
31 234
63 дні → 9 тижнів
25 днів → 4 тижні
13 днів → 2 тижні
15 %
14 193
29 днів → 5 тижнів
12 днів → 2 тижні
6 днів → 1 тиждень
20 %
8 158
17 днів → 3 тижні
7 днів → 1 тиждень
4 дні → 1 тиждень
Удвічі більший трафік скорочує тест удвічі, а от удвічі менший MDE подовжує його приблизно вчетверо.
Якщо дедлайн уже заданий, переверніть питання. Калькулятор MDE показує, що з 2 500 користувачами на день Котокорм здатен помітити приріст 13,5 % за два тижні і 9,4 % за чотири. За яким ефектом варто ганятися, розповідає стаття про мінімальний виявлюваний ефект.
Найкоротший і найдовший розумний тест
Мінімум: один-два повні бізнес-цикли. Для більшості інтернет-магазинів цикл дорівнює тижню, тому «1 тиждень» із таблиці на практиці перетворюється на два. Окремий тиждень може виявитися нетиповим (свято, розсилка, збій на сайті), а два тижні дають змогу порівняти перший із другим. Якщо ваші клієнти купують у довшому ритмі, наприклад замовляють раз на місяць після зарплати, охопіть один такий цикл повністю.
Максимум: приблизно шість-вісім тижнів. Довші тести псуються:
Втрачені cookie та нові пристрої. Людину, яка почистила cookie або зайшла з нового телефона, система розподіляє заново, і вона може потрапити в іншу групу. Що більше людей бачили обидві версії, то сильніше розмивається різниця.
Аудиторія змінюється. Часті відвідувачі потрапляють у тест у перші дні, а далі приходять дедалі рідші гості, які поводяться інакше.
Сезонність та інші запуски. Кожен зайвий тиждень додає шанс, що на тест накладеться зміна цін, рекламна кампанія чи розпродаж у конкурента.
Якщо за планом виходить 14 тижнів, не чекайте. Погодьтеся на більший MDE, тестуйте сміливішу зміну або візьміть метрику з вищим базовим рівнем (додавання в кошик замість замовлення).
Ефект новизни та ефект первинності
Ефект новизни означає приріст, який існує лише тому, що зміна нова: постійні відвідувачі помічають незнайомий блок, клацають на нього, а згодом втрачають інтерес. Ефект первинності (primacy effect) працює навпаки: люди, які звикли до старої версії, спершу губляться, і варіант покращується в міру того, як вони звикають.
Щоб їх помітити, порівняйте перший тиждень із наступними. Припустімо, тест Emily завершився так (щотижня по 8 750 користувачів у кожній групі):
Тиждень
Контроль
Варіант
Відносний приріст
1
4,98 %
6,40 %
+28,4 %
2
5,04 %
5,55 %
+10,2 %
3
4,95 %
5,42 %
+9,5 %
4
5,03 %
5,39 %
+7,3 %
Усі 4 тижні
5,00 %
5,69 %
+13,8 %
Тижневі числа шумні: кожна тижнева різниця має похибку приблизно ±0,7 відсоткового пункту, тож коливання між другим і четвертим тижнями мало що означають. Інша річ, коли приріст першого тижня майже вчетверо більший, ніж останнього. Тижні з другого по четвертий разом дають +9,0 %, і це чесніша оцінка того, що залишиться Котокорму надовго.
Друга перевірка: розділіть нових користувачів і тих, хто повернувся. Новачкам нема з чим порівнювати, тож приріст, який видно лише серед постійних відвідувачів, найпевніше пояснюється новизною.
Поділ трафіку: 50/50 чи 90/10?
Показати варіант лише 10 % користувачів здається безпечнішим, але це дорого. Для того самого тесту (з 5,0 % до 5,5 %, 2 500 користувачів на день):
Поділ (контроль / варіант)
Потрібно користувачів разом
Днів
Округлено вгору
50 / 50
62 468
25
4 тижні
80 / 20
96 535
39
6 тижнів
90 / 10
170 970
69
10 тижнів
Калькулятор розрахований на рівний поділ; для двох інших рядків та сама формула застосована до нерівних груп. Точність порівняння обмежує менша група: за поділу 90/10 варіанту однаково потрібно близько 17 100 користувачів, а набрати їх по 250 на день вдасться лише за десять тижнів. Загалом поділ 90/10 коштує у 2,7 раза більше трафіку, ніж рівний.
Якщо ризик вас непокоїть, покажіть варіант 10 % користувачів на день-два, щоб виловити баги, потім перейдіть на 50/50 і рахуйте тест від цього моменту.
Розпродажі, свята та рекламні кампанії
Тест вимірює ефект на тих людях, які були на сайті під час тесту. У «чорну п'ятницю» відвідувачі полюють на знижки і купують поспіхом, тож приріст, виміряний того тижня, у лютому може не повторитися.
Не починайте і не завершуйте тест посеред розпродажу, якщо тестуєте не сам розпродаж.
Зазирніть у маркетинговий календар: велика розсилка чи рекламна кампанія приводить хвилю нетипового трафіку.
Якщо кампанія все ж наклалася на тест, доведіть його до кінця за планом і покажіть результат із цими днями та без них.
Дострокова зупинка: лише через шкоду
Зупиняти тест, щойно основна метрика стала значущою, означає підглядати, а це збільшує частку хибнопозитивних результатів. Чому так, пояснює стаття про підглядання в A/B-тестах. Зупинка через те, що варіант шкодить користувачам, є іншим випадком, якщо правило записане ще до запуску:
Оберіть дві-три захисні метрики, які не мають погіршитися: помилки оплати, швидкість завантаження сторінки, скасування замовлень, звернення в підтримку.
Для кожної задайте поріг, причому суворий, наприклад p<0,001 замість 0,05, адже перевірятимете її щодня.
Через очевидний баг, як-от зламану кнопку в одному з браузерів, зупиняйте тест одразу, виправляйте і запускайте заново з чистими даними.
Це безпечно, бо дострокова зупинка через шкоду може закінчитися лише рішенням «не запускаємо», але не запуском хибного переможця.
Типові помилки
Ділити на весь трафік сайту, а не на тих, хто доходить до сторінки з тестом.
Зупиняти тест того дня, коли набралася вибірка, посеред тижня.
Додавати «ще кілька днів», бо результат майже значущий. Це теж підглядання.
Оцінювати за першими днями, коли новизна найсильніша.
Чеклист перед запуском
Основну метрику, базовий рівень і MDE записано.
Вибірку розраховано для того поділу трафіку, який справді буде.
Щоденний трафік пораховано в унікальних користувачах, які потрапляють у тест, за звичайні тижні.
Тривалість задано в цілих тижнях: щонайменше два, щонайбільше близько восьми.
У календарі немає розпродажів, свят і великих кампаній.
Захисні метрики та правила зупинки через шкоду погоджено.
Дату завершення зафіксовано.
Головне
Тривалість = потрібна вибірка / кількість користувачів, які потрапляють у тест за день, з округленням угору до цілих тижнів.
Тест має тривати щонайменше два тижні, а той, якому потрібно понад вісім, варто переробити.
Порівнюйте перший тиждень із наступними, щоб упіймати ефект новизни чи первинності.
Нерівний поділ дорогий: 90/10 потребує у 2,7 раза більше трафіку, ніж 50/50.
Достроково зупиняйте тест лише через шкоду і за правилами, заданими до запуску.
FAQ
Чи може A/B-тест тривати менше тижня?
Лише для того, щоб виловити баги. Три дні охоплюють тільки частину тижневого ритму, а на перші дні припадає найсильніший ефект новизни. Мінімум становить один повний тиждень, а краще два.
Що робити, якщо за розрахунком тест триватиме три місяці?
Змінюйте тест, а не календар: більший MDE і сміливіша зміна, метрика вище у воронці або сторінка з більшим трафіком. Якщо нічого з цього не вдається, ухваліть рішення без тесту і відкрито про це скажіть.
Чи закінчується тест, коли в нього потрапив останній користувач?
Не зовсім. Тим, хто потрапив у тест останнього дня, на рішення потрібно стільки ж часу, як і тим, хто прийшов першого. Якщо більшість замовлень надходить упродовж трьох днів після першого візиту, на 28-й день припиніть додавати нових користувачів і ще три дні рахуйте замовлення.
Спробуйте на практиці
Безкоштовний урок Пастки: підглядання, множинні порівняння, ефект новизни розбирає підглядання, множинні порівняння та ефект новизни на експериментах Котокорму, з тестами на розуміння і практичним завданням, яке перевіряє ШІ. Це частина безкоштовного курсу «Статистика для продакт-менеджерів і маркетологів».