Как оценить размер выборки для A/B-теста?
Короткий ответ
Размер выборки растёт с дисперсией метрики и падает с квадратом эффекта, который хочешь поймать (MDE). Для сравнения долей грубая оценка: n на группу ≈ 16·p·(1−p)/MDE² при α=0.05 и мощности 80%. Чем меньше эффект и чем строже α/выше мощность — тем больше нужно данных. Считать надо ДО теста: иначе рискуешь запустить эксперимент, который физически не поймает реалистичный эффект.
Вопрос отделяет тех, кто запускал тесты осознанно, от тех, кто «лил трафик до значимости». Интервьюер хочет услышать, от каких четырёх ручек зависит выборка и почему подсчёт делается заранее.
Как рассуждать
Перечисли входы формулы и объясни направление влияния каждого — этого достаточно, точную формулу наизусть не ждут. Четыре ручки: базовый уровень метрики (через дисперсию), MDE (минимальный интересный эффект), α и мощность. Главный нерв: размер выборки обратно пропорционален квадрату MDE — поэтому ловить крошечные эффекты чудовищно дорого.
Эталонный ответ
Размер выборки на группу определяется четырьмя параметрами:
- Базовая конверсия / дисперсия метрики. Для доли дисперсия равна p·(1−p). Чем ближе конверсия к 50%, тем выше разброс и больше нужно данных.
- MDE — минимально важный эффект, который хотим уверенно различать. Задаётся бизнесом: «рост меньше 1 п.п. нам не интересен».
- α — допустимая ошибка первого рода, обычно 0.05.
- Мощность (1 − β) — вероятность поймать эффект, обычно 80%.
Рабочая грубая формула для сравнения двух долей при α=0.05 и мощности 80%:
n на группу ≈ 16 · p · (1 − p) / MDE²
Коэффициент 16 — это округлённое (z для α/2 + z для мощности)², то есть (1.96 + 0.84)² ≈ 7.85, удвоенное на две группы.
Пример. Базовая конверсия p = 10% (0.1), хотим ловить абсолютный прирост в 1 п.п. (MDE = 0.01):
n ≈ 16 · 0.1 · 0.9 / 0.01² = 16 · 0.09 / 0.0001 = 14 400 на группу, то есть около 28 800 пользователей всего.
Захотим ловить прирост вдвое меньше (0.5 п.п.) — выборка вырастет вчетверо, до ~57 600 на группу: эффект в знаменателе стоит в квадрате. Отсюда практический вывод: маленькие эффекты требуют неподъёмного трафика, и иногда честнее сказать «мы это не поймаем» ещё до старта.
Из размера выборки и дневного трафика получаем длительность теста — и округляем вверх до целого числа недель, чтобы усреднить недельную сезонность. Всё это часть плана A/B-теста.
На практике формулу редко считают руками — берут онлайн-калькулятор или функцию из statsmodels. Но понимать, что туда входит, обязательно: калькулятор не заметит, что ты подсунул нереалистичный MDE или перепутал абсолютный прирост с относительным. Аналитик должен уметь объяснить продакту, почему «поймать +0.2 п.п.» при текущем трафике — это тест на три месяца, а не на неделю.
Частые ошибки
- Не считать выборку заранее и останавливать тест «когда p-value стал < 0.05» — это peeking, он раздувает ложные срабатывания.
- Брать MDE «с потолка» поменьше, чтобы формула не пугала: нереалистично малый MDE даёт нереалистично большую выборку.
- Забывать, что для непрерывных метрик (средний чек) в формулу входит дисперсия самих данных, а она у скошенных метрик большая — выборка нужна больше.
- Путать абсолютный и относительный MDE (1 п.п. против «+10% к конверсии») — это разные числа, легко ошибиться на порядок.
Потренируй этот вопрос с ИИ-интервьюером
Читать разбор полезно, а отвечать вслух под давлением — совсем другое. ИИ-интервьюер задаст этот и смежные вопросы, будет копать глубже и разберёт твои ответы. Первое короткое интервью — бесплатно.
Пройти собеседование бесплатно