Switchback Design

Bojinov-Simchi-Levi-Zhao (2023) — 시간 단위 무작위 배정

Switchback experiment 의 정통. (1) 동기 — 2-sided market 의 spillover, (2) 시간 단위 무작위 배정의 메커니즘, (3) Carry-over effect 의 정의와 처리, (4) Bojinov, Simchi-Levi, Zhao (2023) 의 estimator + variance, (5) Block randomization vs individual randomization, (6) Uber 의 실제 적용 사례, (7) 시뮬레이션.

Experimentation
A/B Testing
저자

Kwangmin Kim

공개

2026년 05월 09일

출처

이 글은 사전지식 기반 (교재 미확인 — agent 사전학습 기반). 핵심 인용 — Bojinov, Simchi-Levi, Zhao (2023), Bojinov & Shephard (2019), Hu & Wager (2022).

이 글은 J-SWITCH 시리즈의 두 번째 글. Switchback design 의 정통 — Bojinov 2023 — 을 다룬다.

1 진입 직관 — “같은 시장에서 시점만 바꾸기”

표준 A/B: unit 을 처치/대조 분리. 그러나 2-sided market 에서는 시장 균형 이 spillover.

Switchback 의 한 줄 원리: 전체 시장 에 처치 또는 대조 적용. 시점에 따라 무작위 전환. 같은 unit 이 시점에 따라 두 alg 모두 경험.

결과: spillover 시장 안에서 균등화. 시점 비교 로 효과 추정.

1.1 비유

식당의 메뉴 — 월/수/금 새 메뉴, 화/목/토 기존 메뉴 (무작위 전환). 전체 손님 이 시점에 따라 둘 다 경험. 두 시점 그룹의 매출 비교 — 메뉴의 효과.

표준 A/B: 손님을 처치/대조 분리 — 그러나 식당 전체 분위기 는 모든 손님에게 영향 (spillover).

2 Bojinov-Simchi-Levi-Zhao (2023)

2.1 의의

Switchback experiment 의 modern 정통. Uber 의 실제 적용 에서 motivated.

2.2 핵심 contribution

  1. 시점 단위 무작위 배정 의 정통화
  2. Carry-over effect 의 명시적 modeling
  3. Variance 의 분석 + block size 결정

3 시점 단위 무작위 배정

3.1 메커니즘

시간을 T 개 block 으로 분할. 각 block 의 처치 \(A_t \in \{0, 1\}\)무작위 결정.

예: 1 시간을 6 개 10 분 block 으로 분할. 각 block 의 처치 fair coin 으로.

3.2 Outcome

\(Y_t\): block \(t\) 의 outcome (예: trip 수, 평균 ETA, GMV).

3.3 Estimator

\[ \hat{\tau} = \bar{Y}_{A=1} - \bar{Y}_{A=0} \]

처치 block 평균 - 대조 block 평균.

3.4 가정

  1. No spillover across markets: 한 도시의 switchback 이 다른 도시 영향 없음 (market isolation)
  2. Carry-over 짧음: 이전 block 의 처치 영향이 다음 block 에 제한적

4 Carry-Over Effect

4.1 정의

이전 block \(t-1\) 의 처치 \(A_{t-1}\) 이 현재 block \(t\) 의 outcome \(Y_t\) 에 영향. 시간적 spillover.

4.2 사례

Uber: 15:00~15:30 처치 (할증 ↑) → 운전자 과잉 공급15:30~16:00 대조 시점에도 공급 잔류.

4.3 처리 1: Block size 충분히 크게

Carry-over 가 짧은 시간 만 지속하면 충분히 큰 block 사용. 다음 block 의 시작 부분 데이터 제외 (warm-up).

4.4 처리 2: Lag model

\[ Y_t = \alpha + \tau A_t + \gamma A_{t-1} + \varepsilon_t \]

\(\gamma\): lag-1 carry-over.

4.5 처리 3: First-block-only

매 block 의 첫 시점만 outcome 관측. Carry-over 영향 최소화.

5 Block Randomization

5.1 메커니즘

시간을 큰 block (예: 일) 으로 나누고 block 내에서 균형 무작위.

예: 하루 24 시간12 시간 처치 + 12 시간 대조. 시점은 무작위.

5.2 장점

균형 (balance) 보장 — 처치/대조 시간 비율 정확.

5.3 단점

Carry-over 보정 어려움 — 12 시간 연속 처치 시 long-term effectcarry-over 혼동.

6 Variance Analysis (Bojinov 2023)

6.1 Naive variance

\[ \widehat{\text{Var}}(\hat{\tau}) = \frac{S_1^2}{T_1} + \frac{S_0^2}{T_0} \]

\(S_a^2\): 그룹 \(a\) 의 outcome variance, \(T_a\): 그룹 \(a\) 의 block 수.

6.2 문제

시계열 autocorrelation 무시. 실제 SE 가 과소 추정.

6.3 Bojinov 제안 — HAC SE

Heteroskedasticity and Autocorrelation Consistent (HAC) SE — autocorrelation 보정.

