huny.log

기술 포스트 · 통계·ML

Sequential testing — A/B 결과를 매일 들여다봐도 되는 통계 프레임

A/B 결과를 매일 보고 싶은 욕구는 본능에 가깝습니다. 그런데 매일 p-value 보고 멈추면 거짓 양성이 5%가 아니라 30%까지 부풀어요. Sequential testing은 "들여다봐도 되는" 통계 프레임을 만들어 줍니다. mSPRT·always-valid p-value의 직관과 마케팅 적용.

“이번 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%까지 올라갑니다.

운영적으로 이 함정의 결과는 다음과 같습니다.

  • 사실은 효과가 없는 안을 효과 있다고 결론 — 잘못된 캠페인 확장
  • 운 좋은 첫 주 결과로 멈춤 — 그 다음 주에 다시 흔들림
  • “지난번 실험은 분명 유의했는데”가 반복 — 팀 전체가 통계에 회의적
peeking이 거짓양성을 부풀리는 vs Sequential testing의 always-valid 보증 다이어그램
고전 p-value는 '한 번만 본다'는 가정 위에 있다. Sequential testing은 어느 시점에 들여다봐도 거짓양성 보증이 그대로 유지되도록 설계된다.

2. Sequential testing의 한 줄 약속

Sequential testing은 한 줄짜리 약속입니다.

어느 시점에 멈추든, 거짓양성 보증이 그대로 유지된다.

이 약속이 있으면 매일 보든 매주 보든 처음에 정한 거짓양성률(보통 5%)이 깨지지 않습니다. 멈춤 규칙을 미리 정할 필요도 없고, 표본 크기를 미리 잡지 않아도 됩니다. always-valid라는 표현이 이 성질을 가리킵니다.

핵심 도구는 likelihood ratio입니다. 매 시점 누적 데이터에서 다음 비를 계산합니다.

이 비가 미리 정한 임계 를 넘으면 멈추고 효과 있다고 결론, 그렇지 않으면 계속. 핵심 정리는 Wald(1945)가 증명했습니다 — 이 룰은 어느 시점에 멈춰도 type I error가 이하입니다.

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을 포함하지 않으면 멈춤 — 이게 운영 룰의 전부입니다.

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]“를 매일 알릴 수 있고, 같은 결과를 더 빨리 보고할 수 있습니다.

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주는 더 운영해서 효과가 안정화되는지 보는 게 안전합니다.

8. 마치며 — “매일 들여다봐도 되는” 운영 환경

sequential testing이 마케팅에 주는 가장 큰 변화는 통계적 정확도가 아니라 운영의 솔직함입니다.

“매뉴얼은 보지 말라고 하는데 우리는 매일 본다”의 모순을 푼다.

고전 검정이 깐 가정(고정 표본 크기·한 번만 본다)은 운영 현실과 어긋났고, 그 어긋남이 peeking 함정의 진짜 원인이었습니다. sequential 프레임은 그 가정을 풀어 운영 행동을 통계적으로 안전하게 만듭니다.

다음 글에서는 마케팅 어트리뷰션의 또 다른 표준, 게임이론에서 빌려온 Shapley value를 다룹니다. 채널 기여도를 공정하게 나누는 방법론입니다.

참고

통계·ML 카테고리의 다른 글

전체 보기 →