Что такое 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

  1. НЕ интерпретируй результаты теста
  2. Расследуй причину:
    • В каком сегменте проблема?
    • С какого устройства?
  3. Исправь причину
  4. Запусти тест заново

Кейс из Kaspi

Команда запустила A/B на новую кнопку. Через неделю: variant +5% конверсия, p<0.01. Запустили на 100%. Через 2 недели — нет роста.

После аудита нашли: код assignment имел баг, iOS 14 (10% трафика) ВСЕГДА попадали в control. variant получил больше Android-юзеров. У Android baseline выше → variant выиграл по составу группы.

Ввели обязательный SRM-чек на каждый A/B.