Что такое SRM и почему это опасно
Sample Ratio Mismatch (SRM) — ситуация, когда пользователи распределились между вариантами теста не в заданной пропорции. Вы настроили сплит 50/50, ожидаете 50 000 пользователей в каждой группе, а получаете 48 000 в контроле и 52 000 в тесте.
Опасность SRM не в самом отклонении, а в причине: это симптом системной ошибки в логике теста. Когда группы формируются некорректно, их нельзя считать сопоставимыми — а значит, разницу в метриках нельзя атрибутировать изменению.
Важно: SRM делает результаты теста принципиально ненадёжными. Победитель, объявленный в тесте с SRM, может оказаться артефактом ошибки, а не реальным улучшением.
Как обнаружить SRM: chi-squared тест
Стандартный метод — критерий хи-квадрат:
H0: фактическое распределение совпадает с ожидаемым
Наблюдаемые: [48 000, 52 000]
Ожидаемые: [50 000, 50 000]
χ² = (48000-50000)²/50000 + (52000-50000)²/50000
χ² = 80 + 80 = 160
p-value << 0.001 → SRM подтверждён
Правило: при любом тесте сначала проверяйте SRM, затем анализируйте метрики.
Причины SRM
| Причина | Как проявляется | Решение |
|---|---|---|
| Бот-трафик | Боты идут только в один вариант | Фильтрация ботов на уровне данных |
| Асимметричная скорость загрузки | Медленный вариант — больше отказов | Оптимизировать производительность |
| Ошибка в логике сплитования | Cookies перезаписываются, пользователи «прыгают» | Проверить sticky assignment |
| Кеширование | CDN возвращает один вариант части аудитории | Исключить кешируемые запросы из сплита |
| Дублирование событий | Одна сессия считается дважды | Дедупликация на уровне pipeline |
SRM при разных типах тестов
A/B-тест на UI: особенно уязвим к SRM через разную скорость загрузки — медленный вариант даёт больше отказов.
A/B-тест рекомендательных алгоритмов: менее уязвим к скоростному SRM, но может пострадать от неравномерного распределения новых vs вернувшихся пользователей при старте теста.
MAB (Multi-Armed Bandit): динамическая аллокация трафика по определению меняет пропорции — это нормально. SRM-проверка в MAB не применяется стандартным способом.
Как предотвратить SRM
- A/A тест перед первым экспериментом — убедиться, что система формирует группы корректно в нейтральных условиях
- Мониторинг размера групп с первых часов теста — раннее отклонение проще найти, пока тест не накопил большие данные
- Sticky assignment — пользователь, попавший в группу, всегда видит тот же вариант при всех следующих визитах
- Фильтрация ботов на уровне сбора данных, а не постфактум