← all posts
AI 2026.05.03 · 13 min read Advanced

A/B 테스트의 통계적 엄밀성은 어디서 오는가

가설 검정 프레임워크부터 CUPED 분산 감소, 다중 검정 보정, Sequential Testing, Bayesian 의사결정까지 — 현대 A/B 테스트를 지탱하는 통계적 토대를 추적한다.


A/B 테스트는 단순해 보인다 — 두 그룹을 나누고, 결과를 비교하고, 더 좋은 쪽을 선택한다. 그러나 그 위에 쌓인 통계적 결정들을 하나씩 들여다보면, 각각이 특정 실패 모드를 막기 위해 설계된 정교한 방어선임을 알게 된다. 가설 검정에서 Bayesian 의사결정까지, 이 글이 추적하는 질문은 하나다 — A/B 테스트의 결론을 신뢰할 수 있게 만드는 통계적 엄밀성은 어디서 오는가?

모든 것의 토대: 가설 검정 프레임워크

A/B 테스트는 본질적으로 Neyman-Pearson 프레임워크의 직접 응용이다. 두 그룹의 평균 차이를 검정한다.

H0:μA=μB,H1:μAμBH_0: \mu_A = \mu_B, \quad H_1: \mu_A \neq \mu_B

이 틀 안에서 세 가지 오류 개념이 나온다.

α=Pr(reject H0H0),β=Pr(fail to reject H0H1),Power=1β\alpha = \Pr(\text{reject } H_0 \mid H_0), \quad \beta = \Pr(\text{fail to reject } H_0 \mid H_1), \quad \text{Power} = 1 - \beta

α=0.05\alpha = 0.05라는 임계값은 통계적으로 유도된 것이 아니다. Fisher 1925년의 경험적 기준이며 학문적 합의다. ASA 2016 statement는 명시적으로 “p < 0.05만으로는 의사결정이 부족하며, effect size와 신뢰구간을 함께 봐야 한다”고 경고한다.

p-value에 대한 가장 흔한 오해도 여기서 비롯된다. p-value는 “H0H_0가 참일 확률”이 아니다. “H0H_0가 참이라는 가정 하에, 관측된 것만큼 극단적인 데이터가 나올 확률”이다. 이 차이는 사소하지 않다 — 두 statement는 완전히 다른 철학적 위치에 있다.

실험 규모의 설계: Sample Size와 CUPED

프레임워크를 이해했다면, 실험이 망하는 가장 흔한 원인을 막을 수 있다 — 검출력 부족(under-powered). Sample size 공식은 다음 한 줄로 유도된다.

n=2σ2(zα/2+zβ)2Δ2(per group)\boxed{n = \frac{2\sigma^2 (z_{\alpha/2} + z_\beta)^2}{\Delta^2} \quad \text{(per group)}}

α=0.05\alpha = 0.05, power = 0.8 기준으로 (1.96+0.84)2=7.84(1.96 + 0.84)^2 = 7.84라는 magic number가 나온다. 분산 σ2\sigma^2이 선형으로, 검출하려는 효과 Δ\Delta가 역제곱으로 영향을 미친다. n을 4배 늘려야 MDE가 절반으로 줄어드는 이유다.

이 공식에서 분산 σ2\sigma^2을 직접 줄이는 방법이 CUPED다 (Deng et al. 2013).

Yadj=Yθ(XE[X]),θ=Cov(X,Y)Var(X)Y_{\text{adj}} = Y - \theta(X - \mathbb{E}[X]), \quad \theta^* = \frac{\text{Cov}(X, Y)}{\text{Var}(X)}

XX는 실험 시작 전 같은 metric의 pre-experiment 값이다. 이 조정이 분산을 얼마나 줄이는지는 정확히 유도된다.

Var(Yadj)=(1ρ2)Var(Y)\text{Var}(Y_{\text{adj}}) = (1 - \rho^2)\,\text{Var}(Y)

ρ=0.9\rho = 0.9이면 분산이 81% 감소한다 — 즉 같은 검출력을 달성하는 데 필요한 sample이 5분의 1로 줄어든다. Unbiasedness는 randomization이 보장한다. XX가 실험 이전 데이터이므로 treatment 배정과 독립적이고, 따라서 그룹 간 XX 평균 차이의 기댓값이 0이 된다.

CUPED의 전제 조건

Pre-experiment 데이터가 없는 신규 사용자 비율이 높거나, XXYY의 관계가 비선형이라면 CUPED의 효과가 제한된다. ρ<0.3\rho < 0.3이면 ROI가 미미하다.

다중 검정의 함정: FDR 통제

단일 metric을 하나의 실험에서 한 번만 검정하는 경우는 드물다. 여러 metric을 동시에 평가하거나, 여러 segment를 분석하거나, 100개의 prompt를 비교할 때 — 각각 5%의 Type I error라도 누적하면 “어느 하나는 우연히 유의”하게 된다.

Benjamini-Hochberg(BH) 절차는 이 문제에 대한 현재 표준이다. p-value를 정렬해 가장 큰 kk를 찾는다.

find largest k:p(k)kmα,reject p(1),,p(k)\text{find largest } k : p_{(k)} \leq \frac{k}{m}\,\alpha, \quad \text{reject } p_{(1)}, \ldots, p_{(k)}

