Короткий ответ
Проверяю фактическое соотношение групп статистическим тестом (например, хи-квадрат на соответствие ожидаемому сплиту); если SRM подтверждён, результаты теста по основной метрике нельзя считать надёжными до устранения причины смещения в разбиении.
Как это работает подробнее
SRM означает, что сам механизм рандомизации или сбора данных работает не так, как задумано (баг в сплиттере, разное время жизни кук, различие в логировании между группами), и любое различие в метриках между группами может быть артефактом смещённой выборки, а не эффектом фичи.
Пример кода
Пример Python
from scipy.stats import chisquare
# пример: ожидали 50/50, получили 10200 vs 9500
observed = [10200, 9500]
expected = [sum(observed) / 2, sum(observed) / 2]
chi2, p = chisquare(observed, expected)
print(chi2, p) # малое p-value -> SRM подтверждёнЧто использовать на практике
- Порядок действий. считаю наблюдаемое количество пользователей в каждой группе и сравниваю с ожидаемым хи-квадрат тестом; если p-value очень мал — SRM есть. Дальше ищу причину: разная задержка загрузки для одной из групп (что теряет часть событий), баг в условии сплита, различие в ботах/исключениях между группами, проблема с кэшированием для одного варианта. Не интерпретирую метрики теста, пока SRM не устранён.
Подводные камни
- Частые ошибки. игнорировать небольшое на вид расхождение в сплите (например, 48/52) без проверки статистической значимости; продолжать анализировать uplift по конверсии, не разобравшись с SRM; списывать SRM на «случайность», не проверив логирование и техническую реализацию сплита.