Выбор теста — не вопрос вкуса. Он определяется тремя вещами: тип метрики, свойства данных, дизайн эксперимента. Неправильный выбор не просто снижает мощность — он может дать ложноположительный результат, на основе которого вы примете решение.
Эта карта — decision tree. Она не заменяет понимание, но позволяет быстро сузить выбор до 1–2 подходов и сразу увидеть, какие допущения нужно проверить.
Каждая единица анализа — бинарный исход: 0 или 1. Числитель — подсчёт событий, знаменатель — количество экспозиций.
Примеры: CR (покупки / пользователи), CTR (клики / показы), retention Day 7, refund rate (возвраты / заказы).
Ключевое свойство: распределение биномиальное. CLT работает быстро при достаточном n.
Одно числовое значение на пользователя. Агрегируется как среднее.
Примеры: число заказов, число сессий, GMV per user, время в приложении.
Ключевое свойство: распределение может быть любым — от нормального до тяжёлых хвостов с zero inflation.
Отношение двух величин разной природы. Числитель — не подсчёт бинарных событий знаменателя.
Примеры: AOV = GMV / заказы, RPM = выручка / показы, стоимость доставки на заказ.
Ключевое свойство: дисперсия зависит от ковариации числителя и знаменателя. Наивный t-test на средних отношениях некорректен.
Метрика считается по подмножеству, определённому post-treatment поведением.
Примеры: ARPPU (среди покупателей), средний рейтинг (среди оставивших отзыв), конверсия среди увидевших фичу.
Ключевое свойство: treatment влияет на состав подвыборки → selection bias.
→ z-test для долей / chi-square
Стандартный случай. Биномиальная интуиция, CLT обеспечивает нормальность. Пример: CR (покупки/пользователи), 50K на группу → z-test.
→ Точный тест Фишера / permutation-bootstrap
Нормальная аппроксимация ненадёжна при малых n или доле, близкой к 0/1. Пример: CR среди B2B-клиентов, 200 на группу → точный тест.
→ t-test / Welch t-test
Welch — дефолт (не требует равенства дисперсий). Пример: число сессий, 30K на группу → Welch t-test.
→ Bootstrap / trimmed mean / winsorization
Одиночный выброс может перевернуть результат t-test. Пример: revenue per user, 100K на группу, 0.1% пользователей = 40% выручки → bootstrap.
→ Delta-method / линеаризация
Delta-method аппроксимирует дисперсию через Taylor-ряд. Корректно учитывает ковариацию числителя и знаменателя. Пример: AOV, 80K на группу, умеренные чеки → delta-method.
→ Bootstrap отношения
Delta-method чувствителен к выбросам. Пример: RPM, 5K на группу, heavy tail в рекламной выручке → bootstrap.
→ Двухэтапная процедура / регрессия с коррекцией
Наивное сравнение средних смещено. Нужна коррекция на то, что состав подвыборки зависит от treatment. Пример: ARPPU, treatment увеличил конверсию → состав «платящих» изменился → двухэтапная процедура.
Перед применением любого теста проверьте:
Проблема: несколько выбросов определяют среднее всей группы. t-test формально работает (CLT), но при конечных выборках среднее нестабильно.
Что делать:
Пример: Revenue per user. 0.1% пользователей с чеками в 100× среднего. t-test показывает p = 0.03, повторный запуск — p = 0.45. → Bootstrap + winsorization.
Проблема: большинство пользователей = 0 (не купили, не кликнули). Среднее близко к нулю, дисперсия завышена, мощность падает.
Что делать:
Пример: Purchases per user. 85% = 0, 14% = 1, 1% ≥ 2. Обычный t-test требует огромную выборку. Разделение на CR (proportion, z-test) + AOV (ratio, delta-method) — проще и мощнее.
При рандомизации по кластерам (города, регионы, команды) наблюдения внутри кластера скоррелированы. Эффективный размер выборки ≈ N кластеров, а не N пользователей.
ICC (Intra-Cluster Correlation): доля дисперсии, объяснённая кластером. Чем выше ICC, тем сильнее inflation дисперсии.
Пример: Гео-эксперимент, 20 городов, CTR. Обычный z-test показывает p = 0.001 (N = 2M пользователей). Cluster-robust SE → p = 0.14 (N_eff ≈ 20 кластеров).
Аналитик использует N пользователей как размер выборки при кластерной рандомизации. Получает p < 0.01, уверенно запускает. Эффект не воспроизводится — потому что реальная мощность была ~15%, а не 80%.
CUPED (Controlled-experiment Using Pre-Experiment Data) использует pre-period ковариату для снижения дисперсии:
Типичный выигрыш: снижение дисперсии на 30–50%.
Пример: Revenue per user. Pre-period revenue за 2 недели до эксперимента. Корреляция 0.6. CUPED снижает дисперсию на 45%, что эквивалентно удвоению выборки.
Пример: ARPPU + CUPED. Treatment увеличил конверсию → новые «платящие» не имели pre-period покупок → ковариата = 0 для них → CUPED не снижает дисперсию для этой подгруппы.
| # | Метрика | Контекст | Подход | Почему |
|---|---|---|---|---|
| 1 | CR (покупки/пользователи) | 80K на группу, user-level рандомизация | z-test | Доля, большая выборка, стандартный случай |
| 2 | Revenue per user | Heavy tail, zero inflation, 100K на группу | Bootstrap + winsorization | t-test нестабилен из-за выбросов |
| 3 | AOV (GMV/заказы) | 50K на группу, умеренные чеки | Delta-method | Ratio, знаменатель случаен, но хвосты умеренные |
| 4 | CTR (клики/показы) | Гео-рандомизация, 15 городов | z-test + cluster-robust SE | Доля, но кластерная рандомизация |
| 5 | ARPPU | 200K на группу, pre-period есть | Двухэтапная процедура | Conditional: состав платящих зависит от treatment |
| 6 | Число сессий + pre-period | 40K на группу, корреляция pre-post 0.55 | Welch t-test + CUPED | Поюзерная, CUPED снижает дисперсию ~40% |
Карта выбора статкритерия связывает тип метрики, свойства распределения и дизайн эксперимента с конкретным тестом и его допущениями.
Proportion, per-user, ratio и conditional-метрики требуют разных подходов: где-то достаточно z-test, где-то нужен bootstrap, delta-method или двухэтапная процедура.
Перед запуском теста убедитесь, что допущения про независимость, SUTVA, экспозицию и распределение выполнены, а при heavy tail, zero inflation и кластерной рандомизации используйте робастные методы и поправки.