Menu

A/B 테스트 엿보기 시뮬레이터

A와 B가 똑같은 페이지인 테스트 2천 건을 당신의 트래픽으로 돌립니다. 매일 엿보는 사람이 그중 몇 건을 승자라고 불렀을지, 그리고 종료일까지 기다린 사람은 같은 테스트에 몇 번이나 속았을지 확인해 보세요.

작성자 Nethanel Bar, Co-founder & CEO

마지막 업데이트

진짜로 코딩을 배워볼까요?

Coddy는 브라우저에서 실제 코드를 작성하며 배웁니다. 인터랙티브 레슨, 즉각적인 피드백, 막힐 때 도와주는 AI까지.

A/B 테스트에서 가장 비싼 습관을, 당신의 숫자로 시뮬레이션합니다

이런 습관이 있습니다. 테스트를 시작하고 매일 아침 대시보드를 엽니다. 막대가 슬금슬금 오르다 내려가고 다시 오르다가, 어느 화요일에 95%를 넘습니다. 그 순간 결론을 내고 승자를 배포하고 넘어갑니다. 문제는 p값이 떠돈다는 것입니다. 두 변형이 완전히 같은 테스트에서도 p값은 어떤 날에는 우연히 0.05를 넘나듭니다. 나중에 다시 돌아올 뿐이죠. 처음 넘는 순간 멈춘다는 것은 지나가는 길목에서 붙잡는다는 뜻이고, 가졌다고 믿었던 신뢰수준은 사라집니다.

효과의 크기가 사람들을 놀라게 합니다. 신뢰도 95%에서 마지막에 한 번 읽는 테스트는 스무 번에 한 번쯤 당신을 속이는데, 그게 당신이 맺은 계약입니다. 같은 테스트를 4주 동안 매일 읽고 초록불이 처음 켜진 날 멈추면, 시뮬레이터는 보통 아무 변화도 없는 테스트의 4분의 1 이상에서 거짓 승자를 보여줍니다. Evan Miller의 원래 글은 매일 엿보는 사람의 경우를 20% 이상으로 잡았고, Optimizely는 고객들의 거짓양성률이 그 수준을 넘어가자 2015년에 통계 엔진을 다시 만들었습니다. 매일 대신 매주 확인하면 피해가 대략 절반으로 줄지만 사라지지는 않습니다.

여기 시뮬레이션은 자기가 무엇인지 솔직합니다: 각 테스트는 두 그룹 모두 진짜 전환율로 전환을 뽑고, 확인할 때마다 그때까지 모인 전체 데이터에 평범한 두 비율 z 검정을 돌리며, 엿보는 사람이 멈췄을 지점을 기록합니다. 차트의 모든 선이 하나의 테스트이고, 모든 점이 누군가 결과를 발표했을 아침입니다. 실제 향상률을 +10%로 설정하면 이야기의 나머지 절반이 보입니다. 엿보는 사람이 진짜 효과를 일찍 잡아내되 향상률을 부풀려 보고하고, 효과가 0이었어도 똑같이 신나게 '승리'를 선언했을 모습이죠.

시뮬레이션이 보여주는 것

  • p값은 무작위 행보입니다. 귀무가설 아래에서 어느 한 시점의 p값은 균등분포를 따르고, 이는 아무 아침에나 0.05 아래에 있을 확률이 5%라는 뜻입니다. 스물여덟 번의 아침이면 그 확률들이 쌓입니다.
  • 거짓양성률은 테스트가 얼마나 오래 도는지가 아니라 몇 번 들여다보는지에 달려 있습니다. 매주 읽는 4주 테스트가 매일 읽는 2주 테스트보다 덜 속습니다.
  • 일찍 멈추면 향상률이 과장됩니다. 엿보는 사람이 운 좋은 날에 멈추면, 그날 관측된 향상률은 정의상 유난히 큽니다. 출시 후 '희미해진' 승자들은 대개 이런 경우였습니다.
  • 해법은 규율이거나 다른 검정입니다. 규율: 표본 크기와 종료일을 미리 고정하고 한 번만 읽는 것. 다른 검정: Optimizely, Statsig, Eppo가 쓰는 상시 유효 p값 같은 순차적 방법은 계속 들여다봐도 되도록 설계되었고 그 대가를 표본 크기로 치릅니다.
  • 베이지안 대시보드도 예외가 아닙니다. 매일 확인하고 임계값에서 행동에 옮기는 '최고일 확률'은 옷만 갈아입은 똑같은 문제입니다.

