Как будешь выбирать статистические критерии для конверсионных метрик?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Выбор статистических критериев для конверсионных метрик
Проведение A/B тестов с конверсионными метриками требует правильного выбора статистического теста. Это критично для валидности результатов и избежания ложных выводов.
Шаг 1: Определение типа данных
Конверсионные метрики — это бинарные переменные:
- Пользователь выполнил действие (1) или нет (0)
- Доля пользователей, совершивших действие от всех
- Примеры: коэффициент подписки, коэффициент покупки, CTR
Это отличает их от непрерывных метрик (время на странице, сумма покупки).
Шаг 2: Проверка условий и размера выборки
Критерий — правило выбора теста в зависимости от условий:
Если:
- Группы А и Б независимые (разные пользователи)
- Размер выборки >= 30 в каждой группе (по ЦПТ достаточно)
- Конверсия не экстремальная (0.5%-99.5%)
Тогда используй: Z-test или Chi-square
Основные статистические критерии
1. Chi-square (χ²) тест — рекомендуемый выбор
Используется для сравнения наблюдаемых и ожидаемых частот в таблице сопряжённости:
Таблица 2x2:
Конвертились Не конвертились
Группа A: a b (n_A = a+b)
Группа B: c d (n_B = c+d)
Формула:
χ² = Σ [(Observed - Expected)² / Expected]
Преимущества:
- Универсален для бинарных данных
- Не требует предположений о нормальности
- Просто интерпретируется
- Встроен во все статистические пакеты
Пример в Python:
from scipy.stats import chi2_contingency
contingency_table = [
[conversions_a, non_conversions_a],
[conversions_b, non_conversions_b]
]
chi2, p_value, dof, expected = chi2_contingency(contingency_table)
print(f"p-value: {p_value}")
2. Z-test для пропорций
Другой валидный вариант, особенно при больших выборках:
Z = (p_A - p_B) / sqrt(p(1-p) * (1/n_A + 1/n_B))
где p — объединённая доля конверсии
Когда использовать: когда выборка очень велика (>10K) и нужна простота вычислений.
3. Fisher's exact test — для малых выборок
Когда использовать: если ожидаемая частота в таблице < 5
Это редко для A/B тестов, но нужно знать.
Шаг 3: Проверка статистических предположений
Независимость наблюдений
- Один пользователь — одно событие
- Если тестируете на уровне сессий, убедитесь, что сессии независимы
- Если видите корреляцию, нужен другой подход (generalized estimating equations)
Размер выборки и power анализ
До теста нужно рассчитать требуемый размер:
from scipy.stats import norm
# Параметры
baseline_conversion = 0.05 # 5% baseline
min_effect_size = 0.01 # хотим поймать +1 ppt
alpha = 0.05 # уровень значимости (тип I ошибка)
beta = 0.20 # мощность теста = 80%
z_alpha = norm.ppf(1 - alpha/2) # 1.96 для двусторонних
z_beta = norm.ppf(1 - beta) # 0.84
# Расчёт размера выборки
variance = baseline_conversion * (1 - baseline_conversion)
n = (z_alpha + z_beta)**2 * variance * 2 / (min_effect_size**2)
print(f"Требуется {int(n)} пользователей в каждой группе")
Шаг 4: Выбор критерия в зависимости от ситуации
| Ситуация | Критерий | Причина |
|---|---|---|
| Стандартный A/B, >30 в группе | Chi-square | Универсален, не требует предположений |
| Очень большие выборки (>10K) | Z-test | Проще, быстрее вычисляется |
| Малые выборки (<30) | Fisher exact | Точнее при малых n |
| Экстремальные конверсии (<0.1%) | Beta-binomial | Более консервативен |
| Множественные сравнения | Chi-square + correction | Bonferroni или FDR correction |
Шаг 5: Интерпретация результатов
p-value < 0.05: есть статистически значимая разница
- Это значит, что вероятность получить такой результат под нулевой гипотезой < 5%
- Это НЕ значит, что эффект большой или практически важный
Confidence interval: доверительный интервал для разницы конверсий
95% CI = (p_A - p_B) ± 1.96 * SE
Effect size: Hedges' g или relative uplift
Relative uplift = (p_B - p_A) / p_A * 100%
Практические ошибки
❌ Peaking — смотреть результаты до достижения требуемого размера
- Это увеличивает p-value и risk ошибки I типа
- Решение: зафиксировать размер выборки до теста
❌ Multiple testing — тестировать много гипотез без коррекции
- При 20 тестах вероятность ложного положительного = 64%
- Решение: Bonferroni correction (α = 0.05 / number_of_tests)
❌ Игнорирование внешних факторов
- День недели, сезонность, маркетинговые кампании влияют
- Решение: рандомизировать и тестировать достаточно долго
Мой рекомендуемый процесс
- До теста: Определить размер выборки через power анализ
- Выбор критерия: Chi-square для 95% случаев
- Во время теста: НЕ смотреть результаты
- После теста: Chi-square, p-value, 95% CI, effect size
- Интерпретация: Практическая значимость + статистическая значимость
Это обеспечит валидные и воспроизводимые результаты.