Короткий ответ
Помимо проверки соотношения размеров групп (SRM), нужно проверить баланс ковариат — характеристик пользователей, которые не должны зависеть от группы (платформа, страна, устройство, историческая активность до теста), чтобы убедиться, что группы сопоставимы не только по численности, но и по составу.
Как это работает подробнее
Как это работает: для каждой ковариаты сравнивают распределение между группами (например, долю iOS/Android или среднюю активность за месяц до теста); при корректной рандомизации различия должны быть статистически не значимы и малы по величине на большой выборке.
Ожидаемый результат: p-value для разницы в pre_activity_30d должен быть заметно больше 0.05 (нет значимой разницы) — иначе это сигнал, что рандомизация могла быть нарушена.
Пример кода
analysis.py
import pandas as pd
from scipy import stats
# pre_activity — активность пользователя ДО начала теста
a = df.loc[df.group == "A", "pre_activity_30d"]
b = df.loc[df.group == "B", "pre_activity_30d"]
t_stat, p_value = stats.ttest_ind(a, b, equal_var=False)
print(p_value)Что использовать на практике
- На практике: такую проверку, известную как pre-test / A/A-like баланс-чек, часто автоматизируют как часть стандартного отчёта по тесту: таблица 'ковариата — значение в A — значение в B — p-value' для набора заранее выбранных признаков, известных до начала теста (чтобы не включать признаки, которые сами могли быть затронуты тестом).
Подводные камни
- Частые ошибки: использование для баланс-чека признаков, измеренных после начала теста (например, активность уже во время теста) — это может быть следствием самого эффекта изменения, а не индикатором качества рандомизации, что ведёт к неверным выводам.