열 번 중 두 번 성공한 결과와 백 번 중 스무 번 성공한 결과는 모두 20%입니다. 그렇다고 두 자료가 같은 정도로 안정적인 판단 근거가 되는 것은 아닙니다. 작은 표본에서는 한 건이 비율을 크게 움직입니다. 성공률 옆에 불확실성을 표시하려면 분자·분모와 계산 가정을 먼저 정해야 합니다. 이 글은 가상 성공 횟수에 Wilson 점수 구간을 적용해 두 20%의 차이, 성공이 한 번도 없을 때의 해석, 잘못된 분모를 거부하는 절차를 확인합니다. 실제 캠페인이나 AI 모델의 성능을 시험한 결과는 아닙니다.

20%라는 셀을 성공 횟수와 시행 수로 되돌립니다.

첫 입력은 성공 2, 시행 10이고 두 번째는 성공 20, 시행 100입니다. 두 성공률은 0.2로 같습니다. 하지만 첫 자료에서는 성공 한 건이 늘면 30%, 둘째에서는 한 건이 늘어도 21%입니다. 관측값을 퍼센트로만 저장하면 이런 차이를 다시 확인하기 어렵습니다. 집계 파일에는 successes와 trials를 따로 남기고 rate는 그 값에서 계산합니다. 숫자 표시를 소수 몇 자리까지 늘린다고 관측 정보가 더 생기지는 않습니다.

시행의 단위도 정해야 합니다. 같은 사람이 같은 작업을 열 번 반복한 기록과 서로 다른 사람이 한 번씩 수행한 기록은 의존 구조가 다를 수 있습니다. 오류 요청을 분모에서 뺐다면 제외 수를 옆에 적습니다. 이 예제는 각 시행의 결과가 성공·실패 둘 중 하나이며 같은 성공 확률을 갖는 독립 베르누이 관측이라는 모델을 사용합니다. 재시도와 군집 효과가 있는 실제 기록에 그 가정을 확인하지 않고 수식을 붙이면 구간이 그럴듯해 보여도 해석은 잘못될 수 있습니다.

Wilson 구간은 관측 비율 주변의 대칭 띠가 아닙니다.

코드는 양측 명목 95% 구간을 위해 정규분포 분위수 z=1.959963984540054를 사용합니다. p=k/n에 대해 분모 d=1+z²/n, 중심 c=(p+z²/(2n))/d를 구하고, 반폭 h=z×sqrt(p(1−p)/n+z²/(4n²))/d를 더하고 뺍니다. 계산의 출발은 관측 성공률이지만 중심은 일반적으로 p와 다릅니다. 단순히 20%에서 같은 숫자를 빼고 더하는 방법과 구분해야 합니다.

이 방식은 점수 검정을 뒤집어 얻는 구간이며 모든 상황의 유일한 선택은 아닙니다. 작은 표본에 정규 근사 p±1.96×표준오차를 바로 적용했을 때 생길 수 있는 경계 문제를 피하는 데 자주 쓰이지만, 모형이 틀리거나 표본이 편향됐다면 계산 방식 하나로 해결되지 않습니다. 다운로드에는 수식을 그대로 구현해 외부 패키지 없이 검산할 수 있게 했습니다. 정식 분석에서는 구간 방식, 유의수준, 단측·양측 여부를 사전에 정하고 다른 도구와 같은 설정에서 비교합니다.

두 구간을 읽을 때는 범위와 정밀도를 함께 표시합니다.

2/10의 Wilson 구간은 약 5.6682%~50.9838%, 20/100은 약 13.3367%~28.8829%입니다. 표시 비율은 둘 다 20%지만 첫 구간이 훨씬 넓습니다. 관측한 분자·분모 외에 정보를 추가하지 않고 계산한 결과입니다. 넓은 구간을 감추려고 “대략 20%로 확인됐다”고만 쓰면 표본 규모의 차이가 독자에게 전달되지 않습니다. 원시 횟수, 점추정, 방법과 구간을 같은 줄에서 읽을 수 있게 합니다.

이 수치를 “참 성공률이 이 구간에 있을 확률이 95%”라고 그대로 바꾸지 않습니다. 빈도주의 구간의 명목 수준은 같은 조건에서 표본추출과 구간 계산을 반복하는 절차의 성질을 말합니다. Wilson 방식도 유한 표본에서 실제 포함률이 모든 p에 정확히 95%라는 뜻은 아닙니다. 독자에게는 선택한 모형 아래 자료의 불확실성을 요약한 구간이라고 설명하면 충분합니다. 소수 넷째 자리까지 쓴 것은 독립 계산과 대조하기 위해서이며, 실제 성공률을 그 정밀도로 안다는 주장은 아닙니다.

