Перейти до змісту
Увійти

Теорія

Наскільки великий і наскільки довгий

Розмір вибірки й тривалість продуктового тесту.

~10 хв читання · 10 вправ · 250 балів

Перед початком

«Тижня вистачить»

Тест paywall у Halves має підписаний план, і Maya пропонує потримати його тиждень, а наступного понеділка подивитися результат. Тижня може вистачити, а може вийти підкидання монетки, тож вона хоче почути твою думку ще до запуску.

У цьому уроці ти побачиш, що тривалість тесту не обирають, а обчислюють: із базового рівня, найменшого ефекту, який варто помітити, ризиків помилки, на які ти погоджуєшся, і того, скільки трафіку щотижня потрапляє в тест.

Чотири вхідні дані, що визначають розмір тесту

Тривалість тесту — не справа смаку. Її розраховують із чотирьох вхідних даних і одного факту про трафік.

  • Базовий рівень (baseline): як часто основна метрика трапляється зараз у тій сукупності, що потрапить у тест. Для paywall: 4,0% тих, хто вперше бачить paywall, оплачують протягом 14 днів.
  • MDE (мінімальний ефект, що виявляється): найменша зміна, яку варто знайти, зазвичай найменший ефект, заради якого варто запускати. Тут +1 п. п., з 4% до 5%.
  • Рівень значущості α: ризик оголосити перемогу, коли зміна нічого не робить. 5%, двобічний.
  • Потужність (power): шанс виявити MDE, якщо він справжній. 80% — звичний мінімум, і це все одно означає шанс 1 з 5 пропустити справжні +1 п. п.

Базовий рівень і MDE описують продукт і бізнес. α і потужність описують, наскільки великий ризик кожної з двох помилок ти приймаєш: хибної перемоги чи пропущеного справжнього ефекту. Разом вони визначають кількість користувачів на варіант.

Сітка з дрібними вічками тримає маленьку рибку, а сітка з великими вічками пропускає таку саму.
Коли користувачів достатньо, малий справжній ефект важко пропустити.

Факт про трафік далі перетворює користувачів на час: скільки придатних користувачів потрапляє в тест щотижня.

  • Так
    Базовий рівень 4,0%, MDE +1 п. п., α 5% двобічне, потужність 80%
  • Не так
    «Запустімо на тиждень і подивимося.»

    Тривалість обрано раніше за будь-які з чотирьох вхідних даних.

Користувачі на варіант для метрики-конверсії

Для метрики, яка є часткою користувачів (оплатив чи ні), стандартна формула порівняння двох часток дає кількість користувачів у кожному варіанті:

n = (z₁ + z₂)² × [p₁(1 − p₁) + p₂(1 − p₂)] ÷ (p₂ − p₁)²

n=(zα/2+zβ)2 [p1(1−p1)+p2(1−p2)](p2−p1)2n = \frac{(z_{\alpha/2}+z_{\beta})^2\,\left[p_1(1-p_1)+p_2(1-p_2)\right]}{(p_2-p_1)^2}
Користувачі на варіант для порівняння двох конверсій: p₁ — базовий рівень, p₂ = p₁ + MDE. Округлюй вгору.
  • p₁ — базовий рівень, p₂ = p₁ + MDE;
  • z₁ = 1,96 для двобічного α = 5%, z₂ = 0,84 для потужності 80%, тож (1,96 + 0,84)² = 7,84.

Для paywall: p₁ = 0,04, p₂ = 0,05.

  • p₁(1 − p₁) = 0,04 × 0,96 = 0,0384; p₂(1 − p₂) = 0,05 × 0,95 = 0,0475; сума 0,0859;
  • (p₂ − p₁)² = 0,01² = 0,0001;
  • n = 7,84 × 0,0859 ÷ 0,0001 = 6734,56 → 6735 на варіант, 13 470 загалом.

Завжди округлюй вгору: з 6734 користувачами потужність буде трохи меншою за 80%. Калькулятори використовують трохи різні варіанти формули, тож відповіді, що різняться на кілька користувачів, — це та сама відповідь.

