Почему назначение варианта как variant = random.choice([0, 1]) при каждом запросе пользователя — плохая идея для A/B теста?

AПользователь будет часто видеть оба варианта, и эффект смешается из-за постоянной смены варианта
BЭто гарантированно создаст SRM (Sample Ratio Mismatch), потому что random не умеет 50/50
CЭто повышает мощность теста, потому что дает больше наблюдений
DЭто делает эксперимент корректнее, потому что каждый запрос независим
Правильный ответ. Назначение должно быть стабильным для одного user_id, иначе внутри одного юнита возникает смена варианта.

Разбор

Если вариант меняется при каждом запросе, один и тот же пользователь получает смешанный опыт. Тогда вы измеряете не эффект варианта, а усреднение двух вариантов внутри пользователя, что обычно ведет к сильному размыванию. Такая схема также усложняет отладку и интерпретацию метрик по времени. Правильнее использовать детерминированный bucketing (разбивка пользователей на группы) по user_id или по другой устойчивой сущности.

Проверь себя · 1/3разбор после ответа
Вы тестируете новый экран оплаты. Пользователь может заходить в приложение много раз. Метрика — конверсия в покупку за 7 дней на уровне user_id. Какую unit of randomization (единица рандомизации) выбрать, чтобы минимизировать смешение вариантов?
Тренировать A/B в Telegram

Ещё вопросы по теме «Дизайн эксперимента и рандомизация»