new-lvl.pro · Статьи · A/B-тесты
Статья A/B // 9 мин чтения

Размер выборки
для A/B-теста

Сколько пользователей нужно на группу, чтобы тест поймал эффект, — и почему это считают до запуска, а не после. Разбираем MDE, мощность и значимость, формулы для конверсии и непрерывных метрик. В конце — готовый калькулятор.

Почему размер выборки считают до запуска

Представьте: вы запустили A/B-тест, через неделю смотрите — разницы между группами «не видно», p-value большой. Вывод «фича не работает»? Не факт. Возможно, выборки просто не хватило, чтобы отличить реальный эффект от шума.

Размер выборки — это страховка сразу от двух ошибок: не принять случайный шум за эффект и не пропустить настоящий эффект из-за нехватки данных. Посчитав n заранее, вы знаете: сколько трафика нужно, сколько продлится тест и какой минимальный эффект вы вообще способны зафиксировать.

// Главная ловушка
Запуск «на глаз» и остановка теста, как только p-value опустился ниже 0.05, — это подглядывание (peeking). Без заранее зафиксированного размера выборки вы почти гарантированно поймаете ложноположительный результат. Порядок один: сначала считаем n, потом запускаем, потом смотрим.
// Сразу к делу
Не хочется считать руками — есть калькулятор размера выборки: вводите конверсию, MDE, мощность и значимость, получаете n на группу. Ниже — что стоит за этими цифрами.

4 параметра, которые задают размер выборки

Размер выборки — не магическое число, а следствие четырёх величин. Меняете любую — меняется n.

MDE
Минимальный эффект
Наименьшее изменение метрики, которое хотите гарантированно заметить. Хотите ловить +0.5 п.п. вместо +2 п.п. — выборка вырастет в разы.
Baseline
База метрики
Текущая конверсия либо среднее и дисперсия метрики. Чем больше разброс данных, тем больше нужно наблюдений.
α
Уровень значимости
Допустимая вероятность ложноположительного вывода. Обычно 5% (α = 0.05) → z ≈ 1.96 для двустороннего теста.
1 − β
Мощность
Вероятность заметить эффект, если он есть. Обычно 80% → z ≈ 0.84 (или 1.28 для мощности 90%).
// Запомнить
α защищает от ложной тревоги (увидеть эффект, которого нет), мощность — от слепоты (не увидеть эффект, который есть). Стандарт индустрии: α = 5%, мощность = 80%.

MDE — почему он решает всё

// Minimum Detectable Effect
MDE — минимально детектируемый эффект
n ∝ 1 / MDE²
Размер выборки растёт обратно квадрату MDE. Хотите ловить вдвое меньший эффект — выборка вырастает в 4 раза. Это самый дорогой параметр и обычно главный предмет спора с продактом.

MDE задают двумя способами: в абсолюте (конверсия вырастет на 0.5 п.п.: с 5% до 5.5%) или относительно (конверсия вырастет на 10%). Не путайте: «+10%» к конверсии 5% — это 5.5%, а не 15%.

MDE (с базы 5%)Разницаn на группу
5% → 5.25%+0.25 п.п.≈ 119 000
5% → 5.5%+0.5 п.п.≈ 30 000
5% → 6%+1.0 п.п.≈ 7 500
5% → 7%+2.0 п.п.≈ 1 900

Вдвое меньший MDE — вчетверо большая выборка. Поэтому первый вопрос перед тестом не «сколько нам нужно пользователей», а «какой минимальный эффект нам вообще интересно ловить».

// Откуда брать MDE
MDE — это не «какой эффект мы получим», а «какой минимальный эффект нам интересно ловить». Его задают из бизнес-смысла: ниже какого уплифта фича не окупает разработку и риск. Брать MDE равным ожидаемому результату теста — частая ошибка, которая занижает выборку.

Формулы: конверсия и непрерывные метрики

Для конверсии (пропорции)

// Доля · конверсия · CTR · retention
Размер выборки на группу
n = (z₁₋α/₂ + z₁₋β)² · [p₁(1−p₁) + p₂(1−p₂)] / (p₂ − p₁)²
Где p₁ — базовая конверсия, p₂ = p₁ + MDE, z₁₋α/₂ ≈ 1.96 (α = 5%), z₁₋β ≈ 0.84 (мощность 80%). Множитель (1.96 + 0.84)² ≈ 7.85.
Пример: кнопка оформления заказа Конверсия
Дано: базовая конверсия 5%, хотим заметить рост до 5.5% (MDE = 0.5 п.п.), α = 5%, мощность 80%.

Считаем: p₁(1−p₁) + p₂(1−p₂) = 0.05·0.95 + 0.055·0.945 ≈ 0.0475 + 0.0520 = 0.0995.
(p₂ − p₁)² = 0.005² = 0.000025.
n = 7.85 · 0.0995 / 0.000025 ≈ 31 000 пользователей на группу (~62 000 на весь тест).

Для непрерывных метрик (среднее)

// ARPU · средний чек · время в приложении
Размер выборки на группу
n = (z₁₋α/₂ + z₁₋β)² · 2σ² / Δ²
Где σ — стандартное отклонение метрики, Δ — абсолютный MDE (на сколько хотим заметить сдвиг среднего). Главная боль здесь — большая дисперсия.
Пример: ARPU Среднее
Дано: ARPU ≈ 100 ₽, σ ≈ 300 ₽ (типично высокая дисперсия — много нулей и редкие крупные платежи), хотим заметить рост на 5 ₽ (Δ = 5).