Найчастіша помилка — змішати одиниці: MDE треба підставляти як частку (0,01), а не як «1».

  • Так
    7,84 × 0,0859 ÷ 0,0001 = 6734,56 → 6735 на варіант
  • Не так
    Подати 6735 як загальну кількість на обидва варіанти

    Формула дає кількість на варіант; тесту потрібно 13 470.

Від користувачів до календарних тижнів

Розмір каже, скільки потрібно користувачів; календар дають ще три кроки.

  1. Поділи на придатний трафік. У тест потрапляють лише ті, хто бачить paywall уперше: близько 3400 на тиждень на обидва варіанти. 13 470 ÷ 3400 = 3,96 тижня.
  2. Округли угору до цілих тижнів. У Halves тижневий ритм: оренду ділять у вихідні, поїздки починаються в п'ятницю. Тест, що зупинився посеред тижня, перебільшує вагу якихось днів, тож 3,96 перетворюється на 4 тижні набору.
  3. Додай вікно метрики. Основна метрика — «оплатив протягом 14 днів». Останньому користувачеві, який потрапив у тест наприкінці 4-го тижня, потрібно ще 14 днів, щоб його результат став відомим. 4 + 2 = 6 тижнів від запуску до результату.
Колесо із сімома спицями котиться дорогою й залишає помаранчеву позначку після кожного повного оберту.
Тест має тривати цілі тижні, щоб кожен день тижня важив однаково.

Крок 3 забувають найчастіше. Якщо прочитати тест наприкінці 4-го тижня, користувачів останніх двох тижнів зарахують раніше, ніж більшість із них узагалі могла б оплатити, а це тягне вниз обидва варіанти й розмиває різницю.

Запиши дату читання результату в план у день запуску, щоб ні в кого не було спокуси прочитати його раніше.

Базовий рівень, MDE, значущість і потужність дають 6735 користувачів на варіант; при 3400 на тиждень це 4 тижні набору і результат через 6 тижнів.
  • Так
    3,96 → 4 тижні набору + 2 тижні вікна = 6 тижнів
  • Не так
    Прочитати результат на 28-й день, коли закінчується набір

    Останні користувачі ще не мали своїх 14 днів на оплату.

Трафік задає календар

Кількість користувачів на варіант залежить лише від чотирьох вхідних даних. А скільки часу знадобиться, щоб їх набрати, залежить від придатного трафіку, який змінюється із сезоном, маркетинговим бюджетом і тим, хто вважається придатним.

Якщо paywall уперше бачать 2000 людей на тиждень замість 3400, ті самі 13 470 користувачів наберуться за 13 470 ÷ 2000 = 6,7 тижня. Після округлення до цілих тижнів це 7, плюс 2-тижневе вікно: 9 тижнів до результату.

Три способи помилитися:

  • Рахувати весь трафік замість придатного. У тест потрапляють лише ті, хто вперше бачить paywall; щоденні активні користувачі чи всі реєстрації перебільшують приплив.
  • Вважати трафік сталим. Тест, спланований у жвавий місяць, а запущений у тихий, не добере людей; перевір прогноз саме на ці тижні.
  • Зупинятися на заплановану дату незалежно від кількості. План фіксує кількість користувачів, а дата — лише її оцінка. Якщо набір іде повільно, продовжуй до наступного цілого тижня; не читай раніше.

Якщо календар задовгий, змінюй вхідні дані (сміливіша зміна з більшим MDE чи більше придатного трафіку), а не прочитання.

  • Так
    13 470 ÷ 2000 = 6,7 → 7 тижнів + 2 = 9 тижнів
  • Не так
    «У Halves десятки тисяч користувачів на тиждень, тож тест наберемо за кілька днів.»

    Придатні лише ті, хто вперше бачить paywall.

Удвічі менший ефект — учетверо більше користувачів

MDE стоїть у квадраті в знаменнику формули розміру. Тому це найсильніший вхідний параметр: щоб виявити удвічі менший ефект, потрібно приблизно вчетверо більше користувачів, а не вдвічі.

