К тренажеру
ВопросHardmlsd-pricingРеальный собес

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.