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

Теорія

Кейс: читаємо завершений тест

Ефект, інтервал, guardrail-метрики і рішення.

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

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

Кейс: через шість тижнів

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

Цей кейс завершує модуль. Ти прочитаєш завершений тест у тому порядку, який план зафіксував до запуску: розподіл, основна метрика з інтервалом, guardrail-метрика і правило рішення.

Перша перевірка: чи поділ такий, як задумано?

Перш ніж читати будь-яку метрику, перевір, що тест розподілив користувачів так, як казав план. За поділу 50/50 варіанти мають бути близькими за розміром, але ніколи не рівно однаковими: випадковий розподіл коливається.

Швидка перевірка — хі-квадрат на кількостях. Якщо всього N користувачів, кожен варіант очікувано отримує E = N ÷ 2. Тоді:

χ² = (n₁ − E)² ÷ E + (n₂ − E)² ÷ E

Для тесту paywall: N = 6897 + 6792 = 13 689, E = 6844,5. Кожен варіант відхиляється від E на 52,5 користувача, тож χ² = 2 × 52,5² ÷ 6844,5 ≈ 0,81. Поріг для одного ступеня свободи на рівні 5% — 3,84; 0,81 значно менше, тож поділ у порядку.

Поділ на кшталт 7400 проти 6300 дає χ² ≈ 88: забагато перекосу, щоб бути випадковістю. Це перекіс поділу вибірки (sample ratio mismatch, SRM), і майже завжди він означає баг: один варіант падає на старих телефонах, записує частину користувачів двічі чи губить їх на переадресації. Баг зазвичай б'є по певному типу користувачів, тож групи перестають бути порівнюваними. Виправ його й перезапусти тест; результат не тлумач.

Двоє терезів: на одних дві майже рівні купки фігурок людей і вони врівноважені, інші різко нахилилися вбік.
Спершу перевір поділ: перекошений поділ зазвичай означає баг.
  • Так
    6897 проти 6792: χ² ≈ 0,81 < 3,84 → поділ у порядку, читаємо далі
  • Не так
    7400 проти 6300: «досить близько, гляньмо на конверсію»

    χ² ≈ 88: зламане призначення, а не результат.

Спершу додай кількості, потім діли

Частку варіанта дає об'єднання — правило для будь-якої частки, зібраної з частин: додай його кількості з усіх рядків, а потім поділи один раз. Тут у датасеті один рядок на тиждень включення, платформу й варіант, вісім рядків на варіант:

Набір даних · 16 рядків

Тест paywall Halves: control проти trial_first

Користувачі, включені в момент першого перегляду paywall, 3–30 серпня 2026 року; кожного спостерігали 14 днів. Один рядок на тиждень включення, платформу й варіант.

enroll_weekplatformvariantuserstrials_startedpaid_14dactive_days_8_14
2026-08-03ioscontrol10028243623
2026-08-03iostrial_first97416159601
2026-08-03androidcontrol7156627429
2026-08-03androidtrial_first72010833430
2026-08-10ioscontrol10098839612

Перші 5 з 16 рядків

Завантажити CSV

Частка = Σ paid_14d ÷ Σ users

Control: paid_14d = 43 + 27 + 39 + 23 + 39 + 27 + 40 + 22 = 260; users = 1002 + 715 + 1009 + 714 + 1041 + 709 + 992 + 715 = 6897. Частка: 260 ÷ 6897 = 3,77%. trial_first: 345 ÷ 6792 = 5,08%.

Не усереднюй вісім часток рядків. Рядки різного розміру (у рядках iOS близько 1000 користувачів, Android — близько 700), тож просте середнє часток дає малому рядку Android ту саму вагу, що й великому рядку iOS. Об'єднана частка рахує кожного користувача один раз, а саме це й означає метрика з плану («частка користувачів тесту, які оплатили протягом 14 днів»).

Зберігай достатньо знаків у проміжних кроках. 260 ÷ 6897 = 3,7697%; якщо округлити до 3,8% перед відніманням, ефект зсунеться на кілька сотих пункту.

  • Так
    Control: 260 ÷ 6897 = 3,77%
  • Не так
    Середнє восьми часток «тиждень × платформа» для control

    Дає малим рядкам Android ту саму вагу, що й великим рядкам iOS.

Ефект: тест − контроль, у пунктах

Ефект тесту завжди подають як тест − контроль, а для частки ця різниця вимірюється у відсоткових пунктах (п. п.).

5,0795% − 3,7697% = +1,31 п. п.

Знак має значення: додатний означає, що нова версія вища. Якщо записати «контроль − тест», знак перевернеться, і кожен, хто звірятиме число з планом, заплутається.

