От чего зависит нужное количество пользователей для теста
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
От чего зависит нужное количество пользователей для теста
Определение размера выборки для A/B-теста — это ключевой вопрос в product analytics. Правильный расчёт необходим для того, чтобы тест был статистически значимым и экономически целесообразным.
1. Статистическая мощность теста (Statistical Power)
Что это: Вероятность обнаружить реальный эффект, если он существует.
Стандартные значения:
- Мощность 80% - минимально приемлемая для большинства тестов
- Мощность 90% - высокий стандарт для критичных решений
- Мощность 95% - для очень важных метрик
Формула: При увеличении мощности требуется больше пользователей.
2. Уровень статистической значимости (Significance Level)
Стандартное значение: α = 0.05 (5% вероятность ошибки первого рода)
Что это значит:
- В 5% случаев мы неправильно отклоним нулевую гипотезу (false positive)
- При α = 0.01 (1%) требуется больше пользователей
- При α = 0.10 (10%) требуется меньше, но риск выше
Влияние: Снижение α требует больше пользователей
3. Размер ожидаемого эффекта (Effect Size)
Примеры:
- Конверсия выросла с 10% до 12% = 20% относительное улучшение (небольшой эффект)
- Конверсия выросла с 10% до 15% = 50% относительное улучшение (средний эффект)
- Конверсия выросла с 10% до 20% = 100% относительное улучшение (большой эффект)
Формула для расчёта:
from statsmodels.stats.power import proportions_ztest
# Параметры
baseline_conversion = 0.10 # 10% базовая конверсия
expected_conversion = 0.12 # 12% ожидаемая конверсия
effect_size = (expected_conversion - baseline_conversion) / baseline_conversion
print(f"Relative effect size: {effect_size:.1%}") # 20%
# Расчёт требуемого размера выборки
required_sample_size = proportions_ztest(
count1=None,
nobs1=None,
alternative='two-sided',
effect_size=effect_size,
alpha=0.05,
power=0.80
)
print(f"Users per group: {required_sample_size}")
Влияние: Меньший эффект требует больше пользователей
4. Базовый уровень метрики (Baseline)
Сценарии:
- Низкая базовая метрика (1-5% конверсия) - требует больше пользователей (выше вариативность)
- Высокая базовая метрика (40-50% конверсия) - требует меньше пользователей
- Очень низкая метрика (<1%, например, редкие события) - требует экспоненциально больше
Пример:
import math
def calculate_sample_size(baseline, effect, alpha=0.05, power=0.80):
# Z-值
z_alpha = 1.96 # для α=0.05, two-sided
z_beta = 0.84 # для power=0.80
# Вариативность пропорции
variance = baseline * (1 - baseline)
# Размер выборки на группу
n = 2 * variance * (z_alpha + z_beta)**2 / (baseline * effect)**2
return math.ceil(n)
# Сравнение разных baseline
for baseline in [0.01, 0.10, 0.25, 0.50]:
n = calculate_sample_size(baseline, effect=0.2)
print(f"Baseline {baseline:.1%}: {n:,} users per group")
# Baseline 1%: 98,905 users per group
# Baseline 10%: 9,892 users per group
# Baseline 25%: 3,942 users per group
# Baseline 50%: 3,922 users per group
5. Вариативность метрики (Variance / Standard Deviation)
Высокая вариативность (например, сумма покупки, время в приложении) требует больше пользователей.
Низкая вариативность (например, бинарное событие: клик/не-клик) требует меньше.
Способы снижения требуемого размера:
- Использовать CUPED (Controlled Experiment Using Pre-Experiment Data)
- Стратификация пользователей
- ANCOVA (анализ ковариации)
6. Минимальный уровень практической значимости (Minimum Detectable Effect)
Вопрос: Какое минимальное изменение нам интересно обнаружить?
Пример для e-commerce:
- Интересует ли нас улучшение на 1%? → много пользователей
- Интересует ли нас улучшение на 10%? → меньше пользователей
7. Бюджет пользователей и время теста
Ограничения компании:
- Сколько пользователей в день получает фича?
- Сколько дней можно тестировать?
Пример:
- 10,000 новых пользователей в день
- Требуется 100,000 пользователей в группу
- Можем разделить 50%: 5,000 в control, 5,000 в treatment
- Время теста: 10 дней * 2 группы = 20 дней
Таблица: Рекомендуемые размеры для типичных сценариев
| Метрика | Baseline | Effect | Alpha | Power | Users/group |
|---|---|---|---|---|---|
| Конверсия | 5% | 20% ↑ | 0.05 | 80% | ~3,850 |
| Конверсия | 5% | 10% ↑ | 0.05 | 80% | ~15,400 |
| Конверсия | 0.5% | 20% ↑ | 0.05 | 80% | ~38,900 |
| Удержание | 40% | 5% ↑ | 0.05 | 90% | ~2,900 |
| Дневной ARPU | 50 (σ=200) | 10% ↑ | 0.05 | 80% | ~12,600 |
Практический чеклист для определения n
1. Определи метрику:
- Первичная метрика? (используй для расчёта n)
- Вторичные метрики? (следи, но не используй для остановки теста)
2. Укажи параметры:
- Baseline (сегодняшний уровень)
- Minimum Detectable Effect (что нам важно обнаружить?)
- α (обычно 0.05)
- Power (обычно 0.80)
3. Рассчитай требуемый размер:
- Используй калькулятор (Evan Miller, Optimizely, собственный скрипт)
- Умножь на 2 (две группы)
4. Проверь реалистичность:
- Хватает ли трафика за разумное время?
- Есть ли бизнес-лимиты на длительность теста?
- Можно ли дождаться результата?
5. Согласуй с командой:
- Product: стоит ли ждать результата?
- Dev: есть ли технические ограничения?
- Business: какой риск приемлем?
Типичные ошибки
- Слишком мало пользователей: ложные отрицания, недостаточная мощность
- Слишком много пользователей: пустая трата ресурсов, замораживание фичи на долгий срок
- Выбор effect size "с потолка": должен быть обоснован бизнес-значимостью
- Игнорирование сезонности: тест на неправильной когорте может дать смещённые результаты
Итог
Размер выборки зависит от:
- Требуемая статистическая мощность (80-90%)
- Уровень значимости α (0.05)
- Ожидаемый эффект (самый критичный параметр)
- Базовый уровень метрики
- Вариативность данных
- Минимальная практически значимая разница
- Доступный трафик и время
Рекомендуемый подход:
- Используй специализированные калькуляторы (не ручные вычисления)
- Начни с 80% power, α=0.05
- Обсуди effect size с product-командой
- Проверь реалистичность через трафик
- Переиспользуй исторические данные для точности расчётов
Похожие вопросы
- Что такое engagement rate и как его измерять для разных типов продуктов?
- Как интерпретировать отрицательный результат A/B теста?
- Как измерять и улучшать качество данных (data quality)?
- Расскажите о подходах к сегментации пользователей. Какие методы сегментации вы применяли?
- Что такое Retention Rate и как его рассчитать? Какие есть виды retention?
- Что такое activation rate и как его улучшить?
- Что такое p-value и как его интерпретировать в контексте A/B-тестирования?
- Как будешь валидировать результат A/B теста?
- Какие знаешь условия использования Т-теста?
- Можно ли применить индекс для ускорения выполнения запроса?
- Что нужно сделать перед запуском теста?
- Будешь ли тестировать свою теорию в A/B тесте
- Что такое CAC (Customer Acquisition Cost) и как его оптимизировать?
- Как построить и интерпретировать RFM-анализ?
- Что такое ошибки I и II рода в статистике? Приведите примеры в контексте A/B-тестирования.?
- Какой критерий обычно используешь?
- Что такое Aha-moment и как его определить для продукта?
- Что такое seasonality (сезонность) и как её учитывать при анализе метрик?
- Как работать с аномалиями в данных?
- Какие метрики предложишь для оценки работы поиска товаров?