표본 비율 불일치

Sample Ratio Mismatch

개념

반반으로 나누기로 하고 실험을 돌렸는데 실제로 집계된 인원 비율이 그 의도와 어긋난 상태로, 배정이나 집계가 망가졌다는 신호입니다.

등장 배경

실험 결과를 믿는 근거는 하나입니다. 비교하는 두 무리가 바꾼 것 말고는 평균적으로 닮았다는 것입니다. 두 안을 나란히 놓고 겨루는 A/B 테스트에서 그 닮음은 무작위 배정이 만듭니다. 동전 던지기에 가까운 방식으로 갈라 놓으면 두 무리에 신규와 기존, 모바일과 데스크톱이 비슷하게 섞입니다.

문제는 그 배정이 조용히 고장난다는 점입니다. 새 화면이 특정 브라우저에서 아예 뜨지 않으면, 그 브라우저를 쓰는 사람들은 새 화면 쪽에 배정됐는데도 기록을 남기지 못하고 사라집니다. 결과 표에 남은 새 화면 무리는 그 브라우저를 쓰지 않는 사람들뿐이니 이미 닮은 두 무리가 아닙니다.

예전에는 이런 실험도 그대로 판정했습니다. 결과 화면에 전환율 두 개와 승패만 떠 있으니 두 무리에 몇 명이 들어왔는지는 아무도 보지 않았고, 문제가 있던 브라우저 사용자들이 빠진 자리를 새 화면의 효과로 읽었습니다.

표본 비율 불일치는 그 사고를 판정 전에 잡으려고 보는 신호입니다. 인원 비율이 의도와 맞는지부터 확인하고, 어긋나 있으면 결과를 읽지 않습니다.

작동 방식

검사는 한 문장입니다. 의도한 비율과 실제 집계된 인원 비율을 견주어 그 차이가 우연으로 설명되는지 봅니다.

어려운 지점은 어디까지가 우연인지입니다. 무작위로 갈라도 정확히 반반이 되지 않아 늘 조금은 어긋나니, 어긋난 정도를 표본 크기와 함께 봅니다. 1,000명 실험에서 520대 480은 흔한 흔들림입니다. 20만 명 실험에서 101,000대 99,000은 같은 0.5퍼센트포인트 차이지만 우연으로는 거의 안 나오는 값입니다.

판정은 p값, 즉 우연만으로 이 정도 차이가 나올 확률로 합니다. 기대 비율과 실제 인원을 넣어 계산해 값이 아주 작으면 배정이 망가졌다고 봅니다. 기준은 실험 결과를 판정할 때보다 훨씬 엄격해서 0.001 아래를 쓰는 경우가 많습니다. 경고가 뜰 때마다 실험을 버리게 되니 멀쩡한 실험을 자주 버리지 않으려는 것입니다.

어긋나는 원인은 대개 다섯 가지입니다.

  1. 배정 장치 자체의 오류 — 같은 사용자가 방문마다 다른 무리로 들어가거나, 캐시가 한쪽 화면을 더 많이 내주는 경우입니다.
  2. 한쪽의 기록 누락 — 앞에서 본 브라우저 사례가 여기입니다. 배정은 제대로 됐지만 이벤트 수집, 즉 사용자 행동을 기록으로 남기는 단계에서 한쪽이 덜 남습니다.
  3. 배정 뒤의 걸러내기 — 배정은 전체에 했는데 집계에서 로그인 사용자만 남기면, 두 무리의 로그인 비율이 다를 때 인원이 어긋납니다.
  4. 사람이 아닌 방문 — 검색 로봇이나 자동 점검 도구가 한쪽에 몰려 들어오는 경우입니다.
  5. 도는 중에 규칙을 바꾼 것 — 중간에 비율을 50대 50에서 30대 70으로 바꾸면 전체 집계는 어느 쪽과도 맞지 않습니다.

대조군과 실험군, 즉 그대로 둔 무리와 바꾼 것을 본 무리 중 어느 쪽이 적은지는 원인을 좁혀 줍니다. 바꾼 쪽만 적으면 새 화면에서 뭔가 실패한다는 뜻이고, 양쪽이 다 이상하면 배정 장치를 먼저 봅니다.