Відношення двох часток дає відносний приріст: 5,0795 ÷ 3,7697 − 1 = +34,7%. Це правильне число, але інше, і його треба підписувати як відносне. «+34,7%» без підпису підштовхує читача думати, що конверсія зросла з 3,77% приблизно до 38%, або просто звучить гучніше за бізнесову зміну, яку описує.

План записано в пунктах (найменший ефект, заради якого варто запускати, — +1 п. п.), тож і рішення читають у пунктах. Добра звичка — давати базовий рівень, нову частку й різницю разом, а відносний приріст у дужках, якщо комусь потрібен: «3,77% → 5,08%, +1,31 п. п. (відносно +34,7%)». Такий рядок неможливо прочитати хибно.

  • Так
    5,0795 − 3,7697 = +1,31 п. п.
  • Не так
    5,08 ÷ 3,77 = 1,35 → «ефект: 1,35»

    Відношення, подане як ефект, ще й без одиниці.

Інтервал для різниці двох часток

Для кожної частки бери 95% інтервал Вілсона (Wilson): він лишається розумним для малих часток, як-от 4%, де проста формула «p ± 1,96 × стандартна похибка» вводить в оману. Control (260 з 6897): від 3,35% до 4,25%. trial_first (345 з 6792): від 4,58% до 5,63%.

p+z22n±zp(1−p)n+z24n21+z2n\frac{p + \frac{z^2}{2n} \pm z\sqrt{\frac{p(1-p)}{n} + \frac{z^2}{4n^2}}}{1 + \frac{z^2}{n}}
95% інтервал Вілсона для частки p = x / n, z = 1,96. Control: від 3,35% до 4,25%. trial_first: від 4,58% до 5,63%.

Для ефекту d = p_T − p_C поєднай два інтервали. Кожна межа ефекту бере відстані, що штовхають її в той самий бік:

L=d−(pT−LT)2+(UC−pC)2,U=d+(UT−pT)2+(pC−LC)2L = d - \sqrt{(p_T - L_T)^2 + (U_C - p_C)^2}, \quad U = d + \sqrt{(U_T - p_T)^2 + (p_C - L_C)^2}
Інтервал для d = p_T − p_C (тест − контроль) з інтервалів Вілсона [L_T, U_T] і [L_C, U_C].
  • нижня межа: trial_first може бути нижчим (p_T − L_T = 5,08 − 4,58 = 0,50), а control — вищим (U_C − p_C = 4,25 − 3,77 = 0,48). L = 1,31 − √(0,50² + 0,48²) = 1,31 − 0,693 = +0,62 п. п.
  • верхня межа: trial_first вищий (U_T − p_T = 0,55), control нижчий (p_C − L_C = 0,42). U = 1,31 + √(0,55² + 0,42²) = 1,31 + 0,692 = +2,00 п. п.

Отже: +1,31 п. п., 95% інтервал від +0,62 до +2,00 п. п. Поширена помилка — віднімати межі напряму (4,58 − 4,25 = 0,33), ніби обидві частки одночасно стоять на своїх крайніх значеннях.

Дві групи стріл у мішені, кожна трохи розкидана, але групи чітко відокремлені одна від одної.
Ефект завжди має діапазон; тут увесь діапазон вищий за нуль.
  • Так
    L = 1,31 − √(0,50² + 0,48²) = 1,31 − 0,693 = +0,62 п. п.
  • Не так
    L = 4,58 − 4,25 = +0,33 п. п.

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

Головний рядок, який не прочитати хибно

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

  1. основну метрику за назвою, як у плані;
  2. обидві частки, щоб було видно базовий рівень;
  3. ефект у пунктах, тест − контроль;
  4. його 95% інтервал;
  5. відносний приріст — лише якщо корисний, і з підписом «відносний».

Для paywall: «Оплата протягом 14 днів: 3,77% → 5,08%, +1,31 п. п. (95% інтервал від +0,62 до +2,00 п. п.); відносний приріст +34,7%».

Порівняй з «Конверсія в оплату +35%». Тут немає базового рівня, одиниці й невизначеності, а «+35%» звучить як інша, більша зміна, ніж та, що сталася. Ще гірше почати з другорядної метрики, як-от «Тріали +74%»: рішення ухвалювали не за цим числом.

Головний рядок — не місце для прикметників («величезний», «майже значущий»). Числа з одиницею та інтервалом уже кажуть, наскільки великий ефект і наскільки ми впевнені.

  • Так
    «Оплата протягом 14 днів: 3,77% → 5,08%, +1,31 п. п. (від +0,62 до +2,00).»
  • Не так
    «Конверсія в оплату +35%!»

    Ні базового рівня, ні одиниці, ні інтервалу, і читається як більша зміна.

Як застосувати правило, записане до запуску