6.4 Block size 의 trade-off

  • 작은 block: 무작위 균형 좋지만 carry-over
  • 큰 block: 균형 어렵지만 carry-over 작음 (warm-up 가능)

Optimal block size — Bojinov 의 분석.

7 Hu & Wager (2022) — Optimal Block Size

7.1 동기

Block size 의 optimal 결정. MSE 최소화.

7.2 결과

Carry-over 의 length scale 과 outcome variance 의 비율로 결정. 일반적 권장: 30 분 ~ 1 시간 block.

8 Uber 사례 — 실제 응용

8.1 시나리오

Surge pricing algorithm 변경 — 새 알고리즘 의 매출/대기 시간 효과.

8.2 표준 A/B 의 한계

일부 운전자에게 새 알고리즘 적용 시 나머지 운전자의 호출 도 영향 (spillover). 제어 그룹의 시장 균형 변화.

8.3 Switchback

전체 시장5 분 단위 알고리즘 전환. 모든 운전자 가 두 알고리즘 모두 경험.

분석: 5 분 시점의 outcome (trips, ETA, GMV) 을 처치/대조 그룹으로 비교.

8.4 결과

Spillover 영향 최소화. 진짜 시장 효과 추정.

9 시뮬레이션 — Switchback

import numpy as np

np.random.seed(42)

# 시나리오: 24 시간 = 144 block (10 분 단위), 무작위 처치
T = 144
A = np.random.binomial(1, 0.5, T)

# Outcome (trips per block):
# - Baseline: 50
# - 직접 효과: +5
# - Spillover (전 시점의 30%): +2 if A_{t-1} = 1
# - Time-of-day variation: ±10
true_effect = 5.0
carry_over = 2.0

Y = np.zeros(T)
for t in range(T):
    base = 50 + 10 * np.sin(2 * np.pi * t / T)   # 시간대 변동
    direct = true_effect * A[t]
    co = carry_over * A[t-1] if t > 0 else 0
    Y[t] = base + direct + co + np.random.normal(0, 3)

# Naive estimator (carry-over 무시)
naive = Y[A == 1].mean() - Y[A == 0].mean()
print(f"[Switchback 시뮬레이션]\n")
print(f"진짜 direct effect: {true_effect}")
print(f"Carry-over (lag-1): {carry_over}")
print(f"\nNaive estimate (carry-over 무시): {naive:.2f}")
print(f"  → 진짜 효과 + 약간의 carry-over bias")

# Lag model
import statsmodels.api as sm

X = np.column_stack([A, np.roll(A, 1)])
X = sm.add_constant(X)
model = sm.OLS(Y[1:], X[1:]).fit()   # 첫 row 제외 (lag undefined)

print(f"\n[Lag model (Y_t ~ A_t + A_{{t-1}})]")
print(f"  Direct effect (β_1): {model.params[1]:.2f}")
print(f"  Carry-over (β_2): {model.params[2]:.2f}")
print(f"  → 진짜 direct effect {true_effect} 와 carry-over {carry_over} 분리")

# HAC SE
from statsmodels.stats.sandwich_covariance import cov_hac
hac_cov = cov_hac(model, nlags=3)
se_naive = model.bse[1]
se_hac = np.sqrt(hac_cov[1, 1])

print(f"\n[Variance 분석]")
print(f"  Naive SE: {se_naive:.3f}")
print(f"  HAC SE: {se_hac:.3f}")
print(f"  → autocorrelation 보정 시 SE 가 약간 큼")

10 결론

Switchback design 은 시간 단위 무작위 배정 으로 spillover 우회. Carry-over effect 가 핵심 도전 — block size + lag model 로 처리. Bojinov-Simchi-Levi-Zhao (2023) 의 estimator + variance 가 modern 정통. Uber 등 2-sided market 에서 표준.

핵심 메시지:

  1. Switchback = 시간 단위 무작위
  2. Carry-over effect: 시간적 spillover, 핵심 도전
  3. Bojinov 2023: estimator + variance 정통
  4. Block size: trade-off (균형 vs carry-over)
  5. HAC SE: autocorrelation 보정
  6. Hu-Wager 2022: optimal block size
  7. Uber 응용: 표준

다음 글: Geo Holdout.

11 관련 주제

선행 지식

  • J-SWITCH-0 Overview
  • (Phase F) F12-* — Client-side experiments
  • (Phase F) Trustworthy A/B SUTVA

Phase J 후속 글

12 참고문헌

  • Bojinov, I., Simchi-Levi, D., Zhao, J. (2023). Design and analysis of switchback experiments. Management Science 69, 3759-3777.
  • Bojinov, I. & Shephard, N. (2019). Time series experiments and causal estimands: Exact randomization tests and trading. J. Amer. Statist. Assoc. 114, 1665-1682.
  • Hu, Y. & Wager, S. (2022). Switchback experiments under geometric mixing. arXiv:2209.00197.
  • Cooprider, J. & Nassiri, S. (2023). Science of price experimentation at Amazon. Amazon Tech Blog.
  • Glynn, P. W., Johari, R., Rasouli, M. (2020). Adaptive experimental design with temporal interference. NeurIPS.

Subscribe

Enjoy this blog? Get notified of new posts by email: