Статистика·Сложный·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
- Looking at sub-segments после теста — fishing. Найдёшь «выигрыш» в одном сегменте случайно.
- Останавливать тест рано — peeking → inflated FP rate.
- Считать вторичные метрики наравне с primary — multiple testing.
- Игнорировать guardrails — фича может «выиграть» по CR но убить retention.
- «Тест неубедителен, запустим ещё раз» — повторение увеличивает FP rate.
После выката
Не останавливайся на p<0.05. Меряй фичу через месяц — может эффект исчез (novelty effect) или вырос.