Switchback-эксперименты: когда A/B не работает

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Что такое switchback-эксперимент

Switchback — это дизайн эксперимента, где фича включается и выключается во времени для всей аудитории (а не для отдельных юзеров). Сравнивают периоды с фичей и без, контролируя время суток / день недели / сезонность.

Это альтернатива классическому A/B, когда юзеров нельзя разделить на контрольную и тестовую группы без cross-contamination — например, из-за сетевых эффектов или общего ресурса (одна и та же цена для всех).

В отличие от A/B, где юнит — юзер, в switchback юнит — это time × geo unit (например, «Москва с 14:00 до 16:00»). Внутри юнита фича либо включена для всех, либо выключена.

Когда классический A/B не работает

Классический A/B предполагает, что юзер в треатменте не влияет на юзера в контроле (SUTVA — Stable Unit Treatment Value Assumption). Это нарушается в:

Маркетплейсы и agg / on-demand (Uber, Wolt, Lavka). Если в тесте показываешь меньшую цену для одних — водителей становится меньше на улице → контрольная группа тоже ждёт дольше.

Соцсети. Если изменяешь алгоритм ленты для одних — они меняют поведение (постят / лайкают), это меняет ленту для других (включая контроль).

Аукционы рекламы. Изменение алгоритма bidding влияет на equilibrium → контроль тоже под воздействием.

Динамическое ценообразование. Одна цена для всех. A/B на цене невозможен.

Подробнее — сетевые эффекты в A/B.

Дизайн switchback

Базовый switchback

  1. Делим время на window-ы (например, 2 часа)
  2. В каждом window — либо treatment, либо control (случайно)
  3. Считаем средние метрики за window-ы treatment vs control
14:00-16:00 — T (treatment)
16:00-18:00 — C (control)
18:00-20:00 — T
20:00-22:00 — C
22:00-00:00 — T

Geo-switchback

Дополнительно к времени — разные регионы. В Москве сегодня T, в Питере — C. Завтра наоборот. Это удваивает выборку.

Stratified switchback

Учитываем характеристики window-а: weekday vs weekend, утро vs вечер. Балансируем распределение treatment по этим стратам.

Формулы и анализ

В отличие от A/B по юзерам, в switchback юнит — это window. Размер выборки = количество window-ов.

Простейший анализ:

mean_treatment - mean_control
с доверительным интервалом по t-test

Проблема: соседние window-ы не независимы. Юзер, который сделал заказ в 16:00 (T), мог бы сделать его в 16:30 (T) или в 17:00 (C) — переход между window-ами размывает эффект.

Решения:

  • Длинные window-ы (несколько часов) — снижает spill-over между ними
  • Buffer-окно между treatment и control (например, 15 минут не анализируем)
  • Регрессия с time fixed effects

Размер выборки

В отличие от A/B (где выборка = юзеры), в switchback нужно много window-ов. Обычно:

  • Длительность одного window: 1-4 часа
  • Длительность эксперимента: 2-8 недель
  • Количество window-ов: сотни до тысяч

Если эффект 5%, baseline вариативность высокая — может потребоваться 6+ месяцев. Это главный минус switchback.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Где используется

On-demand сервисы. Uber, Yandex Go, Lavka, Самокат. Изменения алгоритма распределения заказов / ценообразования.

Маркетплейсы. Изменение алгоритма ранжирования / pricing.

Реклама. Изменения bidding-алгоритма.

Соцсети. Изменения алгоритма ленты с сильным network effect.

Логистика. Изменения в маршрутизации.

Типичные ошибки

  • Короткие window-ы. При 15-минутных window-ах spill-over между ними почти 100%. Минимум — 1-2 часа.
  • Игнорировать буферы. Без buffer-окна между T и C эффект мерится с искажением.
  • Анализ как A/B. Switchback требует учёта временной корреляции. Простой t-test даёт фальшивые p-value.
  • Игнорировать сезонность. Понедельник vs суббота — разное поведение. Балансировка обязательна.
  • Слишком короткий эксперимент. Меньше 2 недель — обычно не показателен. Сезонность ломает.

Связанные темы

FAQ

Когда выбирать switchback вместо A/B?

Когда есть сетевые эффекты, общий ресурс или динамическое ценообразование. Если юзеры в T влияют на юзеров в C — switchback.

Сколько длится switchback?

Минимум 2-4 недели. Чаще 6-12 недель. Это медленный метод.

Можно ли комбинировать switchback с A/B?

Да. Например, geo-switchback (отдельные города как T/C) с регрессией внутри для дополнительной фильтрации.

Что такое spillover в switchback?

Когда treatment в одном window-е влияет на метрики в следующем (control) window-е. Например, водитель прибыл в зону благодаря T-алгоритму, остался работать в C-периоде.

Какие инструменты используются?

В большинстве компаний — custom infrastructure. Open-source: Microsoft EconML, Uber CausalML.