Великий камінь добре видно під маленькою лампою, а крихітний камінчик поруч потребує величезного прожектора.
Удвічі менший ефект, який хочеш помітити, потребує приблизно вчетверо більше користувачів.

Формула: Користувачі на варіант для порівняння двох конверсій: p₁ — базовий рівень, p₂ = p₁ + MDE. Округлюй вгору. · є вище

Для 4,0% → 4,5% (MDE +0,5 п. п.):

  • 0,04 × 0,96 = 0,0384; 0,045 × 0,955 = 0,042975; сума 0,081375;
  • (0,005)² = 0,000025;
  • n = 7,84 × 0,081375 ÷ 0,000025 = 25 519,2 → 25 520 на варіант.

Це в 3,8 раза більше, ніж 6735 для +1 п. п. Трохи менше за 4, бо доданок дисперсії трохи зменшується, коли p₂ ближче до базового рівня. У календарі: 51 040 користувачів ÷ 3400 на тиждень = 15,0 → 16 цілих тижнів набору при округленні вгору, ще до 14-денного вікна.

Висновок для планування: малі ефекти дорогі. Коли ефект, який тебе цікавить, замалий, щоб твій трафік виявив його за розумний час, корисний крок — протестувати сміливішу зміну, яка правдоподібно дасть більший ефект, а не ганяти дрібне покращення цілий сезон.

  • Так
    MDE +0,5 п. п.: 7,84 × 0,081375 ÷ 0,000025 → 25 520 на варіант
  • Не так
    «Удвічі менший ефект, отже, 2 × 6735 = 13 470 на варіант.»

    Ефект стоїть у квадраті: приблизно 4×, а не 2×.

Що змінює потрібний розмір

Кожен вхідний параметр тягне потрібну кількість користувачів у передбачуваний бік. Для тесту paywall (6735 на варіант при базовому рівні 4%, MDE +1 п. п., α 5%, потужності 80%):

  • Вища потужність (90% замість 80%): z₂ зростає з 0,84 до 1,28, тож n зростає приблизно до 9030 на варіант.
  • Суворіше α (1% замість 5%): z₁ зростає з 1,96 до 2,58, тож n зростає приблизно до 10 030.
  • Нерівний поділ (90/10 замість 50/50): вузьким місцем стає малий варіант. Для тієї самої потужності загальна кількість зростає майже втричі порівняно з 50/50.
  • Більший MDE (+1,5 п. п. замість +1 п. п.): n падає приблизно до 3150, бо ефект у знаменнику стоїть у квадраті.
  • Вищий базовий рівень за того самого абсолютного MDE: більша дисперсія, тож більше користувачів. За 8% ті самі +1 п. п. потребують 12 192 на варіант.

Отже, зі статистичного боку є один чесний спосіб потребувати менше користувачів — більший MDE, і він не безкоштовний: треба вірити, що зміна здатна настільки зрушити метрику. А знизити потужність — значить просто погодитися на більший шанс пропустити справжній ефект.

  • Так
    MDE +1,5 п. п. → близько 3150 на варіант замість 6735
  • Не так
    «Пустимо на новий paywall лише 10%, щоб менше ризикувати; це буде так само швидко.»

    Малому варіанту потрібно стільки ж користувачів, тож тест триватиме значно довше.

Як обрати MDE: вартий запуску і досяжний

MDE — це бізнесове рішення зі статистичною ціною. Його задають два питання:

  1. Що варто запускати? Найменший ефект, який окупить зміну, її підтримку й ризики. Для paywall план каже +1 п. п.
  2. Що здатен знайти трафік? Ефект, який можна виявити за прийнятний календар.

На другому питанні й дається взнаки квадрат ефекту. За базового рівня 4%:

  • +0,5 п. п. потребує 25 520 на варіант, близько 16 тижнів набору;
  • +1 п. п. потребує 6735 на варіант, 4 тижні;
  • +1,5 п. п. потребує 7,84 × (0,0384 + 0,055 × 0,945) ÷ 0,015² = 7,84 × 0,090375 ÷ 0,000225 = 3149,07 → 3150 на варіант, 6300 загалом, тобто 2 тижні набору.

