Як розрахувати розмір вибірки для A/B-тесту: формула, приклад і калькулятор
Як розрахувати розмір вибірки для A/B-тесту: формула, приклад із числами, як статистична потужність і MDE змінюють результат, і безкоштовний калькулятор.
Підглядання в A/B-тестах множить хибні перемоги: у 100 000 симульованих A/A-тестів щоденні перевірки дали 27,6 % помилок замість 5 %. Що робити натомість.
Ось як розрахувати розмір вибірки для A/B-тесту: візьміть чотири параметри — базовий рівень метрики, мінімальний виявлюваний ефект (MDE), рівень значущості (зазвичай 5 %) і статистичну потужність (зазвичай 80 %) — і підставте їх у формулу для двох часток нижче. Вийде кількість користувачів на кожен варіант; поділіть загальну кількість на щоденний трафік — і матимете тривалість тесту. Для конверсії 4 % і відносного приросту 10 % це 39 473 користувачі в кожній групі. Якщо не хочеться рахувати вручну, безкоштовний калькулятор розміру вибірки для A/B-тесту зробить це просто в браузері.
Як розрахувати розмір вибірки за п'ять кроків
Котокорм, інтернет-магазин кормів для тварин, переробив сторінку оформлення замовлення і хоче порівняти її зі старою. Планування вибірки для такого A/B-тесту — це п'ять кроків:
Знайдіть базовий рівень. Поточна конверсія в контрольній групі за останні 4–8 тижнів. Для чекауту Котокорму — 4 %.
Оберіть MDE. Найменший приріст, заради якого варто запускати зміну. Котокорм бере відносний приріст 10 %: з 4,0 % до 4,4 %.
Задайте рівень значущості й потужність. Стандарт — α=0,05 (двобічний) і потужність 80 %.
Підставте числа у формулу (або в калькулятор) і отримайте кількість користувачів у групі.
Переведіть користувачів у дні за трафіком, який реально потрапляє в тест, і округліть угору до цілих тижнів.
У наступних двох розділах кроки 4 і 5 зроблено вручну, щоб було видно, що саме калькулятор рахує за вас.
Чотири параметри (базова конверсія, MDE, рівень значущості, потужність) дають 39 473 користувачі на групу; при 3 000 відвідувачів на день це чотири тижні тесту
Формула розміру вибірки для конверсії
Для порівняння двох часток потрібна кількість користувачів у кожній групі приблизно дорівнює:
Тут p1 — базовий рівень, p2 — рівень, який ви сподіваєтеся побачити у варіанті, а значення z беруться з нормального розподілу: z0,975≈1,96 для двобічного тесту з α=5% і z0,80≈0,84 для потужності 80 %.
Запам'ятовувати формулу не обов'язково: будь-який пристойний онлайн-калькулятор або рядок коду на Python порахують це за вас. Але варто розуміти, що в ній: різниця p2−p1 стоїть у знаменнику в квадраті. Цей один факт пояснює більшість сюрпризів, про які піде мова далі.
Приклад: редизайн чекауту в Котокормі
Вхідні дані:
базова конверсія p1=0,04;
MDE: відносний приріст 10 %, отже p2=0,044;
α=0,05 (двобічний), потужність 80 %.
Рахуємо крок за кроком:
(1,96+0,84)2≈7,85.
Дисперсійні доданки: 0,04×0,96=0,0384 і 0,044×0,956=0,0421; разом 0,0805.
Квадрат різниці: (0,044−0,04)2=0,0042=0,000016.
n≈7,85×0,0805/0,000016≈39500.
Точне значення — 39 473 користувачі в кожній групі, тобто приблизно 79 000 разом.
Чекаут Котокорму відвідують близько 3 000 людей на день, трафік ділимо навпіл. Отже, тест триватиме 78946/3000≈26,3 дня. Округлюємо вгору до цілих тижнів: запускаємо на 4 тижні (28 днів), щоб кожен день тижня був представлений однаково. Покупки в неділю ввечері зовсім не схожі на покупки у вівторок зранку. Докладніше — у статті скільки має тривати A/B-тест.
Швидка перевірка на здоровий глузд: для потужності 80 % і α=0,05 є зручне емпіричне правило n≈16⋅p(1−p)/δ2, де δ — абсолютна різниця. Тут воно дає 16×0,0384/0,000016=38400, що близько до точного результату. Якщо калькулятор видав число вдесятеро більше чи менше, ви, найпевніше, переплутали відносний і абсолютний MDE.
Калькулятор розміру вибірки для A/B-тесту
Коли формула зрозуміла, арифметику можна віддати інструменту. Безкоштовний калькулятор розміру вибірки бере базовий рівень і MDE (відносний або у відсоткових пунктах), а α і потужність — у розширених налаштуваннях, і повертає кількість користувачів на варіант, загальну вибірку і, якщо вказати щоденний трафік, кількість днів тесту. Нічого з введеного не залишає ваш браузер. Якщо трафік фіксований і хочеться знати, який найменший приріст він здатен помітити, поставте питання навпаки в калькуляторі MDE.
Як обрати вхідні параметри
Базовий рівень
Поточне значення метрики в контрольній групі. Беріть його зі свіжих даних, а не з того вдалого місяця, який усі досі згадують. Базовий рівень важливий, бо рідкісні події важче виміряти: щоб помітити зміну конверсії 2 %, потрібно набагато більше користувачів, ніж для такої самої відносної зміни конверсії 10 %.
Мінімальний виявлюваний ефект (MDE)
Найменший ефект, заради якого варто щось робити. Це бізнесове рішення, а не статистичне. Запитайте себе: «Якщо редизайн підніме конверсію на X, ми його запустимо? Він окупиться?» Як його обрати, розібрано в статті про мінімальний виявлюваний ефект.
Чітко фіксуйте, відносний це ефект чи абсолютний. Відносний приріст 10 % від базових 4 % — це перехід з 4,0 % до 4,4 %, тобто абсолютна зміна на 0,4 відсоткового пункту. Плутанина між ними — найчастіша причина фантастично хибних розрахунків.
Рівень значущості (α)
Частка хибнопозитивних результатів, яку ви готові прийняти: імовірність оголосити переможця, коли реальної різниці немає. Загальноприйнято α=0,05 із двобічним критерієм.
Що таке статистична потужність
Статистична потужність (1−β) — це імовірність, що тест виявить ефект, якщо той справді не менший за MDE. Стандарт — 80 %: ви погоджуєтеся на 20 % шансів пропустити реальний ефект такого розміру. Коли помилка дорога, беруть 90 %.
Потужність найчастіше лишають за замовчуванням, не замислюючись. Але тест із замалою потужністю не просто «іноді промахується»: коли він показує «незначуще», неможливо сказати, чи зміна нічого не дала, чи тест був замалий, щоб це побачити. Вища потужність коштує користувачів: для відносного MDE 10 % у Котокормі перехід з 80 % на 90 % збільшує вибірку з 39 473 до 52 842 у групі, приблизно на третину.
Як параметри змінюють результат
Базовий рівень 4 %, α=0,05 і потужність 80 % лишаємо, змінюємо тільки MDE:
Відносний MDE
Цільова конверсія
Користувачів у групі
Днів при 3 000 відвідувачів на день
5 %
4,2 %
154 302
103
10 %
4,4 %
39 473
27
20 %
4,8 %
10 314
7
30 %
5,2 %
4 780
4
Зменшили MDE вдвічі — вибірка зросла приблизно вчетверо. Це і є той самий квадрат різниці в знаменнику.
Інші важелі, усі для відносного MDE 10 %:
Потужність 90 % замість 80 %: 52 842 у групі (приблизно на третину більше).
α=0,01 замість 0,05: 58 734 у групі.
Базовий рівень 2 % замість 4 %: 80 679 у групі. Базовий рівень 10 %: 14 749 у групі.
Розмір вибірки для середнього чека та інших неперервних метрик
Для метрики на кшталт середнього чека (AOV) логіка та сама, тільки мінливість задає стандартне відхилення σ, а не p(1−p):
n=δ22(z1−α/2+z1−β)2σ2
Якщо середній чек у Котокормі — близько 40 доларів зі стандартним відхиленням 25 доларів, і ви хочете помітити зміну на 2 долари, то n=2×7,85×625/4≈2453 користувачі в кожній групі. Обережно: дані про виручку зазвичай скошені, і кілька дуже великих замовлень роздувають σ. Оцінюйте стандартне відхилення за реальними свіжими замовленнями і подумайте про обрізання екстремальних значень ще до планування.
Чому не можна просто «покрутити тест тиждень»?
На понеділковому стендапі в Котокормі хтось пропонує обійтися без розрахунків: «Покажімо новий чекаут половині відвідувачів на тиждень, а в п'ятницю глянемо на цифри».
Звучить розумно, і саме так багато команд спалюють спринт. Тижня трафіку може вистачити, щоб побачити величезний ефект, але зміни в чекауті рідко дають величезний ефект. Якщо редизайн піднімає конверсію на скромні 5–10 %, тижневий тест найімовірніше покаже «незначуще». Команда вирішить, що редизайн «не працює», і піде далі, хоча насправді тест просто не мав достатньої роздільної здатності, щоб цей ефект помітити.
Планування вибірки відповідає на одне питання ще до запуску: скільки даних потрібно, щоб реальний ефект потрібного нам розміру мав добрі шанси проявитися?
Типові помилки
Підганяти MDE під трафік. Рахувати у зворотний бік («у нас два тижні, тож MDE — скільки встигнемо») можна, але тоді скажіть це вголос: «Цей тест здатен помітити лише приріст від 20 %». Якщо ніхто не вірить, що зміна на таке здатна, не запускайте тест або оберіть чутливішу метрику.
Підглядати й зупиняти тест раніше. Якщо щодня відкривати дашборд і зупинятися, щойно p<0,05, частка хибнопозитивних результатів злітає значно вище 5 %. Розмір вибірки — це зобов'язання: визначте його заздалегідь і аналізуйте один раз, або використовуйте метод, створений для безперервного моніторингу (послідовне тестування).
Зупиняти посеред тижня. Навіть якщо потрібну кількість набрали на 23-й день, доведіть тиждень до кінця. Інакше одні дні тижня будуть представлені сильніше за інші.
Рандомізувати одне, а рахувати інше. Якщо ділите на групи користувачів, а рахуєте сесії, спостереження вже не незалежні, і реальна вибірка менша, ніж здається. Плануйте вибірку в тих самих одиницях, що й рандомізацію.
Забувати про кілька варіантів і метрик. Три варіанти проти контролю або десять «основних» метрик — це більше шансів на хибнопозитивний результат. Або коригуйте α (наприклад, поправкою Бонферроні) і закладайте більшу вибірку, або заздалегідь оберіть одну основну метрику.
Ігнорувати невідповідність співвідношення вибірок (SRM). Якщо планували поділ 50/50, а на великих числах вийшло 52/48, щось зламано в розподілі користувачів. Виправте це, перш ніж довіряти будь-якому результату.
Головне
Щоб розрахувати розмір вибірки для A/B-тесту, потрібні чотири параметри: базовий рівень, MDE, α і статистична потужність.
MDE — це бізнесовий вибір: найменший приріст, заради якого варто запускати зміну.
Вибірка росте пропорційно квадрату бажаної точності: зменшили MDE вдвічі — потрібно приблизно вчетверо більше користувачів.
Переводьте користувачів у дні за реальним трафіком і округлюйте вгору до цілих тижнів.
Визначайте обсяг вибірки до запуску і не зупиняйте тест лише тому, що p-значення опустилося нижче 0,05.
FAQ
Який розмір вибірки для A/B-тесту вважається нормальним?
Універсального числа немає: усе залежить від базового рівня і найменшого важливого для вас ефекту. За конверсії 4 % для відносного приросту 10 % при потужності 80 % потрібно близько 39 500 користувачів у групі, а для приросту 30 % — менше 5 000. Рахуйте для своїх параметрів.
Скільки часу має тривати A/B-тест?
Поділіть потрібну загальну вибірку на щоденний трафік, що потрапляє в тест, і округліть угору до повних тижнів. Більшість продуктових тестів мають тривати щонайменше тиждень, а безпечніший мінімум — два, якщо поведінка в будні й вихідні відрізняється.
Що робити, якщо трафіку не вистачає?
Тестуйте сміливіші зміни (більший MDE), беріть метрику вище у воронці з вищим базовим рівнем (наприклад, додавання в кошик замість покупки), зменшуйте мінливість, обрізаючи викиди, або визнайте, що це рішення ухвалюватимуть на основі судження, а не тесту. Найгірший варіант — запустити замалий тест і прочитати його результат як «ефекту немає».
Яку потужність брати: 80 % чи 90 %?
80 % — поширений стандарт. 90 % варто брати, коли пропустити реальний ефект дорого, наприклад якщо результат «ефекту немає» закриє стратегічний проєкт. Для того самого MDE знадобиться приблизно на третину більше користувачів.
Спробуйте на практиці
Планування вибірки стає зрозумілим, коли кілька разів проробиш його на реальних числах. Безкоштовний урок Потужність і розмір вибірки крок за кроком розбирає тест чекауту Котокорму, з тестами на розуміння і практичним завданням, яке перевіряє ШІ. Це частина безкоштовного курсу «Статистика для продакт-менеджерів і маркетологів».