MDE: что это и как посчитать в A/B-тесте
user_id. Какую единицу рандомизации выбрать, чтобы минимизировать смешение вариантов?Содержание:
Зачем MDE
MDE (Minimum Detectable Effect) — это минимальный эффект, который A/B-тест способен зафиксировать как статистически значимый. До запуска теста MDE считают, чтобы понять, какой размер выборки нужен под нужную чувствительность. После теста MDE помогает убедиться, что незначимый результат — это правда отсутствие эффекта, а не нехватка данных.
Формула
Для conversion rate (z-test):
MDE = (z_α/2 + z_β) × sqrt(2 × p × (1-p) / n)где:
- z_α/2 ≈ 1.96 (α = 0.05)
- z_β ≈ 0.84 (мощность = 0.80)
- p = базовая конверсия
- n = размер выборки на вариант
Базовый расчёт
Допустим, базовая конверсия 5%, выборка 10 000 на вариант:
WITH params AS (
SELECT
0.05 AS baseline_conv,
10000 AS sample_per_variant,
1.96 AS z_alpha_2,
0.84 AS z_beta
)
SELECT
baseline_conv,
sample_per_variant,
(z_alpha_2 + z_beta) * SQRT(2.0 * baseline_conv * (1 - baseline_conv) / sample_per_variant) AS mde_absolute,
(z_alpha_2 + z_beta) * SQRT(2.0 * baseline_conv * (1 - baseline_conv) / sample_per_variant) / baseline_conv * 100 AS mde_relative_pct
FROM params;MDE в абсолюте ≈ 0.65 процентного пункта. MDE в относительном выражении ≈ 13% прироста к базовой конверсии.
Для конверсии
Текущая конверсия из БД:
WITH baseline AS (
SELECT
COUNT(DISTINCT CASE WHEN event = 'purchase' THEN user_id END)::NUMERIC
/ COUNT(DISTINCT user_id) AS conv_rate,
COUNT(DISTINCT user_id) AS total_users
FROM events
WHERE DATE >= CURRENT_DATE - INTERVAL '30 days'
AND DATE < CURRENT_DATE
),
n_per_variant AS (
SELECT total_users / 2 AS n -- 50/50 split
FROM baseline
)
SELECT
b.conv_rate,
n.n AS sample_per_variant,
(1.96 + 0.84) * SQRT(2.0 * b.conv_rate * (1 - b.conv_rate) / n.n) AS mde_abs,
(1.96 + 0.84) * SQRT(2.0 * b.conv_rate * (1 - b.conv_rate) / n.n) / b.conv_rate * 100 AS mde_rel_pct
FROM baseline b, n_per_variant n;Для непрерывной метрики
Для ARPU / AOV (непрерывная метрика):
MDE = (z_α/2 + z_β) × σ × sqrt(2 / n)WITH stats AS (
SELECT
AVG(amount) AS mean_arpu,
STDDEV(amount) AS std_arpu,
COUNT(*) AS n_users
FROM transactions
WHERE DATE >= CURRENT_DATE - INTERVAL '30 days'
)
SELECT
mean_arpu,
std_arpu,
n_users / 2 AS sample_per_variant,
(1.96 + 0.84) * std_arpu * SQRT(2.0 / (n_users / 2)) AS mde_abs,
(1.96 + 0.84) * std_arpu * SQRT(2.0 / (n_users / 2)) / mean_arpu * 100 AS mde_rel_pct
FROM stats;Частые ошибки
Ошибка 1. Путать мощность и уровень значимости. α = 0.05, β = 0.20 (мощность = 0.80). Это разные вещи.
Ошибка 2. Путать абсолютный и относительный MDE. Прирост 2 п.п. на базе 5% — это 40% относительного прироста. Всегда уточняйте, о каком типе речь.
Ошибка 3. Брать размер выборки не на вариант. Выборка на вариант ≠ общая выборка. На этом часто путаются в формуле.
Ошибка 4. Выбросы в непрерывных метриках. Стандартное отклонение раздувается выбросами. Винзоризация или обрезка хвостов уменьшают его — и MDE становится меньше.
Ошибка 5. Односторонний против двустороннего теста. z_α/2 берётся для двустороннего теста. Большинство тестов двусторонние, но это стоит подтвердить заранее.
Связанные темы
- Как посчитать sample size в SQL
- Как посчитать confidence interval в SQL
- Как посчитать p-value в SQL
- Как посчитать statistical power в SQL
FAQ
Чем MDE отличается от effect size?
MDE считают до теста — это минимальный эффект, который тест теоретически способен уловить при заданных выборке и мощности. Effect size — это уже наблюдаемый в данных размер эффекта после теста. Первый про чувствительность дизайна, второй про фактический результат.
Какой MDE приемлем?
Зависит от бизнеса и цены ошибки. Уловить 1% в абсолюте — амбициозно и требует очень большой выборки. 5% поймать проще, но такой тест грубее и пропустит эффекты поменьше.
Мощность 0.80 или 0.95?
Мощность 0.80 — отраслевой стандарт. 0.95 повышает шанс уловить реальный эффект, но требует примерно на 30% большей выборки. Берите 0.95, только если пропустить эффект дороже, чем собрать больше данных.
MDE для AOV?
Используйте формулу для непрерывных метрик. Ключевой фактор здесь — стандартное отклонение: чем оно выше, тем больше MDE и тем сложнее уловить эффект. Поэтому для AOV сначала имеет смысл разобраться с выбросами.
MDE rel pct — что это?
Это MDE в относительном выражении: абсолютный MDE, делённый на базовую конверсию. Он показывает эффект в процентах прироста к базе, а не в пунктах. Так его проще интерпретировать и сравнивать между метриками.