Условие
Когда применять t-тест, когда — Манн-Уитни, а когда — bootstrap? Что делать с длинными хвостами и выбросами?
Решение
t-тест
Предположения:
- Случайные независимые выборки.
- Распределения примерно нормальные ИЛИ выборка достаточно большая (по ЦПТ распределение среднего → нормальное).
- (Для пуленепробиваемого) — равные дисперсии (Стьюдент) или Welch (без этого предположения).
На практике при n > 30 в каждой группе t-тест работает почти всегда — благодаря ЦПТ. Хвосты и выбросы могут увеличивать дисперсию и снижать мощность, но валидность p-value сохраняется.
Манн-Уитни U (Wilcoxon rank-sum)
Что проверяет: «вероятность, что значение из X больше значения из Y, не равна 0.5» (точнее — равенство распределений в смысле stochastic dominance).
Не требует нормальности. Чувствителен к различию средних при близких формах распределений; к различию форм — отдельный вопрос.
Полезен при:
- Очень маленьких выборках, где ЦПТ не работает.
- Ярко-выраженных длинных хвостах (выбросы влияют слабее, потому что используются ранги).
- Порядковых данных (NPS, оценки 1–5).
Слабость: на разной форме распределений интерпретация «разницы средних» неприменима.
Bootstrap
Подход без предположений о распределении. Для метрики M (среднее, медиана, доля...):
- Многократно (B = 5000–20000 раз) ресэмплируем с заменой из обоих наборов.
- На каждом ресэмпле считаем
M(treatment) - M(control). - Эмпирически строим распределение разницы → 95%-CI.
Когда лучше bootstrap:
- Любая метрика, особенно нестандартная (медиана, перцентили, ratio).
- Нет аналитических формул для дисперсии (например, в ratio-метриках типа CR).
- Хочется получать CI без допущений.
Длинные хвосты и выбросы
Это проблема для t-теста, на больших выборках смягчается. Подходы:
- Логарифмирование (если данные положительны и smooth) —
log(amount). Тогда t-тест на лог-данных корректен. - Винзоризация — обрезать топ-1% / нижние 1%. Снижает влияние выбросов.
- Линеаризация / CUPED — снизить дисперсию через ковариату.
- Ratio-метрики и delta-method — формулы для CI ratio.
Дискретные/бинарные
- Конверсии / пропорции → z-тест разности пропорций или хи-квадрат.
- Подсчёты (число событий) → пуассон / Negative Binomial с offset.
Выбор «по умолчанию» в A/B-аналитике
- Continuous, n > 1000 в группе → Welch t-test или CI через bootstrap.
- Bound (CR, доля) → z-test пропорций.
- Heavy-tailed (LTV, GMV/user) → bootstrap или CUPED + Welch.
- Маленькая выборка (n < 30) → Манн-Уитни или bootstrap.
- Несколько метрик одновременно → поправка multiple testing (Bonferroni / BH).
Подводные камни
- Тестировать нормальность Шапиро-Уилком. На больших выборках любое отклонение значимо — тест не нужен. Смотрите на гистограмму и QQ-plot.
- Сравнивать медианы Манн-Уитни. Манн-Уитни проверяет stochastic dominance, не медианы напрямую. Уточнение требуется.
- Считать bootstrap «безусловным». Он чувствителен к размеру выборки и выбросам тоже.
- Менять тест после результата. Зафиксируйте выбор до эксперимента.
Эталонный ответ
Для большинства A/B на достаточном трафике — Welch t-test или bootstrap. Для редких событий и пропорций — z-test пропорций. Манн-Уитни — для маленьких выборок или порядковых данных. С тяжёлыми хвостами — лог-преобразование, винзоризация или bootstrap. Перед тестом фиксируем дизайн, чтобы не было выборочного теста после результата.