Как посчитать размер выборки для A/B в SQL
payments нужно выбрать платежи из России (country = 'RU') со статусом либо 'failed', либо 'chargeback'. Какой WHERE корректный?Содержание:
Зачем Sample Size
Если запустить A/B на 1000 пользователях при базовой конверсии 2% и MDE 10% (относительный), то мощность будет всего 15%. Это значит, что с вероятностью 85% вы не увидите статистически значимый эффект, даже если он есть. Поэтому размер выборки критичен для дизайна эксперимента.
Формула
n = (z_α + z_β)² × 2 × p × (1-p) / MDE²Где:
z_α— критическое значение для α (1.96 при α = 0.05)z_β— критическое значение для мощности (0.84 при мощности 0.8)p— базовая конверсияMDE— минимальный детектируемый эффект (абсолютный)
Базовый расчёт
В SQL это приближённый расчёт по формуле:
WITH params AS (
SELECT
0.05 AS alpha,
0.80 AS power,
0.02 AS baseline_p, -- 2% CR baseline
0.002 AS mde_abs -- 0.2 п.п. абсолютный эффект (10% relative)
)
SELECT
baseline_p,
mde_abs,
CEIL(
POWER(1.96 + 0.84, 2) * 2 * baseline_p * (1 - baseline_p)
/ POWER(mde_abs, 2)
) AS sample_size_per_group
FROM params;Формула даёт размер выборки на одну группу. Всего для A/B нужно 2 × этот размер.
Параметры
| Параметр | Стандарт | Что значит |
|---|---|---|
| α (alpha) | 0.05 | Доля ложноположительных (ошибка I рода) |
| 1-β (power) | 0.80 | Доля истинноположительных (1 − ошибка II рода) |
| p | baseline | Текущая конверсия |
| MDE | от 1% до 50% | Минимальный эффект, который хотим обнаружить |
Примеры
| Базовая конверсия | MDE относительный | MDE абсолютный | n на группу |
|---|---|---|---|
| 2% | 10% | 0.2 п.п. | ~38 000 |
| 5% | 10% | 0.5 п.п. | ~14 800 |
| 10% | 10% | 1 п.п. | ~7 060 |
| 20% | 10% | 2 п.п. | ~3 130 |
Чем меньше MDE — тем больше нужна выборка (квадратично!).
Частые ошибки
Ошибка 1. Абсолютный MDE против относительного. 10% относительного при базе 2% — это 0.2 п.п. в абсолюте. Формула берёт абсолютный.
Ошибка 2. Без поправки на несколько метрик. Если измеряете 10 метрик, alpha должна быть 0.005 (поправка Бонферрони). Это увеличивает размер выборки.
Ошибка 3. Сезонность. Выборка за одну неделю может попасть на праздник или акцию. Нужны полные циклы.
Ошибка 4. Мощность 0.8 — не закон. Для критичных решений берите мощность 0.99, для разведочных экспериментов — 0.7.
Ошибка 5. Игнорировать метрики-отношения. Для метрик-отношений (выручка на пользователя) формула другая — используйте дельта-метод.
Связанные темы
- CUPED — снижение дисперсии A/B
- Как посчитать uplift в SQL
- Sample Ratio Mismatch (SRM)
- Holdout vs A/B на практике
FAQ
Какой MDE выбирать?
Берите бизнес-значимый эффект. Если +0.5% к конверсии не двигает выручку, нет смысла закладывать меньший MDE и раздувать выборку.
Можно ли уменьшить выборку?
Да, несколькими способами. Во-первых, использовать пред-экспериментальную метрику (CUPED снижает дисперсию). Во-вторых, объединять метрики. В-третьих, применять последовательное тестирование. В-четвёртых, брать меньшую alpha, если риск ошибки невелик.
Power < 0.8 — что делать?
Либо набрать больше пользователей (продлить эксперимент), либо заложить больший MDE, либо применить CUPED.
Размер выборки для абсолютной метрики и для метрики-отношения?
Для абсолютной метрики — простая формула. Для метрики-отношения (выручка на пользователя) нужен дельта-метод и учёт дисперсии.
Power analysis обязателен?
Да. Без него вы рискуете получить либо ложноположительные результаты на маленькой выборке, либо ложноотрицательные из-за слишком короткого срока теста.