Split, MDE и prelaunch checks
Как сплитовать A/B для динамической доставки, считать MDE и что проверить до запуска?
Короткий ответ
Split зависит от interference: user-level удобен для UX, но логистика может требовать city/unit-level или clustered design; перед запуском нужны A/A, dry-run и power analysis.
Полный разбор
Если пользователи независимы, можно сплитовать по user_id и фиксировать bucket. Но в доставке есть interference: курьеры, кухня и зоны общие, поэтому treatment одних пользователей может влиять на SLA других. Иногда нужен split по unit/city/zone или clustered experiment.
MDE считается от baseline variance, traffic, desired power и alpha. Для heavy-tailed profit лучше рассматривать bootstrap, CUPED или агрегирование по пользователю/дню. Перед A/B: A/A на сплите, dry-run policy без применения цены, проверка логов, missing features, latency, fallback share и симуляция guardrails.
Нужно заранее определить stop criteria и не менять метрики после просмотра первых результатов.
Теория
В experiment design unit of randomization должен соответствовать unit of interference, иначе p-values будут красивыми, но неверными.
Типичные ошибки
- Сплитовать по заказам и ломать пользовательский UX.
- Игнорировать interference через курьеров и кухни.
- Запустить без A/A и dry-run.
Как отвечать на собеседовании
- Обсуди user vs unit/city split.
- Назови MDE, power analysis и A/A test.