A/B-тестыДизайн экспериментаEasyБесплатно~8 мин

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

// Условие

Продакт хочет протестировать новую карточку товара и ждёт от тебя план: сколько трафика нужно. Ожидаемый эффект — +1 п.п. к конверсии в покупку. У тебя есть данные за прошлый месяц (без всякого теста) — по ним нужно оценить базовую конверсию.

Что нужно
Посчитай базовую конверсию и требуемую выборку на группу для MDE +1 п.п. (α=0.05 двусторонний, мощность 80%). Сохрани в result — dict с ключами baseline, n_per_group.

// Данные

df: user_id, converted (0/1) — юзеры прошлого месяца, БЕЗ разбивки на группы (тест ещё не запущен)
▶ Решить в A/B-тренажёре

// Решение

Подсказка

Базовая конверсия — просто df['converted'].mean().

Формула выборки на группу: n = (1.96 + 0.84)**2 * (p1*(1-p1) + p2*(1-p2)) / mde**2, где p1 — базовая конверсия, p2 = p1 + mde, mde = 0.01.

Сначала попробуй сам → Показать решение
df = load_data()

baseline = df['converted'].mean()   # 5.0%

# α=0.05 двусторонний → z=1.96; мощность 80% → z=0.84
mde = 0.01
p1, p2 = baseline, baseline + mde
n_per_group = (1.96 + 0.84) ** 2 * (p1 * (1 - p1) + p2 * (1 - p2)) / mde ** 2

result = {'baseline': baseline, 'n_per_group': n_per_group}
print(result)
≈8150 юзеров на группу — вот цена «увидеть +1 п.п. от базы 5%». Главный практический вывод: чем меньше базовая конверсия и MDE, тем квадратично больше выборка. Поэтому расчёт делают до запуска — чтобы не обнаружить на середине теста, что трафика не хватит и за квартал.

Трафик страницы — по 800 юзеров в день на группу. Продакт: «запустим на неделю». Твой ответ?

  • ✓ За неделю соберём 5600 на группу из необходимых ~8150 — не хватит. Нужно ~11 дней: либо договариваемся о двух неделях, либо увеличиваем трафик на тест
  • Недели хватит — если эффект есть, он проявится и раньше
  • Запустим на неделю, а если не будет значимости — просто продлим, пока не появится
  • Возьмём α=0.1 вместо 0.05 — тогда и недели хватит

8150 / 800 ≈ 10.2 дня — планируй 11–14 с учётом недельной сезонности (лучше целое число недель). «Продлим, пока не появится значимость» — это peeking, накрутка ложноположительных. Ослаблять α задним числом ради дедлайна — торговля надёжностью решения: если цена ошибки мала, α=0.1 можно выбрать до теста, но не потому, что «так сходится календарь».

// Похожие задачи

// Разобраться в теме

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