← Назад к вопросам

Как будешь выбирать статистические критерии для конверсионных метрик?

2.0 Middle🔥 191 комментариев
#A/B тестирование#Статистика и математика

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Выбор статистических критериев для конверсионных метрик

Проведение 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 + correctionBonferroni или 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)

❌ Игнорирование внешних факторов

  • День недели, сезонность, маркетинговые кампании влияют
  • Решение: рандомизировать и тестировать достаточно долго

Мой рекомендуемый процесс

  1. До теста: Определить размер выборки через power анализ
  2. Выбор критерия: Chi-square для 95% случаев
  3. Во время теста: НЕ смотреть результаты
  4. После теста: Chi-square, p-value, 95% CI, effect size
  5. Интерпретация: Практическая значимость + статистическая значимость

Это обеспечит валидные и воспроизводимые результаты.