Результаты A/B-тестирования: как читать и когда катить
Что на самом деле значат p-value, доверительный интервал и мощность, как выглядит один и тот же прирост на разной выборке, и семь способов получить победу, которой нет: подглядывание, множественные сравнения, парадокс Симпсона, сезонность.
Отчёт A/B-теста выглядит убедительно: две конверсии, прирост в процентах, p-value, зелёная плашка «победил B». Проблема в том, что из этих чисел легко сделать вывод, которого в них нет.
Из чего состоит результат
- Конверсии вариантов — доли, а не абсолютные числа. Обе нужны с объёмом выборки: 23 % из 1 000 и 23 % из 30 000 — это очень разные 23 %.
- Разница — в процентных пунктах (23 % − 20 % = 3 п.п.) и относительная (+15 %). Путать их — классика отчётов: «+15 %» звучит внушительнее, «+3 п.п.» честнее.
- Доверительный интервал разницы — диапазон, в котором правдоподобно лежит настоящий эффект.
- p-value — насколько такие данные неожиданны, если разницы на самом деле нет.
- Мощность — с какой вероятностью тест вообще способен был заметить эффект такого размера.
p-value: что это значит и чего не значит
p-value = 0,03 означает: если бы разницы между вариантами не было, данные с таким или большим разрывом получались бы примерно в 3 % повторов теста. Всё.
Чего p-value не означает:
- это не вероятность того, что B лучше A;
- это не вероятность того, что вы ошибаетесь;
- это не размер эффекта: p = 0,001 не значит «прирост огромный», а значит «данных много»;
- p = 0,06 и p = 0,04 — не «нет эффекта» и «есть эффект», а два очень похожих результата по разные стороны договорённого порога.
На вопрос «с какой вероятностью B лучше» отвечает байесовский подход: он даёт P(B > A) и ожидаемые потери при неверном выборе. В калькуляторе A/B-тестов это отдельная вкладка, а в статистике тестов Clew — строка «вероятность, что B лучше». Дисциплину это не отменяет: подглядывание портит и байесовский вывод.
Доверительный интервал — главное число в отчёте
Интервал показывает не только «есть или нет», но и «сколько». Сравните два теста с одинаковым приростом конверсии с 20 % до 23 %:
- 1 000 посетителей на вариант (200 и 230 конверсий): разница +3,0 п.п., интервал от −0,6 до +6,6 п.п., p = 0,10, мощность 37 %. Вывод: тест ничего не решил.
- 3 000 посетителей на вариант (600 и 690 конверсий): та же разница +3,0 п.п., интервал от +0,9 до +5,1 п.п. (в относительных числах от +4 % до +26 %), p = 0,005, мощность 81 %. Вывод: эффект есть, и он, скорее всего, между 1 и 5 процентными пунктами.
Одинаковый «прирост +15 %» в двух отчётах — и совершенно разные основания для решения. Поэтому в выводах стоит писать интервал: «+0,9…+5,1 п.п. с уверенностью 95 %» вместо «+15 %, значимо».
Второе применение интервала — незначимый результат. Если интервал от −0,5 до +0,7 п.п., вы узнали кое-что полезное: большого эффекта здесь нет. Если от −3 до +6 п.п. — вы не узнали ничего, кроме того, что данных было мало.
Мощность и «незначимо» ≠ «нет разницы»
Мощность — вероятность заметить эффект заданного размера, если он есть. Стандарт 80 % означает: каждый пятый реально существующий эффект такого размера тест пропустит.
Пример: 800 посетителей на вариант, 160 и 176 конверсий — 20 % против 22 %. p = 0,33, интервал от −2,0 до +6,0 п.п., мощность при наблюдаемой разнице 17 %. Такой тест не мог ничего доказать: чтобы надёжно ловить относительный прирост 10 % при базе 20 %, нужно 6 348 посетителей на вариант, то есть в восемь раз больше.
Осторожно с «наблюдаемой мощностью», которую печатают некоторые инструменты (наш калькулятор в том числе): она считается по уже полученной разнице и годится для одного вывода — «данных было мало». Планировать по ней ничего нельзя, для этого мощность задают до теста.
Подводные камни
Подглядывание
Ежедневные проверки с остановкой при первом p < 0,05 превращают обещанные 5 % ложных срабатываний в 20 с лишним. Мы прогнали 3 000 симуляций, где разницы между вариантами нет: конверсия 20 % в обеих группах, 500 посетителей на вариант в день, две недели. Одна проверка в конце дала «значимый» результат в 4,6 % случаев, ежедневные проверки — в 22,1 %. За месяц ежедневных проверок — в 26,4 %.
Как отличить подглядывание в чужом отчёте: если тест закончился в тот же день, когда стал значимым, и выборка не совпадает с плановой — скорее всего, вы смотрите на шум.
Множественные сравнения
Каждая дополнительная метрика, сегмент или вариант — ещё один шанс случайно найти «победу». При независимых проверках на уровне 5 % вероятность хотя бы одной ложной находки: 14 % на трёх проверках, 23 % на пяти, 40 % на десяти, 64 % на двадцати.
Отсюда практика. Главная метрика выбирается до теста. Если вариантов больше двух, порог делится на число сравнений. А находка в сегменте («зато у мобильных выросло!») — не результат, а повод для следующего теста, спланированного под этот сегмент.
Парадокс Симпсона
Бывает, что B выигрывает в каждом сегменте и проигрывает в целом. Пример с округлёнными числами:
- десктоп: A — 200 конверсий из 1 000 (20,0 %), B — 66 из 300 (22,0 %). Выигрывает B;
- мобильные: A — 50 из 500 (10,0 %), B — 180 из 1 700 (10,6 %). Выигрывает B;
- всего: A — 250 из 1 500 (16,7 %), B — 246 из 2 000 (12,3 %). Выигрывает A.
Причина не в статистике, а в составе групп: у варианта B доля мобильного трафика 85 %, у A — 33 %, а мобильные конвертируются вдвое хуже. В правильно случайном тесте так не бывает — значит, случилось что-то ещё: вариант включили в другое время суток, часть трафика не попала в тест из-за бага, платформа перекосила деление.
Поэтому в отчёте всегда проверяйте соотношение групп по размеру (проверка на SRM — sample ratio mismatch) и по составу. Если показов A и B не поровну там, где деление 50/50, сначала ищите техническую причину, а не победителя.
Сезонность и дни недели
Аудитория вторника не равна аудитории субботы, а неделя распродажи не равна обычной. Тест на четыре дня меряет не эффект изменения, а конкретные четыре дня. Минимум — семь полных дней, лучше две полные недели; если в тест попала акция, праздник или большой запуск, отметьте это в выводах, а спорный результат проверьте повтором.
Эффект новизны и обратный ему
Постоянные пользователи реагируют на любое заметное изменение: сначала кликают из любопытства (эффект новизны), а иногда, наоборот, теряются и делают меньше обычного. И то и другое проходит за одну-две недели. Если тест шёл на постоянной аудитории, смотрите динамику по дням: прирост, который целиком держится на первых двух днях, после раскатки исчезнет.
Что считается за конверсию
Тест предполагает независимые наблюдения: один пользователь — одно наблюдение. Если считать события, один человек, нажавший кнопку пять раз, даст пять «конверсий», и p-value станет оптимистичнее реальности. Туда же — боты и внутренний трафик: их нужно исключать одинаково в обеих группах.
Разные выборки на входе
Иногда варианты видят разные люди: B показывается только на новой версии интерфейса, или A ушёл в кеш и виден тем, кто заходил раньше. Тогда сравниваются не варианты, а аудитории. Проверяется это по составу групп: доли новых и вернувшихся, устройств, источников, стран должны совпадать в пределах случайного разброса.
Когда результат нельзя катить
- Соотношение показов не совпадает с заданным делением (SRM) — сначала техническая причина, потом всё остальное.
- Тест остановлен раньше плановой выборки, потому что «стало значимо».
- Тест шёл меньше недели или захватил акцию, праздник, крупный сбой.
- Главная метрика выросла, а ограничители просели: больше обращений в поддержку, выше отток, медленнее загрузка.
- Победа нашлась в одном из многих сегментов, и именно её объявляют результатом.
- Доверительный интервал захватывает и незначимый прирост, и потери, которые вы не готовы понести.
- Прирост держится только на первых днях теста.
- Изменение выигрывает по кликам, но проигрывает по действию, ради которого всё затевалось.
И обратный случай: катить без значимой победы иногда можно. Если новый вариант не хуже (интервал не уходит в заметный минус), а поддерживать его проще, дешевле или он решает другую задачу — это нормальное продуктовое решение. Просто не выдавайте его за результат теста.
Как описать результат, чтобы через год его поняли
Рабочий формат из пяти строк:
Гипотеза: ...
Метрика: активация (первый опубликованный тур)
Выборка: 3 000 на вариант, план 3 000, 14 дней, SRM в норме
Результат: 20,0 % → 23,0 %, +3,0 п.п. (95 % ДИ: +0,9…+5,1), p = 0,005
Решение: раскатили на 100 %, наблюдаем ограничители 2 неделиТакая запись переживёт и смену команды, и спор через полгода «а мы это точно проверяли?». Как дойти до неё по шагам — в статье «Этапы A/B-тестирования»; какой метод теста выбрать под задачу и трафик — в «Методах A/B-тестирования».