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

Теорія

Пастки: підглядання, множинні порівняння, ефект новизни

Найпоширеніші способи, якими реальні A/B-тести йдуть не так, і як цього уникнути.

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

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

Значущо вже за два дні?

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

Цей урок завершує модуль найпоширенішими способами, якими справжні A/B-тести йдуть не так: підглядання в результати, забагато метрик одночасно і сплеск новизни, який приймають за стійкий ефект.

Підглядання: чому рання зупинка множить хибнопозитивні результати

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

Поки тест триває, p-значення блукає. Навіть коли варіант нічого не змінює, воно гуляє вгору-вниз з приходом нових користувачів і час від часу опускається нижче 0,05, а потім повертається. Якщо перевіряти знову і знову й зупинитися при першому перетині, це вже не один тест. Це кілька тестів, з яких залишають найвдаліший.

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

Симуляції тесту без реального ефекту показують, як швидко це зростає. Перевірки через рівні проміжки й зупинка при першому p < 0,05:

  • 1 перевірка: приблизно 5%;
  • 5 перевірок: приблизно 14%;
  • 10 перевірок: приблизно 19%;
  • 20 перевірок: приблизно 25%.

Якщо заглядати в дашборд щодекілька годин, перевірок легко набирається кілька десятків.

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

  • Так
    «p = 0,03 на 2-й день із 14. Беремо до відома; рішення — на запланованому обсязі вибірки».
  • Не так
    «Після шести перевірок нарешті вийшло значущо. Зупиняємо тест і запускаємо».

    Зупинка на першому вдалому моменті роздуває частку хибнопозитивних результатів.

Множинні порівняння: більше метрик — більше випадковостей

Кожен критерій при α = 0,05 має 5% шансу на хибнопозитивний результат. Проведи кілька — і шанс, що хоча б один спрацює випадково, швидко росте. Для m незалежних метрик, які насправді не змінилися:

P(хоча б один хибнопозитивний) = 1 − (1 − α)^m

Для 5 метрик: 1 − 0,95⁵ = 1 − 0,7738 ≈ 22,6%. Для 20 метрик: 1 − 0,95²⁰ ≈ 64,2%. Звіт про тест із двадцятьма метриками найімовірніше міститиме «значущий» результат, який нічого не означає.

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

Це проблема множинних порівнянь. Вона з'являється щоразу, коли один тест розрізають на багато частин: багато метрик, багато сегментів (мобільні, десктоп, нові користувачі, міста) або багато варіантів проти одного контролю.

Швидке наближення — m × α (5 × 5% = 25%), і для малих чисел воно близьке. Для багатьох метрик воно ламається: 20 × 5% = 100%, а це неможливо. Користуйся формулою.

Реальні метрики часто корелюють, тож точне число буде іншим, але напрям — ніколи: що більше дивишся, то ймовірніша випадковість.

  • Так
    1 − 0,95⁵ = 1 − 0,7738 ≈ 22,6%
  • Не так
    20 метрик × 5% = 100% шансу на випадковість

    Додавання ймовірностей годиться лише для малих випадків; насправді це приблизно 64%.

Поправка Бонферроні

Найпростіше рішення проблеми множинних порівнянь — поправка Бонферроні: поділити загальний (сімейний) рівень значущості на кількість порівнянь m і тримати кожен критерій на цій суворішій планці.

α на тест = сімейний α / m

αper test=αfamilym\alpha_{\text{per test}} = \frac{\alpha_{\text{family}}}{m}
Поправка Бонферроні: поділити бажаний загальний (сімейний) рівень значущості на кількість порівнянь m.

Для 5 метрик при сімейному 0,05: 0,05 / 5 = 0,01. Тепер метрика вважається значущою, лише якщо її власне p-значення менше за 0,01.

Що виграєш: шанс хоча б одного хибнопозитивного результату по всій сім'ї лишається не вищим за 5%. Що платиш: кожному критерію потрібен сильніший сигнал, тож потужність падає, а за багатьох метрик планка стає дуже високою (0,05 / 20 = 0,0025).