시뮬레이터 사용법

  1. 전환율과 하루 방문자 수를 입력하세요

    시뮬레이션은 당신의 실제 전환율로 전환을 뽑으므로, p값이 떠도는 모습이 당신이 실제로 보게 될 잡음과 일치합니다.

  2. 계획된 기간과 확인 주기를 설정하세요

    매일, 3일마다, 또는 매주. 엿보는 사람의 비율과 정직한 비율의 격차가 그 습관의 대가입니다.

  3. 실제 향상률은 '없음'으로 두세요

    그러면 모든 테스트가 A/A 테스트가 되어, 어떤 승자든 구조상 거짓 경보입니다. 그다음 +10%나 +30%로 바꿔서 진짜 효과 앞의 엿보기를 확인해 보세요.

  4. 큰 숫자 두 개를 읽으세요

    엿보는 사람의 비율은 매일 확인하는 사람이 승자를 선언한 빈도입니다. 종료일 비율은 당신이 고른 알파에 가까워야 합니다. 그렇다면 정직한 테스트는 약속대로 작동하고 있는 것입니다.

  5. 다시 돌려보세요

    실행할 때마다 새로운 무작위 테스트를 뽑습니다. 비율은 조금씩 움직이지만 격차는 그대로입니다.

A/A 테스트에서 나타나는 전형적인 거짓양성률

신뢰도 95%에서 마지막에 한 번 정직하게 읽으면 약 5%의 경우에 속습니다. 아래는 유의해진 첫 시점에 멈추는 사람에 대해 시뮬레이션과 문헌에서 얻은 대략적인 수치입니다.

확인 주기4주간 확인 횟수거짓 승자
마지막에 한 번1약 5%
매주4약 10~13%
3일마다9~10약 15~20%
매일28약 25~30%
12주 동안 매일8435% 이상

세 가지 습관, 시뮬레이션으로

매일 확인하는 사람

전환율 5%, 하루 방문자 1,000명, 28일, 매일 아침 확인. 저희 실행 결과: 엿보는 사람은 A/A 테스트 2,000건 중 약 28%에서 승자를 선언했고, 마지막에 한 번 읽으면 4.5%였습니다.

누군가 매일 지켜봐서 꼼꼼해 보였던 테스트가 거짓 경보율은 여섯 배였습니다. 그 '승자'의 절반은 B를, 절반은 A를 왕좌에 올렸습니다. 찾을 것이 애초에 없었기 때문입니다.

매주 확인하는 사람

같은 트래픽, 같은 기간, 주 1회 확인. 저희 실행 결과: 엿보는 사람은 약 12%, 종료 시점에 읽으면 5%.

스물여덟 번 대신 네 번 보는 것은 큰 도움이 되지만, 그래도 약속된 비율의 두 배가 넘습니다. 약속을 지키는 확인 횟수는 한 번 말고는 없습니다.

진짜 +10% 향상이 있을 때

같은 트래픽에서 B의 실제 향상률을 +10%로 설정해 보세요. 28일짜리 정직한 테스트는 이 트래픽에서 그렇게 작은 향상에 대해 검정력이 제한적이고, 엿보는 사람은 운 좋은 날에 더 자주 일찍 멈춥니다.

이것이 유혹적인 경우입니다: 엿보는 사람이 더 빨리 찾아내는 것처럼 보이니까요. 하지만 멈추는 날은 향상률이 가장 커 보였던 날이라서 배포된 추정치는 부풀려져 있고, 같은 습관이라면 향상률이 0이었어도 '승자'를 찾아냈을 것입니다.

