“요즘 불량이 많아진 것 같은데?” 회의실에서 이 말이 나오면 공기가 무거워진다. 누군가는 체감을 말하고, 누군가는 아니라고 맞선다. 체감 대 체감의 공방은 끝이 없다. 이 논쟁을 끝내는 방법이 비율 검정이다 — 불량률이라는 “전체 중 몇 개”가 정말 변했는지를 데이터로 판정하는 절차다.
앞의 글들이 평균을 다뤘다면, 비율 검정에서는 관심사가 비율로 바뀐다. 그런데 미리 말해두면, 절차는 하나도 안 바뀐다. 가설을 세우고, 기준선을 정하고, 통계량을 계산하고, 분포에서 p값을 읽는다. 바뀌는 것은 통계량의 재료뿐이다. 이 글에서는 불량 개수가 왜 이항분포를 따르는지, 언제 z검정으로 갈 수 있는지(np·nq ≥ 10), 그리고 두 집단 비교까지 4단계로 정리한다.
불량 개수는 동전 던지기다 — 이항분포
제품 하나를 만드는 일은 동전 던지기와 구조가 같다. 결과는 정상 아니면 불량, 딱 두 가지다. 이렇게 결과가 둘뿐인 시행을 n번 반복했을 때 “불량이 몇 개 나오나”를 설명하는 분포가 이항분포다. 불량률이 p라면 n개 중 불량 개수의 평균은 np, 흩어짐(분산)은 npq다(q는 정상률, 1−p). 이 내용이 낯설다면 이산확률분포 글에서 기초를 잡을 수 있다.
우리가 실제로 다루는 값은 표본비율 p̂ = 불량 개수 ÷ n이다. 재미있는 점은, 무엇을 “성공”으로 세느냐에 따라 같은 데이터가 불량률도 되고 합격률도 된다는 것이다. 불량을 세면 불량률, 정상을 세면 합격률 — 동전의 앞뒤를 바꿔 부르는 것뿐이다.
언제 z검정으로 갈 수 있나 — np·nq ≥ 10
이항분포는 계단 모양의 울퉁불퉁한 분포지만, 조건이 맞으면 매끈한 종 모양(정규분포)으로 근사할 수 있다. 그 조건이 np ≥ 10 그리고 nq ≥ 10 — 표본에서 기대되는 불량 개수와 정상 개수가 각각 10개는 넘어야 한다는 뜻이다. 동전을 3번만 던지면 앞면 개수 분포가 들쭉날쭉하지만 1,000번 던지면 종 모양이 되는 것과 같은 원리다.
이 조건을 만족하면 비율 검정에도 평균에서 쓰던 z검정을 그대로 재활용한다. 가설검정 절차의 프레임에서 통계량 재료만 갈아 끼운 것이다.
z = (표본비율 − 기준 비율) ÷ √(기준 비율 × 정상률 ÷ n)
분모는 역시 “표본비율이라는 값 자체의 흔들림”(표준오차)이고, z값의 뜻도 똑같다 — 기준에서 몇 계단 떨어졌나.
비율 검정 4단계 — 예시로 밟아보기
아래 수치는 개념 설명을 위한 임의의 수치입니다.
발주처와 “불량률 2% 이하”로 약속한 제품이 있다. 최근 출하분에 대해 “2%를 넘는 것 아니냐”는 문의가 왔다. 표본 600개를 검사했더니 불량이 9개(표본비율 1.5%)였다.
| 단계 | 내용 | 이 예시에서 |
|---|---|---|
| 1 | 가설 세우기 | 귀무가설 “불량률은 2%다” vs 대립가설 “2%를 넘는다” (단측) |
| 2 | 기준선 정하기 | 유의수준 0.05 |
| 3 | 조건 확인 + 통계량 | np = 600×0.02 = 12 ≥ 10, nq = 588 ≥ 10 ✓ → z = (0.015−0.02) ÷ √(0.02×0.98÷600) ≈ −0.87 |
| 4 | p값 판정 | 단측 p ≈ 0.81 > 0.05 → 귀무가설 유지 |
표본비율이 기준보다 오히려 낮게 나왔으니 z값이 음수다. “불량률이 2%를 넘는다”는 의심을 지지할 근거가 전혀 없다는 결론이고, 이제 회의실에서 체감이 아니라 숫자로 답할 수 있다. 품질 약속(보증) 관련 문의에 이런 식으로 검정 결과를 첨부하면 대화의 수준이 달라진다.
두 집단 비교 — 주머니를 합쳐라
새 라인과 기존 라인의 불량률이 다른지 묻는 두 집단 비율 검정에서는 한 가지 재미있는 아이디어가 추가된다. 귀무가설은 “두 라인의 불량률이 같다”인데, 정말 같다면 두 표본은 사실상 한 주머니에서 나온 셈이다. 그래서 두 표본을 합쳐 공통 불량률(pooled 비율)을 계산하고, 그 값으로 흔들림(표준오차)을 구한다.
예를 들어 새 라인 300개 중 12개, 기존 라인 500개 중 13개가 불량이면, 합쳐서 800개 중 25개 — 공통 불량률 3.125%로 계단 한 칸을 만든 뒤, 두 표본비율의 차이(4.0% − 2.6%)가 몇 계단인지 계산한다. 절차의 나머지는 완전히 같다. 두 평균 비교에서 “차이의 흔들림은 더해진다”던 원리도 그대로 적용된다.
현실의 벽 — 불량률이 아주 작을 때
여기까지가 교과서의 길인데, 현장에는 벽이 하나 있다. 잘 관리되는 공정의 불량률은 보통 아주 작다. 불량률이 0.01% 수준이라면 np ≥ 10을 만족하기 위해 표본이 10만 개 필요하다. 검사 비용을 생각하면 비현실적인 숫자다.
그래서 실무의 비율 검정은 z검정보다, 표본이 작아도 작동하는 분할표 기반의 카이제곱 검정·Fisher 정확검정으로 내려가는 경우가 많다. 분류도에서 “정규근사 조건 불만족” 가지에 해당하며, 다음 글에서 그 길을 다룬다. 조건 확인(3단계의 np·nq 계산)을 건너뛰지 말아야 하는 이유가 이것이다 — 조건이 안 되는데 z검정을 쓰면 판정 자체가 틀어진다.
우리 데이터로 대봤더니 조건에서 먼저 막혔다
이 블로그의 검색 데이터로 비율 검정을 해보려다 앞 절의 조건에서 먼저 막혔다. 2026년 8월 17일 수집 기준 실측값이다.
검정하려던 비율은 클릭률이다. 노출이 분모, 클릭이 분자니 불량률과 구조가 같다. 그런데 글을 하나씩 보면 노출이 발생한 91편 중 np ≥ 10을 만족하는 글이 2편뿐이었다. 전체 클릭률이 약 1.0%라서 노출이 1,000회는 넘어야 조건이 성립하는데, 대부분의 글은 노출이 수십 회다.
이게 앞에서 말한 현실의 벽이다. 비율이 작으면 표본이 웬만큼 쌓여도 z검정 근사가 성립하지 않는다. 해법도 앞에서 말한 것과 같다 — 주머니를 합친다. 글 단위를 카테고리 단위로 올렸다.
| 카테고리 | 노출 | 클릭 | 클릭률 |
|---|---|---|---|
| 웹·백엔드(Django) | 13,538 | 9 | 0.066% |
| AI · AX | 1,869 | 138 | 7.384% |
합동비율은 0.00954다. 조건을 확인하면 np가 129.2와 17.8, nq가 13,408.8과 1,851.2로 전부 10을 넘는다. 이제 z를 구할 수 있다. z = −30.5, p값은 0.00001보다 작다. 두 카테고리의 클릭률이 같다는 가설은 완전히 기각된다.
그리고 여기서 멈춰야 한다. 검정이 말해준 것은 “다르다”까지다. 왜 다른지는 검정이 아니라 데이터를 열어봐야 알 수 있었다. Django 카테고리 노출 13,538회는 거의 전부가 글 한 편에서, 그것도 영어 검색어 하나에서 나왔다. 제목과 본문이 전부 한국어라 검색 결과 화면에서 사용자가 입력한 단어와 겹치는 부분이 하나도 없었고, 그래서 노출만 쌓이고 클릭이 붙지 않았다.
유의한 차이를 찾는 것과 원인을 아는 것은 다른 일이다. 불량률 논쟁에서도 똑같다. z값이 크게 나왔다고 라인 A가 문제라고 결론 내리면, 정작 두 라인이 다른 원자재를 쓰고 있었다는 사실은 끝까지 안 보인다.
핵심 요약
- 비율 검정은 불량률·합격률처럼 “전체 중 몇 개”의 변화를 판정한다
- 불량 개수는 이항분포(평균 np, 분산 npq)를 따른다
- np ≥ 10, nq ≥ 10이면 정규근사가 가능해 z검정을 그대로 쓴다
- 두 집단 비교는 표본을 합친 공통 비율(pooled)로 흔들림을 계산한다
- 불량률이 아주 작으면 조건 만족이 어려워 카이제곱·Fisher로 간다
함께 읽으면 좋은 글
이항분포가 종 모양으로 근사되는 원리를 그림으로 이해하고 싶다면 이 글이 딱 맞다.