이 절차는 독립(또는 PRDS) 가정 하에 FDR α\leq \alpha를 보장한다.

FDR=E ⁣[VR1]m0mαα\text{FDR} = \mathbb{E}\!\left[\frac{V}{R \vee 1}\right] \leq \frac{m_0}{m}\,\alpha \leq \alpha

Bonferroni는 FWER(어떤 false reject라도 발생할 확률)을 통제하지만 매우 보수적이다. m=100m = 100이면 각 검정의 임계값이 α/100=0.0005\alpha/100 = 0.0005까지 내려간다. BH는 FDR이라는 완화된 기준을 쓰되, 발견 수는 훨씬 많다. LLM evaluation에서 100개 이상의 prompt를 비교할 때 BH가 사실상 표준이 된 이유다.

Peeking과 Sequential Testing

“실험 결과를 중간에 확인하면 안 된다”는 규칙을 지키는 팀은 거의 없다. PM은 매주 결과를 본다. 이 peeking이 왜 문제인지는 수치로 명확하다 — k번 중간 확인을 하면 실제 Type I error는 다음에 가까워진다.

Pr ⁣(i=1kZTi>zα/2)1(1α)k\Pr\!\left(\bigcup_{i=1}^k |Z_{T_i}| > z_{\alpha/2}\right) \approx 1 - (1 - \alpha)^k

k=5k = 5이면 actual α0.23\alpha \approx 0.23이다. 목표의 4.6배.

mSPRT(Johari 2017)는 이 gap을 닫는다. 매 시점 likelihood ratio를 prior π\pi와 mixing해 martingale 통계량 mtm_t를 만든다.

mt=Θ1Λt(θ)dπ(θ)m_t = \int_{\Theta_1} \Lambda_t(\theta)\,d\pi(\theta)

mtm_tH0H_0 하에서 martingale이므로, Ville의 부등식에 의해 다음이 성립한다.

Pr(suptmt>1/αH0)α\Pr(\sup_t m_t > 1/\alpha \mid H_0) \leq \alpha

언제 멈춰도 Type I error가 α\alpha 이하다. Optimizely, Eppo, Statsig 같은 상용 A/B 플랫폼이 모두 이 방식을 채택한 이유다. 대신 비용이 있다 — 작은 effect일수록 fixed-n보다 평균적으로 더 많은 sample이 필요하다(ASN 1.5×\approx 1.5\times).

Bayesian 관점: 다른 질문에 대한 답

Frequentist 검정이 “H0H_0가 참이라는 전제 하에 데이터가 얼마나 극단적인가”를 묻는다면, Bayesian은 직접 묻는다 — “데이터를 봤을 때 A가 B보다 나을 확률은?”

Beta-Bernoulli conjugate 모델에서 이 질문은 closed form으로 답해진다.

μdataBeta(α0+s, β0+ns)\mu \mid \text{data} \sim \text{Beta}(\alpha_0 + s,\ \beta_0 + n - s)

두 posterior에서 sampling해 Pr(μA>μBdata)\Pr(\mu_A > \mu_B \mid \text{data})를 직접 계산한다. 그리고 stopping 기준도 달라진다 — p-value 임계값이 아니라 expected loss다.

E[losschoose A]=E[max(0, μBμA)]\mathbb{E}[\text{loss} \mid \text{choose } A] = \mathbb{E}[\max(0,\ \mu_B - \mu_A)]

이 expected loss가 허용 임계값 τ\tau 아래로 내려가면 결정한다. Bayesian 접근이 stopping rule에 무관한 이유는 likelihood principle에서 나온다 — posterior는 데이터의 likelihood에만 의존하고, 데이터를 어떤 절차로 수집했는지에는 의존하지 않는다. Frequentist가 peeking에 민감한 이유는 sampling distribution이 수집 절차에 의존하기 때문이다.

정리

  • 가설 검정 프레임워크(α,β\alpha, \beta, Power)는 A/B 테스트 모든 후속 설계의 토대다. p-value는 “H0H_0가 참일 확률”이 아니라 “데이터의 surprise 정도”다.
  • CUPED는 Var(Yadj)=(1ρ2)Var(Y)\text{Var}(Y_{\text{adj}}) = (1-\rho^2)\text{Var}(Y)로 분산을 줄여 sample size를 직접 낮춘다. ρ=0.9\rho = 0.9이면 필요 sample이 5분의 1로 줄어든다.
  • 다중 검정 환경에서 Benjamini-Hochberg 절차는 FDR α\leq \alpha를 보장하면서 Bonferroni보다 훨씬 많은 발견을 허용한다.
  • Peeking은 Type I error를 수배 이상 inflate한다. mSPRT는 Ville의 부등식을 통해 anytime-valid 통제를 제공한다.
  • Bayesian A/B는 stopping rule에 무관하고 의사결정을 expected loss로 자연스럽게 표현한다.

각 도구는 서로 다른 실패 모드를 막기 위해 설계됐다. 이 설계 의도를 이해하지 못하면, 올바른 도구를 고르는 것도 올바르게 쓰는 것도 어렵다.