n = 7.85 · 2 · 300² / 5² = 7.85 · 180 000 / 25 ≈ 56 500 на группу.

Дисперсия съедает выборку. Здесь помогает CUPED: он снижает σ за счёт предпериодных данных и сокращает нужную выборку в 1.5–2 раза.
Размер выборки на Python Python · statsmodels
# Конверсия: расчёт через statsmodels
from statsmodels.stats.power import NormalIndPower
from statsmodels.stats.proportion import proportion_effectsize

p1, p2 = 0.05, 0.055
es = proportion_effectsize(p2, p1)              # величина эффекта (Cohen's h)
n  = NormalIndPower().solve_power(
        es, alpha=0.05, power=0.8, alternative='two-sided')
print(round(n))                                  # ≈ 31000 на группу

Сколько продлится тест

Размер выборки переводится в дни через дневной трафик. Если в эксперимент попадает 4 000 пользователей в день, а нужно 62 000 на обе группы, тест продлится ≈ 16 дней.

Дни ≈ (n × 2) / трафик в день в эксперименте
Округляйте вверх до целых недель: трафик и поведение колеблются по дням недели. Тест короче недели лучше не гонять — поймаете недельную сезонность вместо эффекта.
// Правило недель
Всегда захватывайте целое число недель (7, 14, 21 день). Это усредняет будни и выходные и убирает «день-недельный» биас.

Частые ошибки в расчёте выборки

Подглядывание. Остановка теста по первому «значимому» p-value раздувает ложноположительные. Фиксируйте n заранее.
MDE из ожидания. Брать MDE равным ожидаемому эффекту вместо минимально интересного — занижает выборку.
Пропорция вместо среднего. Считать ARPU по формуле для конверсии. Непрерывной метрике нужна σ.
Множественные сравнения. Несколько метрик или вариантов — нужна поправка α (Bonferroni и др.).
Неравные группы. Формула выше — для сплита 50/50. При 90/10 суммарная выборка растёт.
Тест короче недели. Даже если n набрался за 3 дня — ждите неделю, иначе поймаете сезонность.

Частые вопросы про размер выборки

Как рассчитать размер выборки для A/B-теста?
Нужны четыре величины: MDE (минимальный эффект, который хотите заметить), базовая конверсия или дисперсия метрики, уровень значимости (обычно 5%) и мощность (обычно 80%). Для конверсии n на группу = (1.96 + 0.84)² · [p₁(1−p₁) + p₂(1−p₂)] / (p₂−p₁)². Быстрее всего — в калькуляторе размера выборки.
Что такое MDE простыми словами?
MDE (минимально детектируемый эффект) — наименьшее изменение метрики, которое тест способен гарантированно заметить. Его задают из бизнес-смысла: ниже какого эффекта фича не окупается. Размер выборки растёт обратно квадрату MDE: вдвое меньший MDE требует в 4 раза большей выборки.
Какую мощность и уровень значимости брать?
Стандарт индустрии: уровень значимости α = 5% и мощность 80%. Если цена ошибки высока (деньги, ключевая метрика), мощность повышают до 90% — это увеличивает выборку примерно на треть.
Что сильнее уменьшает нужную выборку — больший MDE или больше трафика?
MDE влияет на сам размер выборки квадратично: увеличив MDE вдвое, вы уменьшаете нужное n в 4 раза. Трафик не меняет n — он определяет лишь длительность теста: больше пользователей в день, быстрее наберёте ту же выборку.
Чем формула для конверсии отличается от непрерывной метрики?
Для конверсии разброс задаётся через p(1−p), для непрерывной метрики (ARPU, средний чек) — через дисперсию σ². Считать ARPU по формуле для пропорций нельзя: у непрерывных метрик дисперсия обычно большая, и выборка выходит заметно больше.
Можно ли уменьшить выборку без потери мощности?
Да: CUPED снижает дисперсию за счёт предпериодных данных и сокращает выборку в 1.5–2 раза. Помогают также стратификация, более чувствительная метрика и переход к относительному MDE там, где это оправдано бизнесом.

Связанные материалы

Главное про размер выборки

Размер выборки считают до запуска — иначе тест превращается в подглядывание и ловит ложные эффекты. Нужны четыре величины: MDE, база метрики, уровень значимости и мощность.

Главный рычаг — MDE: выборка растёт обратно его квадрату, поэтому первый разговор перед тестом — про минимально интересный эффект, а не про «сколько у нас трафика». Для конверсии разброс задаёт p(1−p), для непрерывных метрик — дисперсия σ²; во втором случае выручает CUPED.

Практика: возьмите метрику своего продукта, прикиньте базовое значение и σ, задайте MDE из бизнес-смысла и посчитайте n в калькуляторе. Потом переведите в дни через дневной трафик — и округлите до целых недель.

АТ
Андрей Тарасенко
// Продуктовый аналитик · Авито · Ментор

A/B-тесты и оценка их мощности — часть моей ежедневной работы. Главный спор почти всегда об одном: какой минимальный эффект мы готовы ловить — от этого зависит, потянем ли мы тест по трафику. Статья из практики.

Написать в Telegram
// ЗАКРЕПИ НА ПРАКТИКЕ

Посчитай свою выборку за 10 секунд

Калькулятор размера выборки: введи базовую конверсию, MDE, мощность и значимость — получи число пользователей на группу и срок теста.

▶ Открыть калькулятор ★ Гайд по A/B-тестам
Все материалы: База знаний · Telegram