쓰이는 곳

이 검사는 네 자리에 붙습니다.

  1. 실험 도구의 자동 경고 — 결과 화면에 경고를 띄우고 승패 판정을 잠가 두는 도구가 많습니다. 사람이 따로 챙기지 않아도 걸리게 만드는 장치입니다.
  2. 판정 회의의 첫 항목 — 전환율을 보기 전에 인원 비율을 먼저 읽습니다. 순서를 뒤집으면 이미 본 결과가 아까워져 어긋난 비율을 두고도 해석해 보자는 이야기가 나옵니다.
  3. 배포 설정 점검 — 피처 플래그, 즉 코드를 배포한 채 기능만 켜고 끄는 스위치를 잘못 걸어 두면 비율이 어긋납니다. 경고가 뜨면 플래그 설정을 먼저 확인합니다.
  4. 수집 파이프라인 점검 — 실험 밖에서도 쓸 수 있는 신호입니다. 한쪽 기록이 덜 남는다는 것은 그 화면의 수집 코드가 깨졌다는 뜻이라, 실험을 접은 뒤에도 고칠 일이 남습니다.

실험을 버렸다면 그 사실을 실험 기록에 남깁니다. 적을 결과가 없어 보이지만 같은 원인이 다음 실험에서 또 나옵니다.

실무 용례

"비율이 51대 49로 나왔어요. 결과 보기 전에 배정부터 확인합시다."

인원이 어긋났으니 전환율 해석을 보류하자는 말입니다.

"이 실험은 표본 비율 불일치가 걸려서 버리고 원인 고친 다음 다시 돌립니다."

결과를 살려 쓰지 않고 처음부터 다시 한다는 뜻입니다.

"표본이 1,200명밖에 안 되니 52대 48은 정상 범위예요."

같은 비율 차이도 표본이 작으면 우연으로 설명된다는 지적입니다.

페이지덱은 지난 분기에 문서 템플릿 추천을 실험했습니다. 지현이 2주 뒤 결과를 열었을 때 대조군 128,000명, 실험군 120,000명이었습니다. 6퍼센트 차이라 눈에 띄었고 전환율은 실험군이 앞섰습니다.

태오가 원인을 찾는 데 하루가 걸렸습니다. 추천 목록을 불러오는 요청이 느린 회선에서 자주 실패했고, 실패한 사용자는 화면을 닫아 기록이 남지 않았습니다. 느린 회선 사용자만 실험군에서 빠진 셈이라, 실험군이 앞선 것은 원래 전환이 낮은 사람들이 사라졌기 때문일 수 있었습니다. 실험은 버렸고, 고친 뒤 다시 돌린 결과는 차이가 없었습니다.

흔한 오해

조금 어긋난 것은 계산으로 보정하면 된다고 여기는 경우가 가장 많습니다. 비율이 알려져 있으니 적은 쪽에 가중치를 주면 될 것처럼 보입니다. 하지만 보정하려면 누가 빠졌는지를 알아야 하고, 그것을 알면 애초에 문제를 고칠 수 있습니다. 빠진 사람들은 느린 회선이나 오래된 앱 버전처럼 전환율이 원래 낮은 조건을 공유합니다. 그 무리를 지운 채 평균을 견주면 바꾼 것의 효과와 빠진 사람들의 효과가 섞이고, 그 상태로 승리를 선언하면 전체에 내보낸 뒤 지표가 오르지 않습니다.

비율이 맞으면 실험이 건강하다고 읽는 것도 어긋납니다. 이 검사는 배정과 집계가 망가졌는지만 봅니다. 두 무리의 인원이 정확히 반반이어도 조기 확인 문제, 즉 중간 결과가 앞서는 순간에 멈춰 판정하는 오류는 그대로 남습니다. 비율 확인은 결과를 읽어도 되는지 판단하는 첫 관문일 뿐입니다.

같이 보면 좋은 페이지

  • 실험

    이 신호가 실험의 어느 단계에서 걸리는지 전체 흐름에서 먼저 봅니다

  • 신기 효과

    설계를 마친 실험을 망치는 다른 함정을 자세히 봅니다

마지막 업데이트 2026-09-16