Саме через цю ціну добрий план тесту намагається з самого початку тримати m малим:

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

Поправка Бонферроні навмисно консервативна: краще пропустити граничний ефект, ніж святкувати випадковість.

  • Так
    «П’ять метрик, тож кожній потрібно p < 0,05 / 5 = 0,01».
  • Не так
    «П’ять метрик, тож кожна може мати поріг 0,05 × 5 = 0,25».

    Множить замість ділити, і кожен критерій стає м’якшим.

Що дає поправка

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

Формула: Поправка Бонферроні: поділити бажаний загальний (сімейний) рівень значущості на кількість порівнянь m. · є вище

P(хоча б один хибнопозитивний) = 1 − (1 − α на тест)^m

Для 5 незалежних метрик по 0,01: 1 − 0,99⁵ = 1 − 0,9510 ≈ 4,9%. Без поправки було 1 − 0,95⁵ ≈ 22,6%. Сімейний ризик знову нижчий за ті 5%, які планували прийняти.

Результат завжди трохи нижчий за ціль, бо поправка Бонферроні трохи консервативна. Для 20 метрик по 0,0025: 1 − 0,9975²⁰ ≈ 4,9% знову.

Типова помилка — вважати, що після поправки кожна метрика «досі має свої 5%», або застосувати поправку до однієї метрики й забути про інші. Захист працює, лише якщо кожну метрику в сім'ї тримають на тій самій суворішій планці.

І пам'ятай про компроміс: загальний ризик хибної тривоги впав з 22,6% до 4,9%, але кожній метриці тепер потрібен чіткіший сигнал, щоб її визнали значущою.

  • Так
    1 − 0,99⁵ ≈ 4,9%
  • Не так
    1 − 0,95⁵ ≈ 22,6% «навіть після поправки»

    Бере непоправлене 0,05 замість 0,01 на тест.

Як читати p-значення після поправки

Якщо вже вирішено робити поправку на множинні порівняння, кожне p-значення треба читати відносно виправленої планки, а не звичних 0,05.

Є два рівноцінні способи:

  • порівняти з α / m: для 10 метрик планка — 0,05 / 10 = 0,005. p-значення 0,008 її не долає; 0,003 — долає;
  • скоригувати p-значення: помножити його на m (але не більше 1) і порівняти з 0,05. 0,008 × 10 = 0,08 — не значуще; 0,003 × 10 = 0,03 — значуще.

Формула: Поправка Бонферроні: поділити бажаний загальний (сімейний) рівень значущості на кількість порівнянь m. · є вище

Обидва дають ту саму відповідь. Скоригована версія зручна у звітах, бо читачі можуть і далі тримати 0,05 за межу.

Пастка — у рефлексі: p = 0,008 виглядає вражаюче, значно нижче за 0,05, і хочеться святкувати. Але ця метрика була однією з десяти спроб, і поправка існує саме для того, щоб не святкувати найкращу з десяти.

У звіті вкажи, яку поправку застосовано і скільки порівнянь вона охоплює: «Бонферроні на 10 метрик, скориговане p = 0,08». Тоді рішення можна перевірити.

  • Так
    p = 0,008, 10 метрик: 0,008 > 0,005 (або скориговане 0,08 > 0,05): не значуще.
  • Не так
    «Ми застосували Бонферроні, і p = 0,008 < 0,05, тож значуще».

    Згадує поправку, але порівнює з непоправленим 0,05.

Як розпізнати ефект новизни

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

Ліворуч кіт захоплено стрибає до нової блискучої миски; праворуч той самий кіт знуджено лежить біля тієї ж миски.
Дехто реагує на саму зміну, і ця реакція згасає, щойно новизна минає.

Це важливо, бо тест вимірює лише ті тижні, поки триває. Якщо більша частина приросту припадає на перший тиждень, середнє за період тесту завищує те, що буде в наступному кварталі.

