Эксперимент рандомизируется по user_id, а вы считаете метрику на уровне session_id (например, длительность сессии) и сравниваете сессии как независимые наблюдения. Что здесь главное методологическое последствие?
AНикакого, если сессий много, то независимость гарантирована
BСтандартные ошибки могут быть занижены, потому что сессии одного
user_id зависимы, и нужно агрегировать до пользователя или учитывать кластеризациюCСреднее значение метрики обязательно станет смещенным вверх
DЭто автоматически приводит к
SRM (Sample Ratio Mismatch) даже при правильном bucketing (разбивка пользователей на группы)Правильный ответ. Если
unit of analysis мельче unit of randomization (единица рандомизации), наблюдения внутри одного объекта коррелируют и стандартные ошибки могут быть занижены.Разбор
При рандомизации по user_id независимыми являются пользователи, а не их сессии. У одного пользователя поведение по сессиям часто связано, поэтому считать каждую session_id независимой ошибочно. Это обычно не обязательно смещает средний эффект, но может дать слишком оптимистичные p-value и доверительные интервалы. Типовые решения — агрегировать метрику на user_id или использовать кластерные ошибки на уровне пользователя.
Проверь себя · 1/3разбор после ответа
Почему назначение варианта как
variant = random.choice([0, 1]) при каждом запросе пользователя — плохая идея для A/B теста?Ещё вопросы по теме «Дизайн эксперимента и рандомизация»
- Вы тестируете новый экран оплаты. Пользователь может заходить в приложение много раз. Метрика — конверсия в покупку за 7 дней на уровне `user_id`. Какую `unit of randomization` (единица рандомизации) выбрать, чтобы минимизировать смешение вариантов?
- В тесте нового реферального механизма пользователь из `treat` отправляет приглашения друзьям, которые попадают в `control` и тоже меняют поведение. Какое допущение нарушается и почему это важно?
- Эксперимент меняет алгоритм распределения заказов между курьерами. Курьеры обслуживают сразу нескольких пользователей, и решение для одного заказа влияет на время доставки других. Какой подход к рандомизации чаще всего лучше уменьшит `interference`?
- Вы делаете `bucketing` (разбивка пользователей на группы) как `hash(user_id + day) % 2`, где `day` — текущая дата. Что самое вероятное следствие для эксперимента?
- Ожидаемое разбиение — 50/50. По логам экспозиций видно `N_treat / N_control = 1.30`. Какой вывод и следующий шаг наиболее корректны?
- Все вопросы по «Дизайн эксперимента и рандомизация» →