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