← К списку уроков
Статистика·Сложный·8 мин

Интерпретация результатов A/B

Что делать с цифрами в конце теста. Catalog ошибок.

Final checklist

Тест завершён. Sample size набрался. Что делать.

1. SRM check

Sample Ratio Mismatch — соотношение групп должно быть как планировалось (50/50).

from scipy.stats import chisquare
stat, p = chisquare([n_A, n_B], [(n_A+n_B)/2, (n_A+n_B)/2])
if p < 0.001:
    print("SRM! Тест скомпрометирован, не интерпретируй.")

2. Основная метрика

Считаешь:

  • Treatment effect: (B − A) / A × 100%
  • 95% confidence interval

3. Guardrails

Не упали ли retention, latency, errors?

Возможные результаты

Победа variant: p < 0.05, эффект ≥ MDE

✅ Выкатывать на 100%.

p < 0.05, эффект < MDE

🤔 Статзначимо, но эффект меньше запланированного. Может, выкатить, может — не стоит усилий.

p > 0.05, эффект ~ 0

❌ Эффекта нет. Не выкатывать.

p > 0.05, эффект большой

🤷 Хочется выкатить но не уверен. Запусти тест дольше.

Mixed results (главная +, guardrail −)

🛑 Стоп. Понять trade-off, обсудить с продакт.

Common mistakes

  1. Looking at sub-segments после теста — fishing. Найдёшь «выигрыш» в одном сегменте случайно.
  2. Останавливать тест рано — peeking → inflated FP rate.
  3. Считать вторичные метрики наравне с primary — multiple testing.
  4. Игнорировать guardrails — фича может «выиграть» по CR но убить retention.
  5. «Тест неубедителен, запустим ещё раз» — повторение увеличивает FP rate.

После выката

Не останавливайся на p<0.05. Меряй фичу через месяц — может эффект исчез (novelty effect) или вырос.