성공/시행관측 비율Wilson 하한 %Wilson 상한 %
2/1020%5.668250.9838
20/10020%13.336728.8829
0/100%027.7533
10/10100%72.2467100(반올림)

표의 10/10 상한은 소수 계산에서 0.9999999999999999로 저장되지만 퍼센트 표시에서 100으로 반올림했습니다. JSON의 원시 값과 표시 정밀도를 구분하면 경계의 작은 수치 오차를 실제 확률 차이로 오해하지 않을 수 있습니다.

0/10과 10/10도 불확실성을 없애지 않습니다.

성공 0, 시행 10을 넣으면 관측 비율은 0%지만 Wilson 상한은 약 27.7533%입니다. 열 번 모두 성공한 10/10의 하한은 약 72.2467%입니다. 아무 성공을 못 봤다는 관측은 불가능을 증명하지 않고, 실패를 못 봤다는 관측도 항상 성공을 보장하지 않습니다. 코드의 경계 사례는 이 구간이 0 또는 1 한 점으로 붕괴하지 않는지 확인합니다.

p(1−p)가 경계에서 0이 된다는 이유로 오차도 0이라고 처리하는 단순 정규 근사는 이런 상황에서 특히 조심해야 합니다. 그러나 경계 결과를 크게 보이게 하려고 구간 상한을 예상 성과로 인용하는 것도 잘못입니다. 0/10의 자료에서 “성공률 27%까지 가능”을 판매 문구처럼 앞세울 근거는 없습니다. 관측 결과는 0/10이며 구간은 불확실성 설명입니다. 의사결정 임계값이 있다면 그 값을 먼저 정하고 추가 관측이 필요한지 검토합니다.

단순 Wald 구간도 비교용으로 실제 실행했습니다. 2/10에서 p±z×sqrt(p(1−p)/n)을 계산하면 약 −4.7918%~44.7918%로 아래 끝이 가능한 비율 0% 밖으로 나갑니다. 0/10에서는 0%~0%, 10/10에서는 100%~100%가 됩니다. 코드의 waldUnclippedContrast에 이 세 값을 그대로 남겼습니다. 이를 화면에서 0~100으로 잘라 보이게 하는 처리만으로 경계에서 잃은 불확실성 설명이 복구되지는 않습니다.

이 반례가 모든 상황에서 Wald를 금지하거나 Wilson을 항상 최적으로 고르라는 뜻은 아닙니다. 관측 조건과 표본 규모를 보고 분석 방식을 정하되, 실제 계산한 경계 사례가 어떻게 생기는지 확인하자는 목적입니다. 어떤 패키지와 대조하든 자동 clipping 유무까지 맞춰야 합니다. 그래프의 축이 0~100으로 잘려 있으면 범위를 벗어난 원시 구간이 보이지 않을 수도 있으므로 표시와 계산을 따로 확인하세요.

분모가 없거나 성공 수가 더 크면 계산하지 않습니다.

코드는 n≤0, k<0, k>n인 입력을 거부합니다. 실제 검증 입력은 0/0, 11/10, −1/10입니다. 모두 ValueError가 발생하는 것을 확인했습니다. 분모가 없는 상태를 0%로 채우거나, 성공 수를 임의로 n까지 잘라 정상 비율로 만드는 처리는 하지 않습니다. 데이터가 잘못 들어온 것인지 서로 다른 집계 단위를 섞은 것인지 원시 기록으로 돌아가야 합니다.

같은 이유로 반올림된 퍼센트와 화면의 총 건수에서 성공 수를 역산해 분석하지 않는 편이 좋습니다. 표시 20%가 실제로는 19.6%를 반올림한 값일 수 있고, 분모가 세션인지 사용자인지 다를 수도 있습니다. 비율을 평균한 뒤 가상의 성공 수를 만들어 넣는 것도 독립 시행 횟수를 복원하지 못합니다. 이 글의 실행 코드는 고정한 정수 횟수만 다룹니다. 실무 입력기를 만들 때는 정수형 여부와 누락·중복·기간 필터까지 검사해야 하며 그것은 수식과 별도의 단계입니다.

구간이 겹친다는 사실로 A와 B의 결론을 대신하지 않습니다.

