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

Сколько дней собирать тест

// Условие

Дизайн теста готов: нужно по 12 000 юзеров на группу (две группы, трафик делится 50/50). Остался вопрос календаря. У тебя — дневной трафик страницы за последние две недели.

Что нужно
Посчитай средний дневной трафик и оцени, сколько дней займёт сбор выборки. Сохрани в result — dict с ключами avg_daily_users, days_needed (целое, с округлением вверх).

// Данные

df: date, users — дневной трафик страницы за 14 дней
▶ Решить в A/B-тренажёре

// Решение

Подсказка

Средний трафик: df['users'].mean(). Весь он делится между двумя группами.

Всего нужно 2 × 12 000 = 24 000 юзеров. Дней: math.ceil(24000 / avg_daily).

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

avg_daily = df['users'].mean()          # 2000/день на обе группы
total_needed = 2 * 12000
days = math.ceil(total_needed / avg_daily)

result = {'avg_daily_users': avg_daily, 'days_needed': days}
print(result)
24 000 / 2 000 = 12 дней. На практике длительность округляют вверх до целых недель (здесь — 14 дней): недельная сезонность — будни и выходные ведут себя по-разному, и обрезанный «хвост недели» смещает выборку.

Какой план предложишь команде?

  • ✓ Тест на 14 дней: расчётные 12 дней, округлённые вверх до двух полных недель из-за недельной сезонности; остановка — по календарю, не по «значимости»
  • Ровно 12 дней — зачем собирать лишнее
  • Запустим без дедлайна и остановим, как только p-value станет меньше 0.05
  • Сначала соберём весь трафик в тестовую группу — так быстрее наберём выборку

12 дней покрывают выборку, но рвут вторую неделю посередине — выборка получает лишние будни и теряет выходные. Полные недели (14 дней) снимают это смещение почти бесплатно. Остановка «когда p < 0.05» — peeking. Отдать весь трафик в тест — остаться без контрольной группы, сравнивать станет не с чем.

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

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

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