Прочитати запланований тест — здебільшого звірити числа з планом, у його порядку:

  1. Поділ: збалансований (χ² ≈ 0,81).
  2. Розмір і потужність: 6897 і 6792 користувачі проти запланованих 6735 на варіант, повні 4 тижні плюс 14-денне вікно. Тест мав потужність, на яку його будували.
  3. Основна: +1,31 п. п., 95% інтервал від +0,62 до +2,00 п. п., повністю вище за 0.
  4. Запобіжна (guardrail): витрата на 8–14-й день, 60,53% → 60,60%, +0,07 п. п., інтервал від −1,57 до +1,70 п. п., повністю вище за запас −3 п. п.
  5. Правило: обидві умови запуску виконано, тож запускаємо trial_first для всіх користувачів.
Основний ефект +1,31 п. п. (від +0,62 до +2,00) вище за 0, guardrail вище за −3 п. п., тож paywall запускаємо; лише Android — непевний.

Два моменти часто збивають. По-перше, інтервал основної метрики містить +1 п. п., найменший ефект, заради якого варто запускати. Це не блокує рішення: правило вимагає інтервалу вище за нуль, а точкова оцінка вища за +1. По-друге, різниця за запобіжною метрикою незначуща, і це саме той результат, на який сподівалися: інтервал виключає шкоду понад запас. «Незначуща» запобіжна метрика — проблема лише тоді, коли її інтервал ще й виходить за запас.

  • Так
    Основна від +0,62 до +2,00 > 0; запобіжна −1,57 > −3 → запускаємо для всіх
  • Не так
    «Інтервал містить +1 п. п., тож тест треба повторити.»

    Правило вимагає інтервалу вище за 0, і цей інтервал саме такий.

Другорядні метрики пояснюють, а не вирішують

Тріали — найяскравіше число в цьому тесті. Після об'єднання рядків: control 587 з 6897 = 8,51%, trial_first 1004 з 6792 = 14,78%. Ефект — 14,78 − 8,51 = +6,27 п. п.; як відносний приріст — 14,78 ÷ 8,51 − 1 = +73,7%, звідси й «Тріали +74%».

Датасет: Тест paywall Halves: control проти trial_first · є вище

Але це однаково другорядна метрика. Вона показує, як спрацював paywall: тріал на початку змусив значно більше людей спробувати Plus, і частина з них заплатила. Вона не показує, чи спрацював paywall для бізнесу. Це каже основна метрика, +1,31 п. п. платних користувачів, і вона набагато менша за стрибок тріалів: багато додаткових тріалів так і не стали оплатами.

Три правила тримають другорядні метрики на своєму місці:

  • показуй їх після основної, ніколи не як головне число;
  • подавай їх так само: пункти, підписаний відносний приріст і, бажано, інтервал;
  • пам'ятай, що рішення ухвалювали не за ними, а кожна додаткова метрика — ще одна нагода випадкової різниці.

Чесний слайд для всієї команди каже: «більше людей спробували Plus, а конверсія в оплату зросла на 1,31 пункту».

  • Так
    Тріали 8,51% → 14,78%, +6,27 п. п. (відносно +74%), після основної метрики
  • Не так
    Головне число: «Тріали +74%»

    Другорядна метрика у відносному прирості, подана як результат.

Підгрупи, знайдені після тесту

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

Тест paywall показує, як зрізи вводять в оману в обидва боки:

  • Android: +0,29 п. п., інтервал від −0,69 до +1,28 п. п. Він містить і 0, і +1 п. п., тож це непевний результат, а не «немає ефекту»: з менше ніж 3000 користувачів на варіант тест не може сказати.
  • iOS: основна метрика виглядає чудово, +2,00 п. п. (від +1,05 до +2,96), але інтервал запобіжної метрики на iOS, від −3,66 до +0,60 п. п., виходить за запас −3 п. п. Як окремий тест iOS не пройшов би запобіжну перевірку.

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

Як це складається докупи: перевірити розподіл, об'єднати, відняти «тест − контроль», додати інтервал, застосувати записане правило, а потім пояснювати другорядними метриками й тримати зрізи як питання. Модуль 5 відповів, чи спрацювала зміна; наступний модуль питає, що можна дізнатися без тесту.

Хтось тримає один блискучий камінчик, вибраний із купи звичайних, а колега показує на всю купу.
Привабливий зріз — не результат; результат — заздалегідь обране головне число.
  • Так
    «Android: +0,29 п. п. (від −0,69 до +1,28), непевно; стежитимемо за його конверсією в оплату після запуску.»
  • Не так
    «На iOS +2 п. п., Android нічого не показує: запускаємо лише на iOS.»

    Рішення за незапланованими зрізами; iOS окремо навіть не пройшов би запобіжну перевірку.

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

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

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