Більший MDE чесний, лише якщо зміна правдоподібно може його дати. Розрахувати тест на +1,5 п. п., а потім запустити дрібну правку тексту — значить отримати тест, який, найімовірніше, пропустить справжній менший ефект і покаже «незначуще».

Якщо ефект, вартий запуску, менший за будь-що, що здатен знайти трафік, відповідь — сміливіша зміна або рішення без тесту, чесно назване таким.

  • Так
    +1,5 п. п.: 7,84 × 0,090375 ÷ 0,000225 → 3150 на варіант
  • Не так
    Розрахувати тест на +1,5 п. п., щоб швидко закінчити, а потім тестувати колір кнопки

    MDE має бути ефектом, який зміна правдоподібно може дати.

Читати один раз, на запланованому обсязі

Тест читають один раз, на обсязі й у дату, зафіксовані в плані. Знову й знову перевіряти його й зупинитися в добрий день — це підглядання (peeking), і воно ламає рівень помилок тесту.

Хибна перемога з імовірністю 5% — це про одне прочитання. Поки надходять користувачі, шумна метрика гуляє вгору й униз. Якщо дивитися щоранку й зупинитися, щойно вона вперше перетне лінію, випадок щодня отримує нову спробу: справжній ризик хибної перемоги стає в кілька разів вищим за 5%. До того ж день першого перетину зазвичай припадає на пік, тож ефект, який ти покажеш, завищений.

Для тривалості є своє правило: цілі тижні, що охоплюють щонайменше один повний цикл використання, плюс вікно метрики. Будні й вихідні поводяться по-різному, а перші дні після зміни можуть вводити в оману в обидва боки: люди клацають нове з цікавості або спотикаються, поки звикають.

Якщо раннє зупинення через явну шкоду чи величезний виграш справді потрібне, бери послідовний дизайн (sequential design) зі суворішими порогами, спланований до запуску. Рання зупинка, вигадана в добрий день, ним не є.

  • Так
    Результат після 4 повних тижнів набору плюс 14-денне вікно; до того основну метрику ніхто не читає
  • Не так
    «На дев'ятий день виглядає добре — зупиняємо й запускаємо.»

    Дев'ятий день — один із багатьох поглядів; шумна метрика час від часу перетинає лінію випадково.

Короткий тест не може сказати «ефекту немає»

Тиждень трафіку paywall дає близько 1700 користувачів на варіант. Звучить як багато людей, але потужність — це про докази, а не про кількість голів.

З 1700 на варіант стандартна похибка різниці становить √(0,0859 ÷ 1700) ≈ 0,0071, тобто 0,71 п. п. Справжній ефект +1 п. п. віддалений від нуля лише приблизно на 1,4 стандартної похибки, а для значущості здебільшого потрібно 1,96. Шанс його виявити, тобто потужність, — близько 29%: у семи з десяти таких тестів paywall, який справді працює, вийшов би «незначущим».

Тому недостатньо потужний результат не можна читати як «paywall не працює». Його інтервал, приблизно ±1,4 п. п. навколо оцінки, містив би і нуль, і ефект, що тебе цікавить: за правилом рішення це непевний результат. Зупинитися раніше на чудовому першому тижні — теж не вихід; це пастка підглядання: перевіряти знову й знову й зупинитися в добрий день.

Як це складається докупи: чотири вхідні дані задають кількість користувачів, придатний трафік і вікно метрики задають календар, MDE — найдорожчий важіль, а результат читають один раз, на цьому обсязі. Далі урок Хто потрапляє в тест: тригери й кластерна рандомізація.

  • Так
    «1700 на варіант дають ~29% потужності для +1 п. п.; нульовий результат майже нічого б не сказав.»
  • Не так
    «Через тиждень незначуще, отже, paywall із тріалом не допомагає.»

    З потужністю 29% справжні +1 п. п. здебільшого пропускають.

Готові потренуватися?

Виконайте вправи уроку й отримайте 250 балів, коли пройдете його вперше.

Розпочати вправи