Что такое SRM
Sample Ratio Mismatch — статистически значимое отклонение от запланированного соотношения групп. Если планировал 50/50, а оказалось 49/51 — может быть нормальной флуктуацией. А может быть багом.
Почему важно
Если SRM есть — твой тест скомпрометирован. Любой результат недостоверен.
Типичные причины:
- Bug в коде splitter-а
- Бот-трафик попадает в одну группу
- Кеширование → одна группа всегда падает на cached page
- Push пошёл только в одну группу
Как проверить
from scipy.stats import chisquare
observed = [n_group_a, n_group_b]
expected = [(n_total / 2), (n_total / 2)]
stat, pvalue = chisquare(observed, expected)
if pvalue < 0.001:
print('SRM ALERT! Не доверяй тесту.')
Порог alpha=0.001
Не 0.05! Если делаешь 50 SRM-чеков в год, на alpha=0.05 будет 2-3 ложных тревоги. На 0.001 — практически 0.
Что делать при SRM
- НЕ интерпретируй результаты теста
- Расследуй причину:
- В каком сегменте проблема?
- С какого устройства?
- Исправь причину
- Запусти тест заново
Кейс из Kaspi
Команда запустила A/B на новую кнопку. Через неделю: variant +5% конверсия, p<0.01. Запустили на 100%. Через 2 недели — нет роста.
После аудита нашли: код assignment имел баг, iOS 14 (10% трафика) ВСЕГДА попадали в control. variant получил больше Android-юзеров. У Android baseline выше → variant выиграл по составу группы.
Ввели обязательный SRM-чек на каждый A/B.