두 구간이 겹치면 차이가 없고 안 겹치면 차이가 있다는 식의 단순 규칙은 이 글의 계산에서 제공하지 않습니다. 두 비율의 차이를 평가하려면 비교 설계, 표본의 독립성, 필요한 검정이나 차이에 대한 구간을 따로 정해야 합니다. 같은 사람이 두 조건을 사용했다면 대응 구조가 있고, 여러 지표 중 좋은 것만 골랐다면 선택 문제가 있습니다. 각 조건의 구간을 그려 둔 것만으로 이런 부분이 처리되지는 않습니다.

반복해서 화면을 보다가 비율이 좋아진 순간 멈추는 방식도 고정 표본 분석과 다릅니다. 언제 관측을 끝낼지, 무엇을 성공으로 볼지, 어떤 조건을 비교할지 미리 정해야 해석이 덜 흔들립니다. 이 자료는 그런 실험을 수행한 것이 아니라 한 번 주어진 횟수로 Wilson 구간을 계산했습니다. 사용자 성과·광고 전환·도구 신뢰도에 같은 수치를 복사하지 마세요. 작업의 실패 비용과 필요한 정밀도에 맞는 설계가 먼저입니다.

보고서를 고칠 때는 단정 대신 관측과 가정을 남깁니다.

“도구 정확도는 20%”라는 초안을 “가상 이항 입력 10회 중 성공 2회, 관측 비율 20%, Wilson 양측 명목 95% 구간 약 5.67%~50.98%”로 고칩니다. 실제 도구를 실행하지 않았다면 도구 이름과 정확도라는 표현도 빼야 합니다. 이 글에서는 수식 실행 결과만 있습니다. 알고리즘의 성공 정의가 업무의 정답과 같은지도 따로 증명하지 않았습니다.

기록표에는 과업, 성공 판정 기준, 시행 단위, 표본 선택 경로, 성공·실패·제외 건수와 계산 방식을 둡니다. 판정 기준이 바뀌면 이전 기록을 같은 비율로 계속 연결하지 않고 기준 변경을 표시합니다. 실패를 모른다는 이유로 제외하지 말고 미확인 상태와 확인된 실패를 구분하세요. 자료 수가 많아도 편향된 입력만 모았다면 원하는 모집단을 설명하지 못합니다. 더 많은 관측이 계산 구간을 좁히는 것과 관측 설계가 타당해지는 것은 별개의 문제입니다.

다시 실행할 때는 숫자 일치와 해석 일치를 나눕니다.

공개 코드는 네 개의 경계·일반 예제를 계산하고 세 개의 잘못된 횟수를 거부합니다. JSON에 들어 있는 low와 high는 비율 단위이므로 퍼센트로 표시할 때 100을 곱합니다. 0.056682를 그대로 0.056682%라고 쓰는 단위 오류부터 확인하세요. 다른 패키지를 이용한다면 method=wilson, 양측 95%와 같은 조건을 맞춘 뒤 원시 값의 허용 오차를 정해 비교하면 됩니다.

다음 작업은 보고서의 비율 하나를 원시 횟수까지 추적하는 것입니다. 분자·분모를 확인할 수 없다면 이 코드를 돌리는 것보다 수집 경로를 정리하는 일이 먼저입니다. 조건별 방문 구성 차이는 전환율 합산 글에서, 주장과 증거의 범위를 나누는 방법은 증거 단계 글에서 이어 볼 수 있습니다. 작은 표본이라는 한계를 한 줄의 면책에만 숨기지 않고, 독자가 비교하는 바로 그 표에 함께 적어 두는 것이 이 계산을 실제 검수에 쓰는 출발점입니다.

입력과 판정을 다시 확인하려면

이 글의 가상 입력과 코드는 2026년 10월 15일 로컬 Python 3에서 실행했습니다. 글의 발행일과 실행일은 다릅니다. 별도 설치 패키지 없이 Python 표준 라이브러리로 실행할 수 있습니다.

터미널에서 python3 small-sample-rate-intervals-20261015.py를 실행하면 JSON을 출력합니다. 사용자 자료나 비밀번호는 필요하지 않습니다. 입력과 실행 환경은 결과 JSON에 함께 남겼습니다.

계산 기준을 확인한 원문과 다음 작업

공식 원문은 2026-10-15에 확인했습니다. 문서가 설명하는 API·정의와 이 글의 가상 계산 결과는 구분해서 읽어 주세요.

함께 보면 좋은 글: 분모와 전환율 합산, 주장의 증거 단계.