Processing math: 100%

AB 테스팅 (온라인 실험)

샘플 사이즈 계산기의 공식 이해와 응용

마빈 Marvin 2022. 5. 9. 21:42

 

PAP (Product Analytics Playground) 내부에서 AB 테스팅 스터디 리드를 준비던 중 sample size 계산에 대한 수식적인 내용을 보충해야겠다는 생각이 들었습니다. 책(Trustworthy Online Controlled Experiments)의 Chapter 02 에 따르면, 샘플 사이즈를 계산하기 위해서는 baseline 의 평균과 표준편차를 알아야 한다는 내용이 나옵니다.

 

샘플 사이즈 계산에 필요한 기본적인 통계적인 로직을 이해하면, 다양한 상황에서 적용할 수 있는 장점이 있습니다. 제가 Optimizely 에서 본 계산기는 구매전환율과 같은 확률을 비교하는 상황(outcome 이 0과 1값 사이)인데, 유저 당 수익과 같은 outcome 이 확률이 아닌 상황에서는 다른 툴이 필요합니다. 샘플 계산기의 수식을 이해한다면 관련 자료를 찾아서 직접 계산을 해볼 수 있습니다.

 

샘플 사이즈 공식 (continuous outcome)

 

최적의 샘플 사이즈를 구하기 위해서는 귀무가설과 대립가설이 필요합니다. 귀무가설은 "처치의 효과가 없다"이고, 대립가설은 "처치의 효과가 δ (Minimum Detectable Difference, 기대하는 차이의 최솟값) 이상 나타난다"입니다. 최적의 샘플 사이즈를 구하기 위해서는 다음 두 가지 조건이 만족되어야 합니다. 첫 번째로, 귀무가설이 참일 때 이를 잘못 기각하지 않아야 하고, 두번째로, 대립가설이 참일 때 귀무가설을 잘못 채택해서는 안됩니다. 첫번째의 경우는 두 집단 사이에 차이가 없는데, 두 집단 사이에 차이가 있다고 잘못 판단하는 경우이고, 두 번째 경우는 두 집단 사이에 δ가 나타날 때 두 집단 사이에 효과가 없다고 판단하는 경우입니다.

 

통제집단의 outcome 분포를 Yi0N(μ0,σ20)이라 하고, 처치집단의 outcome 분포를 Yi1N(μ1,σ21)라 합시다. 아직 실험이 시작하기 전에 이 값들을 구해야하기 때문에, 기존 데이터에서 평균과 분산을 가져 오거나, 파일럿 실험을 통해서 이를 구합니다. 더불어서, 최소한의 처치 집단의 효과를 정합니다 (μ1μ0=δ). 추가적으로, 처치의 효과가 t-test 를 통해서 결정된다고 가정합니다. 

 

귀무가설과 대립가설은 다음과 같습니다.

H0:μ0=μ1 H1:μ0μ1 두 표본분포의 평균은 다음과 같습니다. E[¯Y1¯Y0]=μ1μ0 그러면, ¯Y1¯Y0E[¯Y1¯Y0]std(¯Y1¯Y0)=¯Y1¯Y0(μ1μ0)std(¯Y1¯Y0) 인데, 귀무가설 H0에서는, E[¯Y1¯Y0]=μ1μ0=0이고, 대립가설 H1 에서는, E[¯Y1¯Y0]=μ1μ0=δ 이며, Var(¯Y1¯Y0)=Var(¯Y1)+Var(¯Y0)=Var(Y1)n1+Var(Y0)n0=σ21n1+σ20n0 이므로, 귀무가설 H0에서는, ¯Y1¯Y0std(¯Y1¯Y0)=¯Y1¯Y0σ21n1+σ20n0=tα2 ¯Y1¯Y0=tα2×σ21n1+σ20n0 이고, 대립가설 H1 에서는, ¯Y1¯Y0δσ21n1+σ20n0=tβ ¯Y1¯Y0=δtβ×σ21n1+σ20n0 δ=(tα2+tβ)×σ21n1+σ20n0 추가적으로 σ20=σ21=σ2, and n0=n1=n 라고 가정하면, n0=n1=n=2(tα2+tβ)2(σδ)2 입니다.

σδ가 커지면, 필요한 표본의 수가 늘어납니다. Outcome 의 분산이 커지면, 필요한 표본의 개수가 늘어납니다.
 

