"이번 A/B는 기간을 2주로 잡았는데 첫째 주에 p-value가 0.03이 됐어요. 멈출까요?" 마케터가 매일 부딪히는 유혹입니다. 답은 "고전 통계로는 안 됨, sequential testing으로는 됨"입니다. 매일 들여다봐도 거짓양성이 부풀지 않는 통계 프레임이 따로 있고, Optimizely·Statsig·Meta가 이미 표준으로 쓰고 있습니다. 이 글은 mSPRT와 always-valid p-value의 직관을, 마케터가 운영 현장에서 바로 쓸 수 있는 형태로 풀어냅니다.
1. peeking이 거짓양성을 부풀리는 진짜 원인
A/B 테스트 매뉴얼이 늘 강조하는 한 줄이 있습니다.
미리 정한 표본 크기에 도달하기 전까지 p-value를 보지 마세요.
이 규칙은 마케팅 운영에서 거의 지켜지지 않습니다. 광고 운영자가 매일 대시보드를 보는 건 본능이고, 의사결정자는 "이번 주 결과는?"을 매주 묻습니다. 매일 들여다보면서 "p < 0.05면 멈추고, 아니면 계속"의 룰을 굴리면 어떻게 될까요.
거짓양성이 5%가 아니라 30~50%까지 부풀어 오릅니다. peeking이라고 부르는 함정입니다.
1-1. 왜 부풀까
고전 t-검정의 5%는 한 번만 본다는 가정 위에 있습니다. 같은 실험을 매일 한 번씩 14일 보고, 어느 한 날이라도 p < 0.05면 멈추는 룰이면 그건 14번 반복 검정한 것과 같습니다. 14번이면 적어도 한 번이 우연히 0.05를 깨뜨릴 확률은 1 - 0.95^14 ≈ 51%까지 올라갑니다.
운영적으로 이 함정의 결과는 다음과 같습니다.
- 사실은 효과가 없는 안을 효과 있다고 결론 — 잘못된 캠페인 확장
- 운 좋은 첫 주 결과로 멈춤 — 그 다음 주에 다시 흔들림
- "지난번 실험은 분명 유의했는데"가 반복 — 팀 전체가 통계에 회의적
⚠️ 가장 흔한 운영 함정
"p가 0.04다 → 멈추자"는 의사결정이 진짜 위험한 자리는 효과가 정말 있는 안에서가 아니라 효과가 거의 0인 안에서입니다. 효과 0인 안의 p-value는 매일 다르게 흔들리기 때문에 충분히 길게 들여다보면 어느 날인가 0.05 미만으로 떨어집니다. 그 날 멈추면 효과 없는 안을 확장하게 됩니다.
2. Sequential testing의 한 줄 약속
Sequential testing은 한 줄짜리 약속입니다.
어느 시점에 멈추든, 거짓양성 보증이 그대로 유지된다.
이 약속이 있으면 매일 보든 매주 보든 처음에 정한 거짓양성률(보통 5%)이 깨지지 않습니다. 멈춤 규칙을 미리 정할 필요도 없고, 표본 크기를 미리 잡지 않아도 됩니다. always-valid라는 표현이 이 성질을 가리킵니다.
핵심 도구는 likelihood ratio입니다. 매 시점 누적 데이터에서 다음 비를 계산합니다.
이 비가 미리 정한 임계 를 넘으면 멈추고 효과 있다고 결론, 그렇지 않으면 계속. 핵심 정리는 Wald(1945)가 증명했습니다 — 이 룰은 어느 시점에 멈춰도 type I error가 이하입니다.
📌 고전 검정과 무엇이 다른가
고전 t-검정은 "고정된 표본 크기에서 한 번 결론"을 가정합니다. Sequential testing은 그 가정을 푼 자리에 likelihood ratio라는 다른 도구를 깔아둔 것입니다. 같은 데이터에 다른 통계 프레임이라고 봐도 됩니다.
3. mSPRT — 마케팅이 가장 자주 쓰는 변형
Wald의 SPRT(Sequential Probability Ratio Test)는 단순하지만, 효과 크기 를 미리 정해야 한다는 한계가 있습니다. 마케팅에서는 효과 크기를 미리 모르는 경우가 흔합니다.
mSPRT(mixture SPRT)는 이 한계를 풉니다. 효과 크기 위에 사전 분포 를 깔고, likelihood ratio를 그 분포로 평균낸 것을 사용합니다.
이 변형의 운영적 장점은 단순합니다.
- 효과 크기를 미리 정하지 않아도 됨
- 어떤 효과 크기라도 균일하게 검출 가능
- 같은 data로 always-valid 신뢰구간을 함께 만들 수 있음
Optimizely·VWO·Statsig 같은 실험 플랫폼이 mSPRT 또는 그 변형을 디폴트로 깔고 있는 이유입니다. 마케터가 직접 구현할 일은 거의 없고, 어떤 도구를 쓰든 "always-valid"라고 적혀 있으면 mSPRT 계열이라고 봐도 무방합니다.
4. always-valid 신뢰구간 — 멈춰도 표시되어도 그대로
p-value보다 더 운영적으로 가치있는 건 always-valid 신뢰구간입니다. 어느 시점에 들여다봐도 95% 신뢰구간이 효과의 진짜 값을 포함할 확률이 95% 이상으로 보증됩니다.
마케팅 운영에서 신뢰구간이 더 가치있는 이유는 다음과 같습니다.
- p-value는 "효과 0이냐 아니냐"의 이진 답만 줌
- 신뢰구간은 "얼마나 효과가 있는가"의 분포까지 보여줌
- 비대칭 손실 환경에서는 점추정·하한이 의사결정의 단위가 됨 (예: 광고 단가 한도)
| 비교 | 고전 t-검정 신뢰구간 | always-valid 신뢰구간 |
|---|---|---|
| 사전 표본 크기 | 미리 정해야 함 | 필요 없음 |
| 어느 시점 검사 | 깨짐 | 보증 유지 |
| 운영 적합성 | 사후 보고용 | 운영 중 모니터링용 |
| 같은 시점·같은 데이터 비교 | 더 좁음 | 살짝 더 넓음 |
always-valid 구간은 같은 데이터에서 고전 구간보다 살짝 넓습니다. 그게 "어느 시점에 봐도 보증" 의 비용입니다. 운영 환경에서는 이 비용을 감수할 가치가 충분합니다.
5. 코드는 한 줄 — Statsig·Optimizely 디폴트로 충분
마케터가 sequential testing을 직접 구현할 일은 드뭅니다. 운영 플랫폼이 이미 디폴트로 깔아두기 때문입니다. 그래도 직접 한 줄 보고 싶다면 다음이 가장 간결합니다.
from confseq.boundaries import bernoulli_confidence_interval
# n=현재 표본수, x=현재 전환수, alpha=거짓양성률
ci_lower, ci_upper = bernoulli_confidence_interval(x, n, alpha=0.05)
confseq 패키지(Howard et al. 2021)는 always-valid 신뢰구간을 분포별로 제공합니다. 매일 호출해서 처리·대조군의 차이가 0을 포함하지 않으면 멈춤 — 이게 운영 룰의 전부입니다.
💡 대시보드에 바로 박는 자리
실험 대시보드에 always-valid 신뢰구간을 한 줄 더 그리면 운영자가 매일 들여다봐도 통계적으로 안전합니다. 단순한 효과 크기 + ±하한·상한 두 줄만 추가하면 됩니다. peeking 함정을 통계적으로 막는 가장 단순한 운영 패치입니다.
6. 마케팅 실무 케이스 3개
6-1. 신규 광고 소재 A/B — 첫째 주에 멈춰야 할 때
신규 소재 두 안을 2주 계획으로 켰는데 첫째 주에 always-valid 95% 신뢰구간 하한이 0을 넘었습니다. 고전 검정으로는 "표본 부족, 계속"이지만 sequential 프레임에서는 "효과 보증 — 멈춤" 이 정당합니다. 비싼 소재에 예산을 빨리 태우거나 손실이 나는 안을 빨리 끊는 결정이 통계적으로 안전해집니다.
6-2. 가드레일 메트릭 — 매출은 좋은데 리텐션은?
A/B의 핵심 메트릭(매출)은 효과가 있는데 가드레일 메트릭(7일 리텐션)이 흔들립니다. 고전 검정으로는 가드레일을 매일 들여다보지 못하니 사후 검증으로 미루는 게 보통입니다. always-valid 신뢰구간을 가드레일에도 깔면, 매일 모니터링하면서 가드레일이 깨지는 시점에 자동 멈춤이 가능합니다.
6-3. 캠페인 KPI 모니터링 — 멈춤이 아니라 "조기 알람"
sequential testing의 운영 가치는 "멈춤"보다 조기 알람에 있습니다. 매일 always-valid 95% 신뢰구간을 그려두면, 효과가 진짜 있는 안은 빠른 시점에 신뢰구간이 0에서 멀어집니다. 의사결정자에게 "지금까지 본 데이터로 X% 신뢰구간은 [a, b]"를 매일 알릴 수 있고, 같은 결과를 더 빨리 보고할 수 있습니다.
{/* TODO_HUNY: huny가 운영 중인 실험·대시보드에서 sequential testing 도입이 가장 효과 있을 자리 한 가지 추가해주세요. 신규 소재 A/B·가드레일·예산 결정 중 어느 쪽인지. */}
7. Sequential testing이 깨질 때 — 흔한 함정 3가지
7-1. mSPRT의 사전 분포가 운영 메트릭과 안 맞는다
mSPRT는 효과 크기 위에 사전 분포를 깝니다. 디폴트 사전이 "효과 ±5% 안에 95% 확률"인데 실제 운영 메트릭의 효과는 ±20% 정도라면 검출력이 떨어질 수 있습니다. 플랫폼 디폴트를 그대로 쓰지 말고, 한 번은 자기 메트릭에 맞춰 검토하는 게 좋습니다.
7-2. SRM·표본 비율 불균형이 같이 발생
50:50으로 배정했는데 실제로는 49:51이 되는 SRM(Sample Ratio Mismatch)이 있으면 sequential 결과도 흔들립니다. 매일 SRM 점검(chi-square 검정)을 같이 돌려야 합니다. huny.log의 A/B 함정 5가지 글이 SRM 다룹니다.
7-3. novelty effect — 첫 주만 좋아 보이는 안
신규 UI·새 카피는 첫 주에 호기심으로 효과가 부풀고 둘째 주부터 줄어드는 경우가 흔합니다. sequential testing이 첫 주에 "유의" 신호를 줘도, novelty effect가 의심되면 최소 1주는 더 운영해서 효과가 안정화되는지 보는 게 안전합니다.
⚠️ 멈춤 결정과 운영 결정은 다르다
sequential testing이 통계적으로 멈춰도 된다고 알려주지만, 운영적으로 멈춰도 되는지는 다른 문제입니다. novelty·시즌·피크 시간대 효과가 의심되면 통계 결과만으로 결정하지 말고, 실험 기간을 도메인 사이클에 맞춰 최소 보장 기간을 설정하세요.
8. 마치며 — "매일 들여다봐도 되는" 운영 환경
sequential testing이 마케팅에 주는 가장 큰 변화는 통계적 정확도가 아니라 운영의 솔직함입니다.
"매뉴얼은 보지 말라고 하는데 우리는 매일 본다"의 모순을 푼다.
고전 검정이 깐 가정(고정 표본 크기·한 번만 본다)은 운영 현실과 어긋났고, 그 어긋남이 peeking 함정의 진짜 원인이었습니다. sequential 프레임은 그 가정을 풀어 운영 행동을 통계적으로 안전하게 만듭니다.
다음 글에서는 마케팅 어트리뷰션의 또 다른 표준, 게임이론에서 빌려온 Shapley value를 다룹니다. 채널 기여도를 공정하게 나누는 방법론입니다.
참고
- Wald (1945), Sequential Tests of Statistical Hypotheses, Annals of Mathematical Statistics — SPRT 원전
- Howard, Ramdas, McAuliffe & Sekhon (2021), Time-uniform, nonparametric, nonasymptotic confidence sequences, Annals of Statistics — always-valid 신뢰구간 표준 레퍼런스
- Johari, Pekelis, Walsh (2017), Always Valid Inference: Bringing Sequential Analysis to A/B Testing — Optimizely 그룹의 mSPRT 적용 논문
- Statsig — Sequential testing 공식 문서 — 운영 플랫폼의 표준 적용
- confseq (Python 패키지) — always-valid 신뢰구간 구현체
- huny.log 내부 글: A/B 테스트 함정 5가지, CUPED, Conformal Prediction

Top comments (0)