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