엿보기와 관련된 실수

  • 유의해진 첫 아침에 멈추는 것. 이 페이지 전체가 그 얘기입니다. 신뢰수준은 결과를 한 번만 읽을 때에만 말 그대로의 의미를 갖습니다.
  • '거의 다 왔으니' 테스트를 연장하는 것. 결과가 거의 유의하다는 이유로 더 돌리기로 정하는 것은 거꾸로 된 엿보기이고, 거짓양성률을 똑같이 부풀립니다.
  • '뭔가 망가지지 않았는지만 확인하려고' 매일 들여다보는 것. 버그를 살피는 건 괜찮지만 p값을 살피는 건 아닙니다. 종료일까지는 향상률이 아니라 트래픽 분배와 오류율을 보세요.
  • 베이지안 대시보드면 엿봐도 안전하다고 믿는 것. 매일 확인하는 확률 임계값에 따라 행동하면 똑같은 부풀림이 생깁니다.
  • 멈춘 날의 향상률을 보고하는 것. 꼭 일찍 멈춰야 한다면 구간을 보고하고, 진짜 향상률은 점추정치보다 작을 것이라고 예상하세요.

엿보기 자주 묻는 질문

A/B 테스트의 엿보기 문제란 무엇인가요?
기간이 고정된 테스트를 반복해서 읽고 유의해 보이는 첫 순간에 멈추는 것입니다. 데이터가 들어오는 동안 p값이 요동치므로, 확인할 때마다 운으로 임계값을 넘을 기회가 한 번씩 더 생깁니다. 신뢰도 95%에서 한 달 동안 매일 읽는 테스트는 아무 변화가 없어도 신뢰수준이 약속한 5%가 아니라 대략 4분의 1의 경우에 거짓 승자를 만들어냅니다.
테스트가 끝나기 전에 보는 게 잘못인가요?
보는 건 괜찮고, 문제는 행동에 옮기는 것입니다. 트래픽이 고르게 나뉘는지, 두 변형이 제대로 뜨는지, 전환이 기록되고 있는지는 확인하세요. 향상률이나 신뢰도는 읽지 말고, 본 것 때문에 종료일을 어느 쪽으로든 바꾸지 마세요.
계속 확인하고 싶다면 A/B 테스트를 어떻게 해야 하나요?
순차적 방법을 쓰세요. 상시 유효 p값이나 그룹 순차 설계 같은 방법은 언제든 읽을 수 있도록 설계되었고, 같은 검정력을 위해 더 큰 표본이라는 대가를 치릅니다. 요즘 플랫폼은 대부분 하나쯤 제공합니다. 이 시뮬레이터가 고전적인 고정 기간 검정을 모형화하는 이유는, 이 사이트의 다른 탭을 포함해 대부분의 스프레드시트와 대시보드 계산이 바로 그것이기 때문입니다.
주 1회만 확인해도 엿보기가 문제가 되나요?
덜하지만, 그래도 문제입니다. 4주 동안 네 번 들여다보면 95%에서 보통 거짓양성률이 두 배가 됩니다. 약속된 비율을 지키는 확인 횟수는 한 번뿐입니다.
시뮬레이터는 왜 A/A 테스트를 쓰나요?
두 그룹이 동일하면 모든 승자가 구조상 거짓 경보이므로, 시뮬레이터가 보고하는 비율이 곧 그 습관의 거짓양성률이기 때문입니다. 진짜 향상률을 켜면 반대편이 보입니다. 엿보는 사람이 운 좋은 날에 일찍 멈추고 부풀려진 효과를 보고하는 모습이죠.
베이지안 검정이 엿보기 문제를 해결하나요?
그것만으로는 아닙니다. Georgi Georgiev 등이 보여준 것처럼, 베이지안 확률을 계속 읽으면서 고정된 임계값에서 행동에 옮기면 잘못된 결정이 똑같이 부풀려집니다. 제대로 된 의사결정 규칙과 사전분포를 갖춘 베이지안 방법은 연속 모니터링에서도 잘 작동할 수 있지만, '베이지안'이라는 이름만으로는 해법이 되지 않습니다.

다른 개발자 도구

Coddy 프로그래밍 언어 일러스트

Coddy로 코딩 배우기

시작하기