모집단과 표본¶
모집단과 표본의 구분은 모든 추론통계의 토대다. 이 책에 나오는 모든 신뢰구간, 가설검정, 회귀모형은 표본에서 관측한 것을 근거로 모집단에 대해 말하는 진술이다. 이 구분 — 그리고 그와 관련된 대표성, 무작위성, 표본오차의 개념 — 을 익히는 것이 어떤 통계 분석이든 정직하게 해석하기 위한 첫걸음이다.
정의 1. 모집단과 표본¶
모집단(population) 은 관심 대상이 되는 개체 또는 관측값의 전체 집합이다. 표본(sample) 은 측정을 위해 선택된 모집단의 부분집합이다. 모집단에 대한 양은 모수(parameter) 이고(\(\mu\), \(\sigma^2\), \(p\), \(\beta\)로 표기), 표본에 대한 양은 통계량(statistic) 이다(\(\bar{X}\), \(S^2\), \(\hat{p}\), \(\hat\beta\)로 표기).
표기 관례는 이 책 전체에서 하나다. 모수는 그리스 문자로, 통계량은 라틴 문자(흔히 모자를 씌워서)로 쓴다. 그리고 표본을 뽑기 전의 통계량은 확률변수이므로 대문자(\(X_i\), \(\bar X\), \(S^2\))로, 뽑고 난 뒤 손에 쥔 수 하나는 소문자(\(x_i\), \(\bar x\), \(s^2\))로 쓴다. 모집단의 값 \(x_1, \dots, x_N\)은 이미 정해져 있으므로 소문자다. 이 관례를 왜 지켜야 하는지는 5.1절 확률변수로서의 통계량에서 본격적으로 다룬다.
목표 모집단(target population) 은 분석가가 알고자 하는 대상이고, 연구 모집단(study population) 은 표집틀이 실제로 포괄하는 대상이며, 표본은 실제로 측정되는 대상이다. 목표 모집단과 연구 모집단 사이의 어떤 간극이든 표본 크기로는 결코 없앨 수 없는 편향의 원천이다.
보기 1. 모집단과 표본. \(\mu = 170\), \(\sigma = 10\)인 정규분포에서 \(10\)만 명을 뽑아 모집단으로 삼고, 거기서 \(n = 10, 100, 1000, 10000\)을 비복원으로 뽑는다.
(1) 각 \(n\)에서 표본평균의 표준오차가 얼마일지 구하시오. 비복원추출이므로 붙어야 할 유한모집단 수정을 적고, 그것이 어느 \(n\)에서 문제가 되는지 말하시오.
(2) 모의실험이 그 값을 재현하는지 보고, \(n = 10\)에서 표본이 말하는 표준오차가 이론값과 어긋나는 것을 어떻게 읽어야 하는지 말하시오.
풀이
(1) 해석적으로. 크기 \(N\)인 유한모집단에서 크기 \(n\)을 비복원으로 뽑을 때 표본평균의 분산은
이다. 뒤의 뿌리를 유한모집단 수정(fpc)이라 한다. \(\sigma = 10\)을 넣으면 수정 없는 값이 차례로
이다. \(n\)이 \(100\)배가 되면 표준오차가 \(10\)분의 1이 된다.
수정 인자는 \(N = 100{,}000\)에서 \(n/N\)이 작을 때는 1에 가깝다. \(n = 10\)이면 \(\sqrt{1 - 10^{-4}} = 1.0000\)으로 사실상 1이고, \(n = 1000\)에서도 \(0.9950\)이다. 그러나 \(n = 10{,}000\)에서는 표본이 모집단의 \(10\%\)라 \(\sqrt{0.9} = 0.9487\)로 떨어진다. 참 표준오차가 \(0.1\)이 아니라 \(0.0949\)라는 뜻이고, 어림한 값이 실제 흔들림을 \(5\%\) 부풀린다.
한 가지 더 조심할 것이 있다. 뽑기의 대상은 \(N(170, 10^2)\)이 아니라 한 번 생성된 \(10\)만 명이다. 그 유한모집단의 평균과 표준편차는 \(170\)과 \(10\)에서 조금 벗어나 있을 것이며, 표본평균이 겨냥하는 참값은 \(170\)이 아니라 그 유한모집단의 평균이다.
(2) 수치적으로.
"""표본오차는 sqrt(n)에 반비례해 줄어든다."""
import numpy as np
rng = np.random.default_rng(42)
# 1단계: 모집단을 만든다.
# 실제 상황에서는 이 10만 명을 전부 조사할 수 없다는 것이 출발점이다.
# 여기서는 모의실험이므로 참값(mu=170, sigma=10)을 우리가 알고 있고,
# 표본에서 계산한 값이 그 참값에 얼마나 가까운지 확인할 수 있다.
mu_true, sigma_true = 170, 10
population = rng.normal(mu_true, sigma_true, size=100_000)
# 뽑기의 대상이 되는 것은 N(170, 10) 이 아니라 **이 10만 명**이다.
N = len(population)
print(f"유한모집단의 평균 = {population.mean():.4f}, 표준편차 = {population.std(ddof=0):.4f}")
# 2단계: 표본 크기를 10배씩 키워 가며 표본을 뽑고, 세 가지를 비교한다.
# 표본평균 참값 170에 얼마나 가까운가
# 표본 표준오차 표본에서 계산한 값 = s / sqrt(n)
# 이론 표준오차 sigma / sqrt(n). 모표준편차를 알 때의 값
# 둘째와 셋째가 가까울수록 "표본으로 정밀도를 추정하는 일"이 잘 되고 있는 것이다.
for n in [10, 100, 1_000, 10_000]:
# replace=False: 같은 사람을 두 번 뽑지 않는 비복원추출
sample = rng.choice(population, size=n, replace=False)
fpc = np.sqrt((N - n) / (N - 1)) # 유한모집단 수정
print(f"n = {n:>5d}: 표본평균 = {sample.mean():.3f}, "
# ddof=1: 표본표준편차(n-1로 나눔). 모표준편차의 불편추정에 쓴다
f"표본 표준오차 = {sample.std(ddof=1)/np.sqrt(n):.4f}, "
f"이론 표준오차 = {sigma_true/np.sqrt(n):.4f}, "
f"수정 후 = {sigma_true/np.sqrt(n)*fpc:.4f} (fpc {fpc:.4f})")
출력:
유한모집단의 평균 = 169.9577, 표준편차 = 10.0370
n = 10: 표본평균 = 170.932, 표본 표준오차 = 4.0048, 이론 표준오차 = 3.1623, 수정 후 = 3.1621 (fpc 1.0000)
n = 100: 표본평균 = 169.997, 표본 표준오차 = 0.9719, 이론 표준오차 = 1.0000, 수정 후 = 0.9995 (fpc 0.9995)
n = 1000: 표본평균 = 170.301, 표본 표준오차 = 0.3221, 이론 표준오차 = 0.3162, 수정 후 = 0.3146 (fpc 0.9950)
n = 10000: 표본평균 = 169.902, 표본 표준오차 = 0.0997, 이론 표준오차 = 0.1000, 수정 후 = 0.0949 (fpc 0.9487)
네 이론값 \(3.1623\), \(1.0000\), \(0.3162\), \(0.1000\)이 그대로 나왔고, 수정 인자도 유도한 대로다. \(n\)이 \(100\)배가 될 때마다 표준오차가 \(10\)분의 1로 떨어지는 \(\sqrt n\) 법칙이 보인다.
유한모집단의 평균이 \(169.9577\), 표준편차가 \(10.0370\)이다. \(170\)과 \(10\)에서 벗어난 것은 \(10\)만 개를 뽑은 몬테카를로 오차이며, 평균의 표준오차가 \(10/\sqrt{100000} = 0.0316\)이니 \(169.9577\)은 \(1.3\) 표준오차 안이다. 표본평균이 겨냥하는 참값은 \(170\)이 아니라 \(169.9577\)이다.
\(n = 10\)의 어긋남은 편향이 아니다. 표본이 말하는 표준오차 \(4.0048\)이 이론값 \(3.1623\)보다 \(27\%\) 크지만, 이는 \(s = 12.66\)이 \(\sigma = 10\)보다 컸기 때문이다. \(s\) 자체가 추정값이고 그 표준편차는 대략 \(\sigma/\sqrt{2(n-1)} = 10/\sqrt{18} = 2.357\)이므로, \(12.66\)은 참값에서 \(1.1\) 표준편차 떨어져 있을 뿐이다. 표본이 열 개뿐이면 "얼마나 정확한가"조차 정확히 알 수 없다.
\(n = 10{,}000\)이 가장 흥미롭다. 표본이 말하는 \(0.0997\)은 수정 없는 이론값 \(0.1000\)과 잘 맞지만, 비복원추출의 참 표준오차는 \(0.0949\)다. 표본에서 계산한 \(s/\sqrt n\)은 유한모집단 수정을 모르므로, 이 경우 불확실성을 \(5\%\) 과대평가한다. 표본이 모집단의 상당한 몫을 차지할 때는 수정을 넣어야 한다.
왜 표본을 뽑는가¶
모집단 전체를 조사하는 전수조사는 실행 가능한 경우가 드물다. 그 이유는 다음과 같다.
- 비용: 어떤 조사를 위해 미국의 모든 가구를 측정하려면 수십억 달러가 든다.
- 시간: 전수조사가 끝날 무렵이면 모집단은 이미 변해 있다.
- 실현 가능성: 모든 전구의 수명을 시험하면 제품이 다 망가진다.
- 정의상의 문제: "모집단"이 암묵적일 수 있다(어떤 물리 상수의 가능한 모든 측정값, 어떤 병원의 미래 환자 전체). 이런 경우 관측 가능한 것은 오직 표본뿐이다.
무엇이 좋은 표본을 만드는가¶
좋은 표본은 분석가가 (a) 평균적으로 무엇이 참인지, (b) 그 추정이 얼마나 불확실한지를 정량화할 수 있게 해준다. 최소 요건은 확률표집(probability sampling) 이다. 즉 모집단의 모든 단위가 알려진 0이 아닌 선택 확률을 가져야 한다. 이 요건이 다음을 뒷받침한다.
- 기댓값 차원의 불편성(unbiasedness): 단순무작위표집에서 \(\mathbb{E}[\bar X] = \mu\).
- 정량화 가능한 불확실성: 표준오차와 신뢰구간이 타당한 포함확률을 갖는다.
- 보이지 않는 누락 없음: 확률표집은 모집단의 모든 부분에 도달할 수 있음을 보장한다.
편의표본(지나가던 사람, 분석가의 친구, 온라인 자원자)은 이 요건을 위반하며, 불확실성을 타당하게 측정할 수 없는 통계량을 만들어낸다.
표본오차 대 편향¶
표본오차(sampling error) 는 같은 크기의 서로 다른 표본들 사이에서 통계량이 무작위로 변동하는 정도다. \(\sqrt{n}\)에 따라 줄어들며 표준오차로 포착된다.
편향(bias) 은 체계적 오차, 즉 \(\mathbb{E}[\hat\theta]\)와 \(\theta\)의 차이다. 이것은 \(n\)이 커져도 줄지 않는다. 표본 100만 개의 편향된 조사는 표본 1000개의 편향된 조사보다 더 자신 있게 틀린다.
이 둘은 서로 독립적인 양이다. 어떤 조사는 정밀하면서(표준오차가 작으면서) 편향될 수 있고, 불편이면서 정밀하지 않을 수도 있다.
세 겹을 한 그림으로¶