샘플 사이즈 공식 (binary outcome)

 
이전의 사례와 달리, 구매전환율처럼 성공률의 차이를 구하는 경우에는 조금 다릅니다. H0:p0=p1 H1:p0p1 분산은 p(1p) 입니다. 귀무가설 H0에서는, ^p0^p10ˉp(1ˉp)n0+ˉp(1ˉp)n1=tα2 이고, 대립가설 H1 에서는, ^p0^p1δp0(1p0)n0+p1(1p1)n1=tβ 추가적으로 n0=n1=n로 가정하면, tα2×2ˉp(1ˉpn=δtβp0(1p0)+p1(1p1)n n=(tα22ˉp(1ˉp)+tβp0(1p0)+p1(1p1))2δ2 성공률에 대한 샘플사이즈 계산기에서 minimum detectable effect (앞으로 mde 라 하겠습니다) 는 기존 성공률에 대한 상대적인 상승률이라고 Optimizely 문서에서는 정의되어 있습니다 (MDE represents the relative minimal improvement over the baseline). mde=p1p01.

 

import math

p0 = 0.05
mde = 0.10
p1 = p0*(1+mde)
pbar = (p0+p1)/2

alpha=0.95
beta=0.8
t_alpha2=1.96
t_beta = 0.84
delta = p1-p0

n=(t_alpha2*math.sqrt(2*pbar*(1-pbar))+t_beta*math.sqrt(p0*(1-p0)+p1*(1-p1)))**2*(1/delta)**2
n

 

ipython 링크에 위 코드를 실행해볼 수 있게 해두었다. Optimizely 의 결과와 거의 유사하게 나온다. t 들을 n 이 매우 클 때의 z 값으로 고정시켜 두어서 오차가 생기는 것 같습니다. 

 

Cluster Randomization 을 한다면? 

 

무작위 추출에서 SUTVA(Stable Unit Treatment Value Assumption) 가정을 충족하지 못하는 경우에는 clustered randomization 의 방법을 생각해볼 수 있습니다. 예를 들어, 게임 유저에게 랜덤하게 아이템을 지급할 때 한 유저의 아이템 장착이 다른 유저에게 영향을 준다면, spillover 가 발생하기 때문에 SUTVA 가정이 충족하지 못합니다. 이럴 때, 서버 단위의 실험을 생각해볼 수 있습니다 (홀수번째 서버는 아이템을 랜덤하게 지급하고 짝수번째 서버는 그렇지 않다는 등등). 이 때, 무작위 추출의 단위가 유저가 아니라 서버와 같은 그룹(클러스터) 단위이기 때문에, 표본의 크기도 달라집니다. List et al. (2011) 논문의 섹션 4.2 Cluster Designs 에 추가적인 내용이 있어서 궁금하신 분들은 더 찾아보면 좋을 것 같네요.

 

마무리하며

 

샘플 사이즈 공식의 추론 과정을 이해하면, 구매전환율과 같은 확률적인 결과 뿐만 아니라, 결과값이 contiuous 한 경우, clustered randomization 과 같은 SUTVA 가 성립하지 않는 상황에서 직접 공식을 찾고 이를 이용해서 최소한의 샘플 사이즈를 엑셀이나 간단한 프로그램을 통해서 구할 수 있습니다.

 

 

 

cf. 추후 더 공부해볼 내용

- Type I error vs. Type II error

- Multiple Hypothesis Testing

- Cluster Randomization

- 분산(표준편차)이 낮을 수록 필요한 샘플사이즈가 작아진다. List et al. (2011) 의 논문을 보니, Yi|XiN(μ,σ2) 인데 그러면 Xi 를 통제하지 않으면 분산이 커져서 필요한 샘플 사이즈가 더 늘어나지 않을까 하는 궁금증이 생겼다. 

- List et al. (2011) 의 섹션 3.4 parameter uncertainty 에서 해당 방법론의 단점에 대해서 지적한다. 이를 극복하기 위한 방법 중 Bayesian 방법론에 대한 소개가 되어 있는데, 과연 요즘 Bayesian 방법론을 자주 사용하는지 궁금하다 (찾아봤을 때는 논문이 그리 많지는 않은 것 같다). 

- List et al. (2011) 의 섹션 3.3 treatments with unequal costs 도 흥미롭다. 책의 Ch 02 에서 "practical significance" 에 대해서 다루는데, 처치 집단 샘플을 구성하는데 필요한 비용을 계산할 수 있다면, 샘플 사이즈를 계산할 때 이미 이를 반영할 수 있을 것 같다. 

 

Reference

Optimizely

https://www.optimizely.com/sample-size-calculator/?conversion=5&effect=10&significance=95 

 

List et al. 2011, "So you want to run an experiment, now what? Some Simple Rules of Thumb for Optimal Experimental Design" Experimental Economics 의 NBER Working Paper version

https://www.nber.org/papers/w15701

 

Paulynn Yu, Understanding Power Analysis in AB Testing

https://towardsdatascience.com/understanding-power-analysis-in-ab-testing-14808e8a1554

 

PAP 오채환님 글, "샘플 사이즈 계산기에 숨어있는 통계 이야기"

https://playinpap.github.io/sample-size-calculator-statistics/

 

Chandar et al. 2019, "Design and Analysis of Cluster-Randomized Field Experiments in Panel Data Settings" NBER Working Paper

https://www.nber.org/system/files/working_papers/w26389/w26389.pdf

 

Kohavi et al. 2020, "Trustworthy Online Controlled Experiments (A Practical Guide to A/B Testing)

https://www.amazon.com/Trustworthy-Online-Controlled-Experiments-Practical/dp/1108724264