MDE: что это и как посчитать в A/B-тесте

Проверь себя · 1/3разбор после ответа
Вы тестируете новый экран оплаты. Пользователь может заходить в приложение много раз. Метрика — конверсия в покупку за 7 дней на уровне 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;
Закрепи формулу mde в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать mde в Telegram

Для непрерывной метрики

Для 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 берётся для двустороннего теста. Большинство тестов двусторонние, но это стоит подтвердить заранее.

Связанные темы

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, делённый на базовую конверсию. Он показывает эффект в процентах прироста к базе, а не в пунктах. Так его проще интерпретировать и сравнивать между метриками.