왼쪽 그림에서 주황색 사각형이 목표 모집단 200명이고 파란색 타원이 표집틀 189명이다. 둘이 겹치는 163명만이 연구 모집단이며, 표본 20명은 오직 그 안에서만 뽑힌다. 두 도형이 어긋난 두 조각이 표집틀의 두 가지 결함이다. 사각형 안에 있으나 타원 밖에 있는 37명은 과소포괄이고, 타원 안에 있으나 사각형 밖에 있는 26명은 과대포괄이다. 둘은 성질이 전혀 다르다. 과대포괄된 단위는 표본에 들어온 뒤에 걸러낼 수 있지만(표본 크기를 조금 잃을 뿐이다), 과소포괄된 37명은 어떤 표집 절차로도 표본에 들어올 길이 없다.
이 200명에게는 각자 어떤 정책에 대한 찬성 여부가 붙어 있고, 찬성할 확률은 그림에서 왼쪽에 놓인 사람일수록 높게 만들었다. 표집틀에서 빠지는 사람이 바로 왼쪽에 몰려 있으니, 이것이 "목록에서 빠진 사람들이 남은 사람들과 다르다"는 상황이다. 결과가 오른쪽 막대다. 목표 모집단 200명의 찬성률은 \(0.485\)인데 연구 모집단 163명의 찬성률은 \(0.442\)다. 빠진 37명의 찬성률이 \(0.676\)으로 훨씬 높았기 때문이다.
표본이 겨냥하는 값은 \(0.485\)가 아니라 \(0.442\)다. 표본을 20명에서 200명, 2만 명으로 늘리면 표본비율은 점점 더 정확하게 \(0.442\)에 모인다. 표준오차는 \(\sqrt{n}\)에 따라 줄고 신뢰구간은 좁아지지만, 그 구간이 좁혀 들어가는 자리가 처음부터 \(0.043\)만큼 어긋나 있다. 이 \(-0.043\)이 커버리지 편향이며, 바로 위에서 말한 "\(n\)이 커져도 줄지 않는 체계적 오차"의 가장 흔한 실물이다.
이 그림을 읽는 요령은 두 도형의 넓이를 재는 것이 아니라 어긋난 조각이 어느 쪽에 몰려 있는지를 보는 것이다. 빠진 37명이 사각형 전체에 고르게 흩어져 있었다면 두 찬성률은 거의 같았을 것이고, 표집틀의 결함은 표본 크기만 조금 갉아먹고 끝났을 것이다. 커버리지 오차가 편향으로 바뀌는 것은 빠진 사람들이 남은 사람들과 체계적으로 다를 때뿐이다. 그래서 표집틀을 점검할 때 던져야 할 질문은 "몇 명이 빠졌는가"가 아니라 "누가 빠졌는가"다.
베셀 보정¶
표본분산의 분모는 \(n\)이 아니라 \(n - 1\)이다. 이유는 이렇다. \(\bar X\)는 \(c\)에 대해 \(\sum (X_i - c)^2\)을 최소화하므로, 어떤 표본에서든 \(\sum (X_i - \bar X)^2 \le \sum (X_i - \mu)^2\)이다. 따라서 \(n\)으로 나누면 \(\mathbb{E}[\tilde S^2] = \frac{n-1}{n}\sigma^2\)가 되어 체계적으로 과소추정하는 편향이 생긴다. \(n - 1\)로 나누면 이를 정확히 보정하여, 중심화된 제곱합의 스칼라 배수 중 \(\sigma^2\)에 대해 불편인 유일한 것을 얻는다.
연습문제¶
연습문제 1. 다음 각 상황에서 모집단과 표본을 찾아라.
(a) 한 여론조사 기관이 어떤 주에서 무작위로 선정한 등록 유권자 1,200명에게 전화를 걸어 주민발의안 지지 비율을 추정한다. (b) 한 병원이 수술 후 합병증을 연구하기 위해 2024년에 입원한 환자 500명의 진료기록을 검토한다. (c) 한 온라인 소매업체가 전체 전환율을 추정하기 위해 무작위로 선택한 사용자 세션 10,000건의 클릭 자료를 분석한다. (d) 한 물리학자가 중력상수 값을 추정하기 위해 실험실에서 50번 측정한다.
풀이
(a) 모집단: 해당 주의 모든 등록 유권자. 표본: 전화를 받은 1,200명. (b) 모집단: 비슷한 조건에서 그 병원에 입원할 수 있었던 모든 환자. 표본: 검토된 500명. (c) 모집단: 그 소매업체 웹사이트의 모든 세션. 표본: 선택된 10,000건의 세션. (d) 모집단: 동일한 실험 설정에서 가능한 모든 측정값의 개념적 모임. 표본: 50번의 측정. (모집단이 개념적일 때, 모든 관측값은 어떤 의미에서 암묵적인 초모집단에서 뽑은 표본이다.)
연습문제 2. \(X_1, \ldots, X_n\)이 평균 \(\mu\), 분산 \(\sigma^2\)을 갖는 i.i.d. 확률변수일 때, 표본분산 \(S^2 = \frac{1}{n-1}\sum (X_i - \bar X)^2\)이 모분산 \(\sigma^2\)에 대해 불편임을 증명하라.
풀이
\(\sum (X_i - \bar X)^2 = \sum X_i^2 - n \bar X^2\)을 이용한다. 기댓값을 취하면
빼면
따라서 \(\mathbb{E}[S^2] = \sigma^2\)이다. \(\square\)
연습문제 3. 한 여론조사 기관이 "평일 오후 5시에서 7시 사이에 실시한 전화 면접 800건에 근거할 때, 미국인의 75%가 정책 X를 지지한다"고 발표했다. 이 표집 설계를 비판하고 서로 다른 두 가지 편향의 원천을 제시하라.
풀이
두 가지 편향의 원천:
- 포괄 / 표집틀 편향: 표집틀이 전화 가입자다. 비가입자와 전화가 없는 사람은 배제된다. 전화 소유자 중에서도 모르는 번호를 받는 사람(즉 여론조사 전화에 응하는 사람)은 더 나이가 많고 은퇴자 쪽으로 치우친다.
- 시간대 편향: 평일 오후 5–7시 통화는 일하는 성인, 교대 근무자, 저녁 일정이 있는 사람을 놓친다. 응답자는 은퇴자, 실업자, 재택근무자 쪽으로 치우치는데, 이들은 정책 선호에서 체계적으로 다를 수 있다.
이 둘이 결합하면 \(n\)이 아무리 커도 대표성 없는 표본이 만들어진다. 발표된 75%는 잘못된 목표 모집단에 대해 좁은 신뢰구간을 갖고 있는 셈이다.
연습문제 4. 표본오차와 편향을 구분하라. 다음 각각에 대해 어느 쪽이 작용하는지(또는 둘 다인지) 밝혀라. (a) \(\mu\)에 대한 95% 신뢰구간이 분석가가 원하는 것보다 넓다. (b) 출구조사가 여러 선거에 걸쳐 일관되게 민주당 지지를 과대평가한다. (c) 온도계가 몇 번을 측정해 평균을 내든 2도 높게 나온다.
풀이
(a) 표본오차. 넓은 신뢰구간은 정밀도 문제이며, \(n\)을 키우면 줄어든다. (b) 편향. 여러 독립적인 표본에 걸쳐 같은 방향으로 반복되는 체계적 오차는 무작위 표본오차가 아니라 편향이다. 유력한 기제는 차별적 응답(민주당 지지자가 출구조사에 더 기꺼이 참여함)이다. \(n\)을 늘려도 줄지 않는다. (c) 편향(측정 편향). 이 온도계는 항상 2도 높게 읽는다. 평균을 아무리 내도 고쳐지지 않고, 오직 재보정만이 해결한다.
연습문제 5. 새 생산라인이 연간 1,000만 개의 부품을 생산한다. 품질관리팀은 매달 1,000개를 뽑아 시험한다. 이것이 왜 생산 모집단의 표본인가? 시험이 파괴적일 때는 무엇이 달라지는가?
풀이
연간 1,000만 개의 부품이 관심 모집단이다. 매달 시험하는 1,000개 — 보통 연간 12,000개 — 가 표본을 이루며, 모집단의 불량률과 치수 분포 등을 추정하기 위해 선택된다.
표본 추론이 적용된다. 불량률은 \(\hat p = (\text{표본 내 불량 수})/1000\)으로 추정되고 표준오차는 \(\sqrt{\hat p(1 - \hat p)/1000}\)이며, 95% 신뢰구간은 대략 \(\hat p \pm 2\sqrt{\hat p(1 - \hat p)/1000}\)이다.
파괴적 시험: 시험이 부품을 망가뜨린다(충돌시험, 파단강도, 수명시험). 이제 전수조사는 정의상 불가능하다. 모든 부품을 시험하면 팔 것이 남지 않는다. 표본에 근거한 추론이 유일한 선택지다. 이것이 비파괴 근사(X선, 광학 검사 — 모든 단위를 검사하지만 정보량이 적음)와 파괴적 시험(표본만 검사하지만 정보량이 많고 그 단위에 대해 반복 불가) 중에서 선택해야 하는 흔한 이유다.
연습문제 6. 유한모집단 수정(FPC) 계수 \(\sqrt{1 - n/N}\)은 유한 모집단에서 비복원으로 표집할 때 표본평균의 표준오차에 곱해진다. 이 계수는 언제 중요하고 언제 무시되는가?
풀이
크기 \(N\)인 모집단에서 비복원 단순무작위표집을 할 때 \(\bar X\)의 분산은
계수 \((1 - n/N)\)은 \(n \ll N\)일 때 1로 가고(FPC를 무시할 수 있음), \(n \to N\)일 때 0으로 간다(모집단 전체를 표집했다면 표집에 따른 불확실성이 없다).
표집비율이 무시할 수 없는 유한 모집단에서는 중요하다. 예를 들어 200장의 송장 중 50장을 뽑는 소규모 감사에서는 \(n/N = 0.25\)다. FPC를 무시하면 표준오차를 \(\sqrt{1/(1-0.25)} = 1.15\)배, 즉 15% 부풀리게 된다.
아주 큰 모집단을 대상으로 하는 조사(\(n/N \ll 0.05\))에서는 무시된다. FPC ≈ 1이므로 표준 공식으로 충분하다. 2억 명의 모집단에서 1,000명을 뽑는 전국 여론조사는 \(n/N = 5 \times 10^{-6}\)이며, FPC는 1과 구별되지 않는다. 교과서에서 무한모집단 공식이 주를 이루면서도 감사, 품질관리, 선거 재검표 맥락에서 FPC가 다시 등장하는 이유가 이것이다.
연습문제 7. (큰 자료의 역설) 응답 확률이 응답자의 키 자체에 의존하는 조사를 모의실험하라. 표본 크기를 키우면서 편향, 표준오차, 그리고 \(95\%\) 신뢰구간의 실제 포함률을 각각 추적하고, 무슨 일이 일어나는지 설명하라.
풀이
import numpy as np
rng = np.random.default_rng(0)
mu, sigma, N = 170, 10, 200_000
pop = rng.normal(mu, sigma, N)
# 키가 큰 사람일수록 조사에 응할 확률이 높다 (자기선택)
p_resp = 1 / (1 + np.exp(-(pop - mu) / 40))
print(f"응답 확률: 평균 {p_resp.mean():.3f}, 범위 {p_resp.min():.3f} ~ {p_resp.max():.3f}")
print(" — 최대와 최소가 3배 남짓밖에 차이 나지 않는 '약한' 선택이다.\n")
B = 2000
print(f"{'n':>6}{'표본평균':>10}{'편향':>9}{'표준오차':>10}{'95% 포함률':>12}")
for n in (25, 100, 400, 1600, 6400):
m = np.empty(B)
covered = 0
for b in range(B):
pool = rng.choice(N, size=n * 3, replace=False)
s = pop[pool[rng.random(len(pool)) < p_resp[pool]][:n]]
m[b] = s.mean()
se = s.std(ddof=1) / np.sqrt(len(s))
if abs(m[b] - mu) <= 1.96 * se:
covered += 1
print(f"{n:>6}{m.mean():>10.3f}{m.mean() - mu:>+9.3f}"
f"{m.std():>10.4f}{covered / B:>12.3f}")
출력:
응답 확률: 평균 0.500, 범위 0.241 ~ 0.765
— 최대와 최소가 3배 남짓밖에 차이 나지 않는 '약한' 선택이다.
n 표본평균 편향 표준오차 95% 포함률
25 171.315 +1.315 1.9812 0.887
100 171.245 +1.245 0.9546 0.766
400 171.217 +1.217 0.4930 0.317
1600 171.234 +1.234 0.2453 0.002
6400 171.239 +1.239 0.1224 0.000
무슨 일이 일어나는가. 세 열을 나란히 보라.
- 편향은 꿈쩍도 하지 않는다. \(n\)이 \(256\)배가 되어도 \(+1.24\)cm 그대로다. 편향은 표집 기제의 성질이지 표본 크기의 함수가 아니다.
- 표준오차는 \(\sqrt{n}\)대로 줄어든다. \(n\)이 \(4\)배가 될 때마다 정확히 절반이 된다. 신뢰구간이 점점 좁아진다.
- 포함률은 무너진다. \(0.887 \to 0.766 \to 0.317 \to 0.002 \to 0.000\).
왜 무너지는가. 구간의 반폭은 \(1.96 \times \text{SE}\)로 줄어드는데 중심은 참값에서 \(1.24\)만큼 벗어난 자리에 붙박여 있다. \(1.96\,\text{SE}\)가 \(1.24\)보다 작아지는 순간 구간은 참값을 구조적으로 놓치기 시작한다.
이것이 큰 자료의 역설이다. 자료가 많아지면 틀린 답에 대한 확신만 커진다. 본문의 "표본 100만 개의 편향된 조사는 표본 1000개의 편향된 조사보다 더 자신 있게 틀린다"를 수치로 본 것이다.
실무에서의 함의
웹 로그, 소셜미디어, 앱 원격측정처럼 \(n\)이 수백만인 자료는 표준오차가 사실상 \(0\)이라 언제나 "통계적으로 유의"하다. 이때 신뢰구간의 폭은 아무 정보도 주지 않는다. 유일하게 중요한 질문은 "누가 이 자료에 들어오고 누가 빠졌는가"이며, 이는 자료를 더 모아서가 아니라 표집 기제를 이해해야만 답할 수 있다.
여기서 응답 확률의 최대/최소 비가 \(0.765/0.241 \approx 3.2\)에 그치는 약한 선택이었다는 점을 기억하라. 현실의 자기선택은 훨씬 강하다. \(\square\)
연습문제 8. 층화표집이 단순무작위표집보다 정밀할 수 있음을 보여라. 평균이 서로 다른 세 층으로 이루어진 모집단에서 두 방법을 비교하고, 분산이 줄어드는 정도를 이론값과 맞춰 보라.
풀이
import numpy as np
rng = np.random.default_rng(1)
N_h = np.array([6000, 3000, 1000]) # 층 크기
mu_h = np.array([160., 170., 185.]) # 층 평균이 크게 다르다
sd_h = np.array([5., 5., 5.]) # 층 안에서는 균질하다
pop = np.concatenate([rng.normal(m, s, k) for m, s, k in zip(mu_h, sd_h, N_h)])
strat = np.concatenate([np.full(k, i) for i, k in enumerate(N_h)])
N, n, B = len(pop), 300, 20_000
W = N_h / N
srs = np.array([pop[rng.choice(N, n, replace=False)].mean() for _ in range(B)])
alloc = np.array([180, 90, 30]) # 비례배분 = W * n
idx_h = [np.where(strat == i)[0] for i in range(3)]
strat_est = np.array([
sum(W[i] * pop[rng.choice(idx_h[i], alloc[i], replace=False)].mean() for i in range(3))
for _ in range(B)])
print(f"모평균 {pop.mean():.4f}, 모표준편차 {pop.std():.4f}")
print(f"\n단순무작위: 평균 {srs.mean():.4f} 표준오차 {srs.std(ddof=1):.4f}")
print(f"층화(비례): 평균 {strat_est.mean():.4f} 표준오차 {strat_est.std(ddof=1):.4f}")
print(f"\n분산비 {srs.var() / strat_est.var():.3f}"
f" 이론 sigma^2 / sum(W_h sigma_h^2) = {pop.var() / (W * sd_h ** 2).sum():.3f}")
출력:
모평균 165.4454, 모표준편차 9.2921
단순무작위: 평균 165.4489 표준오차 0.5305
층화(비례): 평균 165.4442 표준오차 0.2835
분산비 3.502 이론 sigma^2 / sum(W_h sigma_h^2) = 3.454
두 방법 모두 불편이지만 층화 쪽 표준오차가 \(0.53\)에서 \(0.28\)로 거의 절반이다. 분산으로는 \(3.5\)배 차이이며, 같은 정밀도를 단순무작위로 얻으려면 표본이 \(3.5\)배 필요하다는 뜻이다.
왜 줄어드는가. 전체 분산은 층내 분산과 층간 분산으로 쪼개진다.
단순무작위표집은 두 항을 모두 겪는다. 표본에 어느 층이 몇 개나 들어올지가 우연에 맡겨지기 때문이다. 비례배분 층화는 각 층에서 정확히 정해진 수를 뽑으므로 층간 변동을 완전히 제거한다. 남는 것은 층내 분산뿐이라
이고, 여기서는 \(3.454\)로 모의실험값 \(3.502\)와 잘 맞는다.
실무 지침. 층화가 이득을 주는 정도는 층 평균이 서로 얼마나 다른가에 달려 있다. 모든 층의 평균이 같으면 층간 항이 \(0\)이라 이득이 없다. 그래서 결과변수와 관련이 깊은 변수(지역, 연령대, 사업체 규모)로 층을 나눈다. 층화는 결코 손해가 아니며, 최악의 경우 단순무작위와 같아진다. \(\square\)
연습문제 9. 군집표집은 비용을 아끼지만 정밀도를 잃는다. 급내상관 \(\rho\)가 있을 때 설계효과가 \(1 + (m-1)\rho\)임을 모의실험으로 확인하고, 유효표본크기의 개념을 설명하라.
풀이
학교 \(k\)개를 뽑아 각 학교에서 학생 \(m\)명을 모두 조사한다고 하자. 같은 학교 학생들은 서로 닮았다.
import numpy as np
rng = np.random.default_rng(2)
m, k, B, sigma = 25, 20, 20_000, 8.0 # 학교당 25명, 학교 20개
print(f"{'tau':>5}{'ICC':>8}{'군집 SE':>11}{'SRS 가정':>11}{'설계효과':>11}{'이론':>8}")
for tau in (0., 3., 6.): # tau = 학교 간 표준편차
school = rng.normal(0, tau, (B, k))
y = school[:, :, None] + rng.normal(0, sigma, (B, k, m))
means = y.mean(axis=(1, 2))
rho = tau ** 2 / (tau ** 2 + sigma ** 2)
se_srs = np.sqrt(tau ** 2 + sigma ** 2) / np.sqrt(k * m)
deff = (means.std(ddof=1) / se_srs) ** 2
print(f"{tau:>5.1f}{rho:>8.3f}{means.std(ddof=1):>11.4f}"
f"{se_srs:>11.4f}{deff:>11.2f}{1 + (m - 1) * rho:>8.2f}")
출력:
tau ICC 군집 SE SRS 가정 설계효과 이론
0.0 0.000 0.3585 0.3578 1.00 1.00
3.0 0.123 0.7582 0.3821 3.94 3.96
6.0 0.360 1.3878 0.4472 9.63 9.64
모의실험값이 \(1 + (m-1)\rho\)와 소수점 둘째 자리까지 맞는다.
유도. 군집 평균의 분산은
이다(학교 효과는 \(k\)개만 독립이고, 학생 잡음은 \(km\)개가 독립이다). 이를 단순무작위표집의 분산 \((\tau^2+\sigma^2)/(km)\)로 나누면
를 얻는다. \(\square\)
유효표본크기. \(n_{\text{eff}} = km/\text{DEFF}\)가 "같은 정밀도를 주는 단순무작위 표본의 크기"다. \(\rho = 0.36\)일 때 학생 \(500\)명은
명분의 정보밖에 없다. 학생을 \(500\)명이나 조사하고도 학교 \(20\)개를 뽑은 것의 두세 배 수준에 그친다. 정보량을 정하는 것은 학생 수가 아니라 사실상 학교 수다.
핵심 통찰. \(\rho\)가 크면 같은 학교에서 학생을 더 뽑아도 얻는 것이 거의 없다. 이미 아는 것을 되풀이해 듣는 셈이기 때문이다. 예산이 정해져 있다면 학교당 인원을 줄이고 학교 수를 늘리는 것이 거의 언제나 낫다.
군집표집을 하고도 단순무작위인 척 분석하면 표준오차를 \(\sqrt{\text{DEFF}}\)배만큼 과소평가한다. 위 예에서는 \(3.1\)배다. 그래서 이런 자료는 군집 로버스트 표준오차나 혼합모형으로 분석해야 한다.
연습문제 10. \(S^2\)은 \(\sigma^2\)의 불편추정량이지만(연습문제 2), \(S\)는 \(\sigma\)의 불편추정량이 아니다. 이유를 설명하고 모의실험으로 확인하라. 편향의 방향은 어느 쪽인가?
풀이
왜 편향되는가. 제곱근은 오목함수다. 옌센 부등식에 의해 오목함수 \(g\)와 상수가 아닌 확률변수 \(X\)에 대해 \(\mathbb{E}[g(X)] < g(\mathbb{E}[X])\)이므로
이다. 부등식이 엄격한 것은 \(S^2\)이 상수가 아니기 때문이다. 따라서 \(S\)는 언제나 \(\sigma\)를 과소추정한다.
정규모집단에서는 편향의 크기를 정확히 계산할 수 있다. \((n-1)S^2/\sigma^2 \sim \chi^2_{n-1}\)이므로
이다.
import numpy as np
from math import lgamma, exp, sqrt
rng = np.random.default_rng(3)
print(f"{'n':>5}{'E[s^2]':>10}{'E[s]':>10}{'이론 c4':>10}{'편향':>10}")
for n in (2, 5, 10, 30, 100):
s = rng.normal(0, 1, (300_000, n)).std(axis=1, ddof=1)
c4 = sqrt(2 / (n - 1)) * exp(lgamma(n / 2) - lgamma((n - 1) / 2))
print(f"{n:>5}{(s ** 2).mean():>10.4f}{s.mean():>10.5f}{c4:>10.5f}{s.mean() - 1:>+10.5f}")
출력:
n E[s^2] E[s] 이론 c4 편향
2 1.0022 0.79891 0.79788 -0.20109
5 0.9979 0.93895 0.93999 -0.06105
10 0.9993 0.97240 0.97266 -0.02760
30 0.9997 0.99126 0.99142 -0.00874
100 0.9998 0.99737 0.99748 -0.00263
\(\mathbb{E}[S^2]\)은 모든 \(n\)에서 \(1\)이지만 \(\mathbb{E}[S]\)는 언제나 그보다 작고, 모의실험값이 \(c_4(n)\)과 소수점 셋째 자리까지 맞는다. \(n = 2\)에서 \(-20\%\)나 되는 편향이 \(n = 100\)에서는 \(-0.26\%\)로 줄어든다. 편향은 대략 \(1/(4n)\)의 속도로 사라진다.
왜 아무도 신경 쓰지 않는가.
- 불편성은 비선형 변환에서 보존되지 않는 성질이다. \(\hat\theta\)이 불편이라고 \(g(\hat\theta)\)가 불편인 것은 아니다. 이 사실 자체가 불편성이라는 기준의 한계를 보여 준다.
- \(t\) 통계량 \(\frac{\bar{X}-\mu}{S/\sqrt{n}}\)은 \(S\)의 편향을 이미 반영해서 만들어졌다. \(t\) 분포가 정규분포보다 꼬리가 두꺼운 이유가 바로 이것이다. \(S\)를 \(c_4\)로 나누어 "고치면" \(t\) 검정이 오히려 틀린다.
- 표본표준편차를 그대로 쓰는 것이 표준 관행이고, 대부분의 표본 크기에서 편향은 무시할 만하다.
편향 보정이 실제로 쓰이는 곳은 품질관리의 관리도다. \(\bar{R}/d_2\)나 \(\bar{S}/c_4\)로 \(\sigma\)를 추정하는데, 관리한계가 \(\sigma\)의 추정값에 직접 의존하므로 작은 편향도 누적되면 오경보율을 바꾸기 때문이다. \(\square\)
정리하며¶
이 절은 추론통계 전체가 딛고 선 하나의 구분을 세웠다. 알고 싶은 것은 모집단이고, 손에 쥔 것은 표본이다.
- 모수와 통계량. \(\mu,\sigma^2,p,\beta\) 는 모집단의 것이고 \(\bar X,S^2,\hat p,\hat\beta\) 는 표본의 것이다. 앞의 것은 고정된 미지수이고 뒤의 것은 표본마다 달라지는 확률변수다. 뽑고 난 뒤 손에 쥔 값 하나는 소문자 \(\bar x, s^2\) 로 적는다.
- 세 겹의 모집단. 목표 모집단 · 연구 모집단 · 표본. 목표와 연구 사이의 간극은 표본을 아무리 늘려도 메워지지 않는다. 표집틀이 빠뜨린 사람은 영영 빠져 있다.
- 확률표집. 모든 단위가 알려진 0 아닌 선택 확률을 가져야 한다. 이것이 불편성과 "계산할 수 있는 불확실성"을 동시에 보장한다. 편의표본은 둘 다 잃는다.
- 표본오차와 편향은 다르다. 표본오차는 \(\sqrt{n}\) 에 따라 줄고, 편향은 줄지 않는다. 표본 100만 개의 편향된 조사는 1000개짜리보다 더 자신 있게 틀린다.
이 절의 실무적 교훈은 "표본을 늘리라"가 아니다. 표본 크기는 표본오차만 다스리며, 이 책의 나머지 전부가 다루는 것도 그 절반뿐이다. 다른 절반인 편향은 설계 단계에서만 막을 수 있고, 1.4절의 여러 편향이 그 실패 사례들이다.
다음 절 모수 대 통계량은 이 구분을 한 걸음 더 밀고 나간다. 통계량이 표본마다 달라진다는 사실 자체를 확률변수로 다루면 표본분포(sampling distribution) 라는 개념이 나오고, 그것이 신뢰구간과 가설검정의 토대가 된다. 이 개념을 정면으로 다루는 곳은 5.1절 반복추출 개념이다.