Допомагають три перевірки:

  • показати ефект по тижнях, а не лише загалом. Приріст, що стабільно меншає (+3, +1, +0,2 пункту), — класична форма;
  • розділити нових і постійних користувачів. Новим нема з чим порівнювати стару версію, тож приріст лише серед постійних — тривожний знак;
  • тестувати повними тижнями і достатньо довго, щоб крива встигла вирівнятися; для помітної зміни часто щонайменше два-три тижні.

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

  • Так
    «По тижнях: +3, +1, +0,2 пункту; лише серед постійних. Плануємо близько нуля, а не +1,4».
  • Не так
    «Перший день показав +3 пункти, заносимо це в дорожню карту».

    Сприймає початковий сплеск як стійкий ефект.

Як дивитися раніше й не обманювати себе

Іноді є добрі причини подивитися до запланованого кінця: зламаний варіант, великі втрати, дедлайн. Є два чесні способи це зробити.

Дивитися, але не вирішувати. Стеж за багами й катастрофами (нуль конверсій, помилки, обвал виручки) і зупиняй через них. Не зупиняй через те, що результат виглядає добре. Рішення про значущість чекає на запланований обсяг вибірки.

Використати метод, розрахований на повторні перевірки. Послідовне тестування планує проміжні перевірки заздалегідь і розподіляє між ними «бюджет» помилки в 5%. Типовий графік вимагає дуже сильних доказів на ранніх перевірках (p-значення значно нижче 0,05) і залишає щось близьке до 0,05 для фінальної. Тоді загальна частка хибнопозитивних результатів лишається 5%, скільки б запланованих перевірок не було зроблено.

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

  • Так
    «Три заплановані перевірки: суворий поріг на ранніх і близький до 0,05 на фінальній, записано до запуску».
  • Не так
    «Зупинимося, щойно p < 0,05 буде два дні поспіль».

    Імпровізоване правило з невідомою часткою помилок.

Чотири пастки — чотири різні запитання

Ці пастки звучать схоже, але кожна ставить тесту своє запитання:

  • Підглядання (передчасна зупинка): коли ухвалено рішення? Повторні перевірки й зупинка на першому значущому моменті з часом множать хибнопозитивні результати.
  • Множинні порівняння: скільки всього перевіряли? Багато метрик чи сегментів роблять імовірним, що одна виглядатиме значущою випадково.
  • Ефект новизни: чи це триватиме? Користувачі реагують на саму зміну; спершу ефект реальний, але згасає.
  • Невідповідність співвідношення вибірок (SRM): чи спрацював розподіл? Якщо тест планували 50/50, а в одній групі 10 000 користувачів, у другій — 10 600, такий розрив завеликий для випадковості (критерій хі-квадрат проти очікуваних 10 300 у кожній дає p < 0,001). Щось зламано в розподілі чи логуванні, і жодному результату тесту не можна довіряти, доки причину не знайдено.

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

  • Так
    «Розподіл перевірено, рішення на запланованому n, одна основна метрика, ефект стабільний на 2-му тижні. Довіряємо».
  • Не так
    «Групи вийшли 10 000 проти 10 600, але приріст значущий, тож це не важливо».

    Зламаний розподіл сам по собі може створити фальшивий приріст.

Звідки беруться хибні переможці

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

Три класичні шляхи:

  • зупинка на вдалому моменті: щоденне підглядання й завершення тесту, щойно p опускається нижче 0,05;
  • вибір вдалої метрики: перевірити 20 метрик і звітувати про ту, що вийшла значущою. За 20 незалежних спроб випадковість імовірніша, ніж її відсутність;
  • вимірювання ажіотажу: ефект новизни, через який перший тиждень виглядає чудово, а потім усе згасає.

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

Зверни увагу: «провести тест до повного заздалегідь зареєстрованого обсягу вибірки» — це зовсім не пастка, а звичка, яка запобігає першій із них.

  • Так
    «Основна метрика: конверсія чекауту. n = 8 146 на варіант, 4 повні тижні. Усі 6 захисних метрик у звіті».
  • Не так
    «З наших 20 метрик значуще зросло додавання в обране. Це й буде заголовок».

    Обирає одного ймовірно випадкового переможця з 20 спроб.

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

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

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