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