Revenue per user: среднее = 120₽. Но 80% пользователей = 0₽, 15% = 50–200₽, 5% = 500–10 000₽. Среднее описывает «типичного пользователя», которого не существует. Решение на основе разницы средних — решение на основе абстракции.
Число сессий: среднее = 4.2. Но медиана = 2, мода = 1, а один пользователь с 500 сессиями сдвигает среднее всей группы. t-test сравнивает средние — но если среднее нестабильно, p-value тоже нестабилен.
Каждый статтест делает допущения о данных. t-test предполагает, что среднее имеет нормальное распределение (CLT). Это работает при:
Если эти условия нарушены — CLT сходится медленно. p-value «плывёт»: один запуск даёт 0.03, повторный — 0.45. Power analysis обещает 80%, реальная power — 30%.
Вывод: прежде чем выбирать тест — посмотрите на данные. Не на среднее, а на форму.
Каждая единица — 0 или 1. Агрегированная доля — биномиальная.
Примеры: CR (купил / не купил), CTR (кликнул / не кликнул), retention (вернулся / нет).
Свойства: дисперсия = p(1−p)/n. Максимальна при p = 0.5, минимальна при крайних значениях. CLT работает быстро — z-test надёжен уже при n > 1000 (если p не слишком близко к 0 или 1).
Когда ломается: при p < 0.01 или p > 0.99 нормальная аппроксимация плоха. Нужен точный тест Фишера или bootstrap.
Число дискретных событий за период. Целые неотрицательные значения.
Примеры: число заказов за неделю, число сессий за день, число кликов по рекомендациям.
Свойства: Poisson: среднее = дисперсия. В реальности дисперсия обычно больше (overdispersion) → Negative Binomial. Правый хвост, асимметрия. Zero inflation частая — большая масса в нуле.
Практическое следствие: t-test на счётчиках формально работает (CLT), но при большой overdispersion среднее нестабильно. При zero inflation стоит разделить метрику: конверсия (0/1) + среднее среди активных.
Время до события: всегда положительное, часто с длинным правым хвостом.
Примеры: время до первой покупки, время загрузки страницы, время доставки, time-to-resolution в support.
Свойства: сильная правая асимметрия. Медиана << среднего. Несколько «застрявших» кейсов (доставка через 2 недели вместо 2 часов) драматически сдвигают среднее.
Практическое следствие: t-test на средних — рискованно. Winsorization (ограничить максимум) или log-трансформация. Bootstrap предпочтительнее.
Revenue, GMV, LTV, средний чек. Положительные, с тяжёлым правым хвостом.
Примеры: revenue per user, GMV per user, LTV 90 дней.
Свойства: часто хорошо аппроксимируются log-normal (в логарифме — нормальные). Но хвост может быть ещё тяжелее (Pareto-like): 1% пользователей = 40% выручки. Это не outlier — это структура рынка.
Практическое следствие: среднее определяется хвостом. t-test зависит от нескольких наблюдений. Bootstrap, trimmed mean, winsorization — обязательны. Log-трансформация работает, но меняет интерпретацию (вы тестируете геометрическое среднее, а не арифметическое).
Большая масса в нуле + непрерывное или дискретное распределение для ненулевых.
Примеры: purchases per user (80% = 0), revenue per user, число рефералов.
Свойства: двухкомпонентная смесь: (1) «нулевой процесс» (пользователь не конвертировался) + (2) «ненулевой процесс» (распределение среди конвертировавших). Среднее близко к нулю, медиана = 0, дисперсия завышена.
Практическое следствие: мощность t-test резко падает. Разделение на CR (proportion) + среднее среди конвертировавших — проще и мощнее. CUPED с pre-period помогает (снижает дисперсию на 30–50%).
Данные — смесь нескольких подпопуляций.
Примеры: время в приложении (active users vs passive), revenue (freemium vs premium), latency (cache hit vs miss).
Свойства: бимодальные или мультимодальные гистограммы. Среднее не описывает ни одну из подгрупп. Дисперсия завышена.
Практическое следствие: если treatment по-разному влияет на подгруппы — средний эффект маскирует гетерогенность. Стоит стратифицировать анализ или использовать quantile-методы.
Формулы не нужны. Достаточно посмотреть на гистограмму и ответить на 3 вопроса:
CLT гарантирует, что среднее стремится к нормальному распределению при N → ∞. На практике:
«t-test живёт» значит: при повторных запусках p-value стабилен. «Врёт» значит: один запуск — p = 0.02, другой — p = 0.6. Если ваша метрика в heavy tail зоне, увеличение выборки помогает, но медленно.
Bootstrap не «лучше» t-test — он робастнее. При лёгких хвостах t-test точнее и дешевле.
Риск: log(0) не определён. При zero inflation нужен log(x + 1) (log1p) — но это искажает распределение и ослабляет эффект. Не рекомендуется при >30% нулей.
Winsorization — замена значений выше P99 (или P95) на пороговое. Сохраняет наблюдения, снижает влияние хвоста.
Trimming — удаление крайних значений. Теряем данные, но среднее стабильнее.
Риски: (1) Если treatment влияет на хвост (например, увеличивает число whale users) — winsorization скрывает реальный эффект. (2) Порог (P95 vs P99) — произвольный. Разные пороги дают разные p-value.
Рекомендация: зафиксировать порог до эксперимента. Показывать результат с winsorization и без — как sensitivity check.
AOV = GMV / orders. И числитель, и знаменатель — случайные величины. Распределение отношения — не log-normal и не нормальное, даже если каждый компонент по отдельности «нормальный».
Следствие: ни t-test на средних AOV, ни log-трансформация не корректны. Нужен delta-method (линеаризация) или bootstrap отношения.
Подробнее — Модуль 02 (типы метрик) и Модуль 04 (выбор теста).
| Форма данных | Риск | Рекомендованный подход |
|---|---|---|
| Бинарная (0/1) | Минимальный при p ∈ [0.01, 0.99] | z-test для долей |
| Счётчики (Poisson-like) | Overdispersion, zero inflation | t-test (с осторожностью) / bootstrap |
| Время (right tail) | Heavy tail, нестабильное среднее | Bootstrap / winsorization |
| Деньги (log-normal) | Heavy tail, extreme outliers | Bootstrap / trimmed mean / log1p (если мало нулей) |
| Zero-inflated | Потеря power | Разделить на CR + среднее среди ненулевых |
| Ratio | Ковариация числителя/знаменателя | Delta-method / bootstrap отношения |
| Mixture | Гетерогенность эффекта | Стратификация / quantile-методы |
Следующий шаг: используйте симулятор распределений, чтобы увидеть, как форма данных влияет на рекомендацию. Затем — Модуль 04 (Карта выбора статкритерия) для полного decision tree.