콘텐츠로 이동

표본크기 계산

개요

자료를 모으기 전에 적절한 표본크기를 고르는 일은 연구 설계에서 가장 중요한 단계에 속한다. 표본이 너무 작으면 신뢰구간이 넓고 검정력이 낮으며, 불필요하게 크면 자원을 낭비한다. 이 페이지에서는 평균이나 비율을 추정할 때 \(n\)을 정하는 핵심 공식을 제시하고 Python 코드로 예시한다.

평균 추정을 위한 표본크기

신뢰수준 \(1 - \alpha\)에서 오차한계 \(E\) 이내로 모평균 \(\mu\)를 추정하려면 최소 표본크기는

\[ n = \left\lceil \left(\frac{z_{\alpha/2} \cdot \sigma}{E}\right)^2 \right\rceil \]

여기서 \(\sigma\)는 모표준편차(또는 계획용 추정값)이고 \(\lceil \cdot \rceil\)은 천장함수이다.

유도

\(z\)-구간의 오차한계 식

\[ E = z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}} \]

에서 출발해 \(n\)에 대해 풀면

\[ \sqrt{n} = \frac{z_{\alpha/2} \cdot \sigma}{E} \quad\Longrightarrow\quad n = \left(\frac{z_{\alpha/2} \cdot \sigma}{E}\right)^2 \]

\(n\)은 정수여야 하므로 올림한다.

비율 추정을 위한 표본크기

오차한계 \(E\) 이내로 모비율 \(p\)를 추정할 때 보수적인 공식은(\(p(1-p)\)를 최대화하는 \(p = 0.5\)를 쓴다)

\[ n = \left\lceil \frac{z_{\alpha/2}^2}{4E^2} \right\rceil \]

계획용 추정값 \(p_0\)이 있다면 더 조인 공식은

\[ n = \left\lceil \frac{z_{\alpha/2}^2 \, p_0(1 - p_0)}{E^2} \right\rceil \]

보기 1. 표본크기가 오차한계를 어떻게 줄이는가. 평균은 \(\sigma \approx 15\) 로, 비율은 계획값 \(p^\ast\) 로 계산한다.

(1) 비율의 표본크기 공식에서 \(p = 1/2\) 이 최악의 경우임을 증명하시오. \(E = 0.03\), \(95\%\) 에서 \(p^\ast = 0.1,\ 0.3,\ 0.5\) 의 \(n\) 을 구하고, 최대와 최소의 비를 적으시오.

(2) 계획 입력이 빗나갔을 때의 위험이 비율과 평균에서 어떻게 다른가. \(\sigma = 15\) 로 계획해 \(n = 217\) 을 썼는데 참 \(\sigma\) 가 \(18\) 이었다면 실제로 달성되는 오차한계는 얼마인가.

(3) 코드로 확인하시오.

풀이

(1) \(p(1-p)\) 는 \(p = 1/2\) 에서 최대다. 완전제곱으로 정리하면 한 줄이다.

\[ p(1-p) = \frac14 - \left(p - \frac12\right)^2 \le \frac14 \]

이고 등호는 \(p = 1/2\) 일 때뿐이다. \(\square\) 비율의 표본크기가

\[ n = \left\lceil \frac{z_{\alpha/2}^2\,p^\ast(1-p^\ast)}{E^2} \right\rceil \]

이므로, \(p^\ast = 1/2\) 를 넣으면 참 \(p\) 가 무엇이든 필요한 \(n\) 이상을 확보한다. 그 결과가 보수적 공식 \(n = \lceil z^2/(4E^2)\rceil\) 이다.

\(E = 0.03\), \(95\%\) 에서 \(z^2/E^2 = 3.84146/0.0009 = 4268.3\) 이므로

\(p^\ast\) \(p^\ast(1-p^\ast)\) \(n\) \(p^\ast = 0.5\) 대비
\(0.1\) \(0.09\) \(385\) \(0.36\)
\(0.3\) \(0.21\) \(897\) \(0.84\)
\(0.35\) \(0.2275\) \(972\) \(0.91\)
\(\mathbf{0.5}\) \(0.25\) \(\mathbf{1068}\) \(1.00\)

최대와 최소의 비가 \(1068/385 = 2.77\)배에 그친다. 게다가 포물선이 꼭짓점 근처에서 납작해 \(p^\ast\) 가 \(0.35\) 와 \(0.65\) 사이 어디든 손해가 \(9\%\) 미만이다. 모르면 \(0.5\) 를 넣으면 된다는 관행이 여기서 나온다.

(2) 비율은 위험이 막혀 있고 평균은 열려 있다. 비율의 미지 입력 \(p\) 는 \(p(1-p) \le 1/4\) 라는 상한을 갖는다. 최악을 쓰면 끝이다. \(\sigma\) 에는 그런 상한이 없다. 위로 열려 있으므로 "가장 안전한 \(\sigma\)" 라는 것이 존재하지 않는다.

게다가 어긋남이 그대로 넘어온다. \(n\) 은 \(\sigma^2\) 에 비례하지만, \(n\) 을 고정하고 나면 달성되는 오차한계

\[ E_{\text{실제}} = z_{\alpha/2}\frac{\sigma_{\text{참}}}{\sqrt n} \]

은 \(\sigma\) 에 정비례한다. \(\sigma = 15\) 로 \(n = 217\) 을 정했는데 참값이 \(18\)(\(20\%\) 과소평가)이었다면

\[ E_{\text{실제}} = 1.95996 \times \frac{18}{\sqrt{217}} = 2.3949 \]

로 목표 \(2\) 의 \(1.20\)배다. \(\sigma\) 의 \(20\%\) 오차가 \(E\) 의 \(20\%\) 초과로 그대로 옮아온다. 반대로 참값이 \(12\) 였다면 \(E_{\text{실제}} = 1.5966\) 으로 목표를 넘겨 달성하되 표본을 낭비한 것이다.

그래서 작업 순서가 다르다. 비율은 모르면 \(0.5\) 를 넣고 끝내지만, 평균은 \(\sigma\) 의 출처를 반드시 확보해야 한다(선행 연구, 예비조사, 또는 범위 규칙 \(\sigma \approx \text{범위}/4\)). 그리고 어느 쪽이든 불확실하면 큰 쪽으로 잡는다. 표본을 조금 더 모으는 비용이, 연구를 마친 뒤 구간이 목표보다 넓게 나온 것을 발견하는 비용보다 싸다.

(3) 확인.

import numpy as np
from scipy import stats

np.random.seed(42)

# --- 평균 추정을 위한 표본크기 ---
# 자료를 모으기 전이라 s가 없으므로 t가 아니라 z를 쓴다.
# sigma도 모르니 계획용 추정값을 넣는다. 이 값이 틀리면 계산 전체가 틀어지므로
# 표본크기 계산에서 가장 약한 고리는 언제나 sigma의 사전 추정이다.
sigma_est = 15
for E in [1, 2, 3, 5]:
    for conf in [0.90, 0.95, 0.99]:
        z = stats.norm.ppf(1 - (1 - conf) / 2)
        n_needed = int(np.ceil((z * sigma_est / E) ** 2))
        print(f"  E=+/-{E}, {conf*100:.0f}% conf -> n = {n_needed}")

# --- 비율 추정을 위한 표본크기 (보수적으로 p=0.5) ---
# p(1-p)가 p=0.5에서 최대 0.25이므로 sqrt(0.25) = 1/2이 되어
# 공식에 2E가 나타난다. 참 p가 무엇이든 안전한 크기다.
print("\nSample size for proportion (conservative p=0.5):")
for E in [0.01, 0.03, 0.05]:
    for conf in [0.95, 0.99]:
        z = stats.norm.ppf(1 - (1 - conf) / 2)
        n_needed = int(np.ceil((z / (2 * E)) ** 2))
        print(f"  E=+/-{E}, {conf*100:.0f}% conf -> n = {n_needed}")

출력:

  E=+/-1, 90% conf -> n = 609
  E=+/-1, 95% conf -> n = 865
  E=+/-1, 99% conf -> n = 1493
  E=+/-2, 90% conf -> n = 153
  E=+/-2, 95% conf -> n = 217
  E=+/-2, 99% conf -> n = 374
  E=+/-3, 90% conf -> n = 68
  E=+/-3, 95% conf -> n = 97
  E=+/-3, 99% conf -> n = 166
  E=+/-5, 90% conf -> n = 25
  E=+/-5, 95% conf -> n = 35
  E=+/-5, 99% conf -> n = 60

Sample size for proportion (conservative p=0.5):
  E=+/-0.01, 95% conf -> n = 9604
  E=+/-0.01, 99% conf -> n = 16588
  E=+/-0.03, 95% conf -> n = 1068
  E=+/-0.03, 99% conf -> n = 1844
  E=+/-0.05, 95% conf -> n = 385
  E=+/-0.05, 99% conf -> n = 664

이어서 (1)의 포물선과 (2)의 위험을 수로 확인한다.

import numpy as np
from scipy import stats

# (1) 계획값 p* 에 따른 표본크기. p* = 0.5 가 꼭짓점이다.
z95, E_p = stats.norm.ppf(0.975), 0.03
print(f"{'p*':>6}{'p*(1-p*)':>11}{'n':>7}{'0.5 대비':>10}")
for p_star in (0.1, 0.3, 0.35, 0.5, 0.65, 0.9):
    v = p_star * (1 - p_star)
    print(f"{p_star:>6.2f}{v:>11.4f}"
          f"{int(np.ceil(z95**2 * v / E_p**2)):>7d}{v / 0.25:>10.2f}")

# (2) sigma 를 잘못 잡으면 달성되는 오차한계가 그만큼 빗나간다.
print(f"\nn = 217 로 고정했을 때 실제 오차한계 (목표 2)")
for sigma_true in (12, 15, 18):
    print(f"  참 sigma = {sigma_true}:  E = {z95 * sigma_true / np.sqrt(217):.4f}")

출력:

    p*   p*(1-p*)      n    0.5 대비
  0.10     0.0900    385      0.36
  0.30     0.2100    897      0.84
  0.35     0.2275    972      0.91
  0.50     0.2500   1068      1.00
  0.65     0.2275    972      0.91
  0.90     0.0900    385      0.36

n = 217 로 고정했을 때 실제 오차한계 (목표 2)
  참 sigma = 12:  E = 1.5966
  참 sigma = 15:  E = 1.9958
  참 sigma = 18:  E = 2.3949

(1)과 맞는다. \(n\) 이 \(p^\ast = 0.5\) 에서 \(1068\) 로 최대이고 \(0.1\) 과 \(0.9\) 에서 \(385\) 로 최소다. \(p^\ast\) 와 \(1 - p^\ast\) 가 같은 값을 주는 것도 \(p(1-p)\) 가 \(1/2\) 에 대해 대칭이기 때문이다.

(2)도 맞는다. 참 \(\sigma\) 가 \(12,\ 15,\ 18\) 일 때 달성되는 오차한계가 \(1.5966,\ 1.9958,\ 2.3949\) 로 \(\sigma\) 에 정비례한다. \(\sigma\) 를 맞게 잡았을 때 \(1.9958\) 이 목표 \(2\) 를 조금 밑도는 것은 \(217\) 이 \(216.08\) 을 올림한 값이기 때문이다.

비율 쪽 표를 보면 여론조사가 왜 대개 표본 1,000명 남짓인지 알 수 있다. 95% 신뢰수준에서 오차한계 \(\pm 3\)%p를 맞추는 데 1,068명이 필요하고, 이를 \(\pm 1\)%p로 조이려면 9,604명이 필요하다. 아홉 배의 비용으로 정밀도를 세 배 얻는 셈이다.

계획값 p에 따른 표본크기 포물선과, 참 시그마가 빗나갔을 때 달성되는 오차한계

표본크기 공식의 입력 중 \(z_{\alpha/2}\)와 \(E\)는 우리가 고르는 값이라 틀릴 일이 없다. 위험은 나머지 하나, 자료를 보기 전에 추측해야 하는 값에 있다. 비율이면 계획값 \(p^*\)이고 평균이면 \(\sigma\)인데, 두 경우의 위험이 전혀 다르다는 점이 중요하다.

왼쪽은 비율 쪽이다. \(n = z^2 p^*(1-p^*)/E^2\)은 \(p^*\)에 대한 포물선이고 꼭짓점이 \(p^* = 0.5\)다. \(E = 0.03\), 95%에서 \(p^* = 0.5\)면 1,068명, \(p^* = 0.3\)이면 897명, \(p^* = 0.1\)이면 385명이다. 최대와 최소의 차이가 2.8배밖에 안 되고, 무엇보다 가장 큰 값이 어디인지 우리가 안다. 그래서 \(p\)를 전혀 모를 때 \(p^* = 0.5\)를 넣는 관행이 성립한다. 조금 손해 보는 대신 참 \(p\)가 무엇이든 목표 오차한계를 지키는 것이 보장된다. 게다가 곡선이 꼭짓점 근처에서 납작해서, \(p\)가 0.35에서 0.65 사이 어디든 손해가 10% 미만이다.

오른쪽은 평균 쪽이고 사정이 나쁘다. \(\sigma\)에는 "가장 안전한 값"이 없다. 위로 열려 있기 때문이다. \(\sigma = 15\)로 계획해 \(n = 217\)을 정했는데 참 \(\sigma\)가 18이었다면(\(20\%\) 과소평가), 실제로 얻는 오차한계는 목표 2가 아니라 \(1.96 \times 18/\sqrt{217} = 2.40\)이다. \(n\)은 \(\sigma^2\)에 비례하지만 달성되는 \(E\)는 \(\sigma\)에 정비례하므로, \(\sigma\)의 오차가 그대로 \(E\)의 오차로 넘어온다. 반대로 \(\sigma\)를 크게 잡았다면 \(E = 1.60\)으로 목표를 넘겨 달성하는 대신 표본을 낭비한 것이다.

그래서 계획 단계의 작업 순서는 이렇게 된다. 비율은 모르면 \(0.5\)를 넣고 끝내면 되지만, 평균은 \(\sigma\)의 출처를 반드시 확보해야 한다. 선행 연구, 예비조사, 아니면 범위 규칙 \(\sigma \approx \text{범위}/4\)다. 그리고 어느 쪽이든 추정값이 불확실하다면 큰 쪽으로 잡는다. 표본을 조금 더 모으는 비용이, 연구를 마친 뒤 "구간이 목표보다 넓게 나왔다"는 사실을 발견하는 비용보다 싸기 때문이다.

해석

  • 필요한 표본크기는 임계값 \(z_{\alpha/2}\)와 모집단 산포 \(\sigma\)의 제곱에 비례해 커지고, 원하는 오차한계 \(E\)의 제곱에 반비례해 작아진다. 오차한계를 절반으로 줄이면 필요한 \(n\)이 네 배가 된다.
  • 비율에서 보수적인 선택 \(p = 0.5\)는 참 \(p\)가 무엇이든 충분한 정밀도를 보장하지만 표본이 커질 수 있다는 대가를 치른다.
  • 실무에서 \(\sigma\)를 정확히 아는 경우는 드물다. 흔한 전략은 예비조사, 선행 연구, 또는 범위 규칙 \(\sigma \approx \text{범위}/4\)를 쓰는 것이다.

연습문제

연습문제 1. 어떤 엔지니어가 케이블의 평균 인장강도를 95% 신뢰수준에서 \(\pm 5\) MPa 이내로 추정해야 한다. 예비조사에서 \(\sigma \approx 20\) MPa로 나타났다. 필요한 표본크기는?

풀이

임계값은 \(z_{0.025} = 1.96\)이다. 공식을 적용하면

\[ n = \left\lceil \left(\frac{1.96 \times 20}{5}\right)^2 \right\rceil = \left\lceil (7.84)^2 \right\rceil = \left\lceil 61.47 \right\rceil = 62 \]

적어도 관측값 62개가 필요하다. \(\square\)

연습문제 2. 어떤 조사자가 99% 신뢰수준에서 후보 지지율을 \(\pm 3\) 퍼센트포인트 이내로 추정하려 한다. 보수적인 접근으로 필요한 표본크기를 구하라.

풀이

\(E = 0.03\)이고 \(z_{0.005} = 2.576\)이면,

\[ n = \left\lceil \frac{(2.576)^2}{4 \times (0.03)^2} \right\rceil = \left\lceil \frac{6.6358}{0.0036} \right\rceil = \left\lceil 1843.3 \right\rceil = 1844 \]

조사자에게 적어도 응답자 1844명이 필요하다. \(\square\)

연습문제 3. 모든 \(p \in [0,1]\)에 대해 \(p(1-p) \le 1/4\)임을 보이고, 비율에서 \(p = 0.5\)가 가장 보수적인(가장 큰) 표본크기를 주는 이유를 설명하라.

풀이

\(f(p) = p(1-p) = p - p^2\)이라 하자. 미분하면 \(f'(p) = 1 - 2p\)이고 \(p = 1/2\)에서 0이 된다. \(f''(p) = -2 < 0\)이므로 \(p = 1/2\)은 \([0,1]\)에서의 전역 최댓값이며

\[ f(1/2) = \frac{1}{2}\left(1 - \frac{1}{2}\right) = \frac{1}{4} \]

표본크기 공식은 \(n = z_{\alpha/2}^2 \, p(1-p) / E^2\)이다. \(p(1-p)\)가 분자에 있으므로 \(p = 1/2\)에서의 최댓값이 가장 큰 \(n\)을 주며, 참 \(p\)가 무엇이든 충분한 정밀도를 보장한다. \(\square\)

연습문제 4. 처음에는 오차한계 \(\pm 4\)로 계획했다가 나중에 \(\pm 2\)가 필요하다고 결정했다면 필요한 표본크기는 몇 배가 되는가? 이 관계를 일반적으로 증명하라.

풀이

표본크기 공식은 \(n = (z_{\alpha/2} \sigma / E)^2\)이다. 오차한계 \(E_1\)에 대응하는 것을 \(n_1\), \(E_2\)에 대응하는 것을 \(n_2\)라 하자. 그러면

\[ \frac{n_2}{n_1} = \frac{(z_{\alpha/2} \sigma / E_2)^2}{(z_{\alpha/2} \sigma / E_1)^2} = \left(\frac{E_1}{E_2}\right)^2 \]

오차한계를 절반으로 하면(\(E_2 = E_1/2\)) \(n_2 / n_1 = 4\)이다. 필요한 표본크기가 네 배가 된다. \(E_1 = 4, E_2 = 2\)인 구체적인 경우:

\[ \frac{n_2}{n_1} = \left(\frac{4}{2}\right)^2 = 4 \]

\(\square\)

연습문제 5. 어떤 연구자가 계획용 추정값 \(p_0 = 0.30\)을 갖고 있으며 오차한계 \(\pm 0.04\)인 \(p\)의 95% 신뢰구간을 원한다. 계획용 추정값 공식과 보수적인 공식의 표본크기를 비교하라. 관측값을 몇 개나 아끼는가?

풀이

\(z_{0.025} = 1.96\), \(E = 0.04\)일 때:

보수적인 경우 (\(p = 0.5\)):

\[ n_{\text{cons}} = \left\lceil \frac{(1.96)^2}{4(0.04)^2} \right\rceil = \left\lceil \frac{3.8416}{0.0064} \right\rceil = \left\lceil 600.25 \right\rceil = 601 \]

계획용 추정값 (\(p_0 = 0.30\)):

\[ n_{\text{plan}} = \left\lceil \frac{(1.96)^2 \times 0.30 \times 0.70}{(0.04)^2} \right\rceil = \left\lceil \frac{3.8416 \times 0.21}{0.0016} \right\rceil = \left\lceil \frac{0.8067}{0.0016} \right\rceil = \left\lceil 504.2 \right\rceil = 505 \]

계획용 추정값을 쓰면 관측값 \(601 - 505 = 96\)개를 아낀다. \(\square\)

연습문제 6. \(\sigma\)를 모를 때는 \(z\)가 아니라 \(t\)를 써야 하는데, \(t\) 임계값이 \(n\)에 의존하므로 반복계산이 필요하다. 절차를 구현하고 \(z\) 공식과 비교하라.

풀이

문제. 필요한 \(n\)이

\[ n\ge\left(\frac{t_{n-1,0.975}\,\sigma}{E}\right)^2 \]

을 만족해야 하는데, 오른쪽에 \(n\)이 들어 있다.

해법 — 고정점 반복. \(z\) 공식의 답에서 출발해 수렴할 때까지 되풀이한다.

import numpy as np
from scipy import stats

def n_t(sigma, E, level=0.95):
    z = stats.norm.ppf(0.5 + level / 2)
    n = max(int(np.ceil((z * sigma / E)**2)), 2)
    for _ in range(100):
        nn = max(int(np.ceil((stats.t.ppf(0.5 + level / 2, n - 1)
                              * sigma / E)**2)), 2)
        if nn == n:
            return n
        n = nn
    return n

z = stats.norm.ppf(0.975)
print(f"{'σ':>5s} {'E':>5s} {'z 공식':>8s} {'t 반복':>8s} {'차이':>6s}")
for sigma, E in [(20, 5), (10, 2), (15, 10), (5, 4)]:
    n0 = int(np.ceil((z * sigma / E)**2))
    n1 = n_t(sigma, E)
    print(f"{sigma:5.0f} {E:5.0f} {n0:8d} {n1:8d} {n1 - n0:6d}")
    σ     E     z 공식     t 반복     차이
   20     5       62       64      2
   10     2       97       99      2
   15    10        9       11      2
    5     4        7        9      2

차이가 작다. \(n\)이 웬만큼만 되면 \(t\approx z\)이므로 두세 명 차이다.

\(n\)이 작을 때는 무시할 수 없다. \(\sigma=15\), \(E=10\)이면 9명이 아니라 11명으로 22% 늘고, \(\sigma=5\), \(E=4\)면 7명이 아니라 9명으로 29% 는다. 차이는 항상 두어 명이지만 \(n\)이 작을수록 비중이 커진다.

수렴은 보장되는가. \(n\mapsto\lceil (t_{n-1}\sigma/E)^2\rceil\)은 \(n\)에 대해 감소(약한 의미로)하고 아래로 유계이므로, 단조 수열이 되어 유한 번에 멈춘다. 위 예에서 모두 3~4회 안에 수렴했다.

더 중요한 것. 이 보정은 몇 명 수준이지만, 앞서 본 보증(assurance) 보정은 10~20% 수준이다. 어느 쪽이 실질적인지 분명하다. \(t\) 보정만 하고 \(S\)의 변동을 무시하면 일관성이 없다.

실무. 통계 소프트웨어의 표본크기 함수는 대개 \(t\) 반복을 내부에서 수행한다. 직접 계산할 때는 \(z\) 공식에 2~3명을 더하는 어림으로 충분한 경우가 많다.

연습문제 7. 유한모집단에서 필요한 표본크기를 구하는 공식을 유도하고, \(N\)에 따라 어떻게 변하는지 보여라.

풀이

유도. 비복원추출에서 \(\operatorname{Var}(\bar X)=\frac{\sigma^2}{n}\cdot\frac{N-n}{N-1}\)이므로, 오차한계 조건은

\[ z\sqrt{\frac{\sigma^2}{n}\cdot\frac{N-n}{N-1}}\le E \]

\(N-1\approx N\)으로 두고 \(n\)에 대해 풀면

\[ n\ \ge\ \frac{n_0}{1+\dfrac{n_0-1}{N}},\qquad n_0=\left(\frac{z\sigma}{E}\right)^2 \]
import numpy as np
from scipy import stats

z = stats.norm.ppf(0.975)
sigma, E = 15.0, 3.0
n0 = (z * sigma / E)**2
print(f"무한모집단 기준 n0 = {np.ceil(n0):.0f}")
print(f"{'N':>8s} {'필요 n':>8s} {'표집비율':>9s}")
for N in [200, 500, 1_000, 5_000, 100_000]:
    n = n0 / (1 + (n0 - 1) / N)
    print(f"{N:8d} {np.ceil(n):8.0f} {np.ceil(n) / N:9.3f}")
무한모집단 기준 n0 = 97
       N     필요 n      표집비율
     200       66     0.330
     500       81     0.162
    1000       88     0.088
    5000       95     0.019
  100000       96     0.001

모집단이 작으면 표본이 줄어든다. \(N=200\)이면 97명이 아니라 66명으로 충분하다.

\(N\)이 커지면 빠르게 포화한다. \(N=5{,}000\)에서 이미 95명이고, \(N=10\)만에서도 96명이다. \(N\to\infty\)의 극한 97에 거의 도달한다.

중요한 오해 바로잡기. "모집단이 크면 표본도 커야 한다"는 직관은 틀렸다. 위 표가 보여 주듯 \(N\)이 \(n_0\)의 20배를 넘으면 \(N\)은 사실상 무관하다.

  • 인구 5천만 명 나라와 인구 500만 명 나라에서 같은 정밀도를 얻는 데 같은 표본이면 된다.
  • 여론조사의 "1,000명이면 충분한가"라는 질문의 답이 여기 있다. 충분하다.

\(n_0>N\)이면 어떻게 되는가. 공식이 \(n<N\)을 보장한다. 극단적으로 \(n_0\to\infty\)면 \(n\to N\), 즉 전수조사다.

주의할 점.

  1. \(\sigma\)는 모집단 표준편차다. 작은 모집단에서는 이것도 추정하기 어렵다.
  2. 명부(표본틀)가 있어야 비복원추출이 가능하다. 없으면 FPC를 적용할 근거가 약하다.
  3. 비표집오차는 \(N\)과 무관하다. 작은 모집단에서 큰 표집비율을 쓰면 표집오차는 줄지만 측정오차는 그대로다.

연습문제 8. 비율의 표본크기를 윌슨 구간 기준으로 계산하면 왈드 공식과 얼마나 다른가? \(p\)가 작을 때를 특히 확인하라.

풀이

문제. 왈드 공식 \(n=z^2p(1-p)/E^2\)는 왈드 구간의 폭을 기준으로 한다. 그런데 실제로 쓸 구간이 윌슨이라면, 윌슨의 반폭이 \(E\) 이하가 되는 \(n\)을 찾아야 한다.

import numpy as np
from scipy import stats

z = stats.norm.ppf(0.975)

def wilson_half(n, p):
    d = 1 + z**2 / n
    return z / d * np.sqrt(p * (1 - p) / n + z**2 / (4 * n**2))

print(f"{'p':>6s} {'E':>6s} {'왈드':>7s} {'윌슨':>7s} {'차이':>7s}")
for p, E in [(0.50, 0.03), (0.10, 0.03), (0.05, 0.02), (0.02, 0.01)]:
    nw = int(np.ceil(z**2 * p * (1 - p) / E**2))
    n = 1
    while wilson_half(n, p) > E:
        n += 1
    print(f"{p:6.2f} {E:6.2f} {nw:7d} {n:7d} {n - nw:+7d}")
     p      E      왈드      윌슨      차이
  0.50   0.03    1068    1064      -4
  0.10   0.03     385     388      +3
  0.05   0.02     457     469     +12
  0.02   0.01     753     792     +39

\(p\)가 0.5 근처면 왈드가 오히려 약간 크다. 윌슨 구간이 그 영역에서 왈드보다 좁기 때문이다.

\(p\)가 작아질수록 윌슨이 더 많은 표본을 요구한다. \(p=0.02\)에서 39명(5%) 더 필요하다.

왜 그런가. 윌슨 구간의 반폭에는 \(z^2/(4n^2)\) 항이 있는데, \(p(1-p)/n\)이 작아질수록 이 항의 비중이 커진다. 이것은 경계 근처에서 구간이 쪼그라들지 않게 막는 장치이고, 그만큼 폭이 넓어진다.

더 큰 문제 — 폭 기준 자체가 부적절할 수 있다. \(p=0.02\)처럼 작으면 절대 오차한계보다 상대 정밀도가 관심사인 경우가 많다.

# 상대 정밀도 20% (즉 E = 0.2p) 를 원한다면
for p in [0.50, 0.10, 0.05, 0.02, 0.005]:
    E = 0.2 * p
    n = 1
    while wilson_half(n, p) > E:
        n += 1
    print(f"p={p:5.3f}  상대오차 20%를 위한 n = {n:6d}")
p=0.500  상대오차 20%를 위한 n =     93
p=0.100  상대오차 20%를 위한 n =    868
p=0.050  상대오차 20%를 위한 n =   1838
p=0.020  상대오차 20%를 위한 n =   4747
p=0.005  상대오차 20%를 위한 n =  19295

희귀한 사건일수록 상대 정밀도를 얻기가 어렵다. \(p=0.005\)면 2만 명 가까이 필요하다. 왈드 공식으로 정리하면 \(n\approx z^2(1-p)/(0.2^2p)=96(1-p)/p\)이고, \(p\)가 작으면 \(96/p\) 로 간단해진다. \(p=0.005\)에서 19,200으로 위 표와 잘 맞는다.

권고. \(\min(np,\ n(1-p))<10\)이 예상되면 왈드 공식을 쓰지 말고 위처럼 실제 쓸 구간으로 직접 계산한다. 계산 비용이 0이므로 어림에 의존할 이유가 없다.

연습문제 9. 표본크기와 신뢰수준·정밀도의 관계를 비용 곡선으로 정리하고, 실무에서 어디를 선택해야 하는지 논하라.

풀이
import numpy as np
from scipy import stats

sigma = 10.0
print(f"{'E':>6s} " + " ".join(f"{lv:>8.0%}" for lv in [0.80, 0.90, 0.95, 0.99]))
for E in [5.0, 3.0, 2.0, 1.5, 1.0, 0.5]:
    row = []
    for lv in [0.80, 0.90, 0.95, 0.99]:
        z = stats.norm.ppf(0.5 + lv / 2)
        row.append(f"{np.ceil((z * sigma / E)**2):8.0f}")
    print(f"{E:6.1f} " + " ".join(row))
     E      80%      90%      95%      99%
   5.0        7       11       16       27
   3.0       19       31       43       74
   2.0       42       68       97      166
   1.5       73      121      171      295
   1.0      165      271      385      664
   0.5      657     1083     1537     2654

두 방향의 비용.

  • 정밀도: \(n\propto E^{-2}\). \(E\)를 반으로 줄이면 4배.
  • 신뢰수준: \(n\propto z^2\). 95%에서 99%로 가면 1.73배.

정밀도가 훨씬 비싸다. 95%에서 \(E\)를 3에서 1.5로 줄이는 비용(43→171, 4배)이 \(E=3\)에서 신뢰수준을 80%에서 99%로 올리는 비용(19→74, 3.9배)과 비슷하다. 그런데 전자는 폭이 절반이 되는 실질적 개선이고, 후자는 문턱의 조정일 뿐이다.

실무 선택 지침.

  1. 신뢰수준은 95%를 기본으로. 관례를 벗어나면 설명 부담이 생긴다. 규제나 안전이 걸린 경우에만 99%.

  2. 정밀도는 의사결정에서 역산한다. "얼마나 정밀해야 결정이 달라지는가"를 묻는다. 무조건 좁은 구간이 좋은 것이 아니다.

  3. 정책 문턱이 50%이고 추정값이 55% 근처로 예상된다면, \(E=3\)%p면 충분하다(\(52\sim58\)이 모두 문턱 위).

  4. \(E=1\)%p를 위해 표본을 9배로 늘려도 결정은 바뀌지 않는다.

  5. 수확체감 지점을 찾는다. 95%에서 \(E=2\to1.5\)는 \(+74\)명, \(E=1.5\to1\)은 \(+214\)명, \(E=1\to0.5\)는 \(+1{,}152\)명이다. 곡선이 급해지는 곳에서 멈추는 것이 합리적이다.

  6. 비표집오차와 균형을 맞춘다. 무응답 편향이 2%포인트인데 표집오차를 0.5%포인트로 줄이는 것은 낭비다. 가장 큰 오차원을 먼저 줄인다.

의사결정이론적 관점. 엄밀하게는 표본 하나의 한계비용과 정보의 한계가치가 같아지는 곳이 최적이다. 정보의 가치를 계량할 수 있는 경우(품질검사, A/B 시험)에는 실제로 이렇게 푼다. 대부분의 학술연구에서는 그러기 어려워 관례와 예산으로 정한다.

연습문제 10. 고정 표본크기 설계의 대안인 순차설계와 적응설계를 소개하고, 각각의 이득과 대가를 적어라.

풀이

고정 설계의 한계. \(n\)을 미리 정하면

  • 효과가 예상보다 크면 필요 이상으로 오래 끌고,
  • 효과가 없으면 무의미한 연구를 끝까지 하고,
  • 가정(\(\sigma\), 기저율)이 틀리면 검정력이 어긋난다.

1 — 군순차 설계. 중간분석 시점을 미리 정하고, 각 시점의 임계값을 전체 \(\alpha\)가 유지되도록 조정한다.

경계 성격
포콕 모든 시점에 같은 임계값. 초기 중단이 쉽다
오브라이언-플레밍 초기에는 엄격, 후기에 완화. 최종 \(\alpha\)가 거의 온전
알파 소비함수(랜-드메츠) 시점 수를 미리 못 정해도 됨. 가장 유연
  • 이득: 효과가 크면 일찍 끝난다. 평균 표본크기가 고정 설계의 60~80%.
  • 대가: 최대 표본크기는 오히려 크다(5~15%). 중간분석의 운영 비용, 독립 감시위원회 필요.

2 — 무익성 중단. 효과가 없을 것이 분명해지면 조기 종료한다. 윤리적·경제적으로 중요하다.

  • 이득: 실패할 연구를 일찍 접는다.
  • 대가: 검정력이 조금 준다. 경계를 너무 공격적으로 잡으면 참 효과를 놓친다.

3 — 표본크기 재추정. 중간에 관측된 \(\sigma\)나 기저율로 \(n\)을 다시 계산한다.

  • 눈가림 방식(처리군 구분 없이 전체 분산만 봄): \(\alpha\) 팽창이 거의 없다. 안전하고 널리 쓰인다.
  • 비눈가림 방식(관측된 효과크기 사용): \(\alpha\) 팽창이 크므로 보정이 필수다. 규제기관이 신중하게 본다.

4 — 적응설계 일반. 용량 선택, 집단 선택, 무작위배정 비율 변경 등.

  • 이득: 자원을 유망한 팔에 집중. 학습과 확증을 한 연구에.
  • 대가: 설계·분석이 복잡하고, 사전에 모든 규칙을 명시해야 한다. 해석이 어려워지고 검토자를 설득하기 힘들다.

5 — 베이즈 적응. 사후분포로 중단·배정을 결정한다. 가능도원리상 중지규칙이 사후분포에 영향을 주지 않는다는 점이 우아하다. 다만 빈도주의 성질(제1종 오류율)은 모의실험으로 확인해야 하며, 규제 제출에는 이것이 요구된다.

언제 고정 설계가 나은가.

  • 연구 기간이 짧아 중간분석의 이득이 없을 때.
  • 결과 관측이 오래 걸려(생존 등) 중간에 볼 자료가 적을 때.
  • 운영 역량이 부족할 때. 잘못 운영된 적응설계는 고정 설계보다 나쁘다.
  • 단순성과 투명성이 중요할 때.

공통 원칙. 어떤 설계든 모든 규칙을 자료를 보기 전에 문서로 고정해야 한다. 적응설계의 유연성은 "나중에 마음대로 바꿔도 된다"는 뜻이 아니라, 미리 정해 둔 규칙에 따라 자동으로 조정된다는 뜻이다.


정리하며

표본크기 계산을 한자리에 모아 정리했다.

\[ n = \left\lceil\left(\frac{z_{\alpha/2}\,\sigma}{E}\right)^2\right\rceil \qquad n = \left\lceil\left(\frac{z_{\alpha/2}}{E}\right)^2 p(1-p)\right\rceil \]
  • 모든 계산이 같은 구조다. 원하는 정밀도(또는 검정력)를 정하고, 변동의 추정값을 넣고, \(n\) 에 대해 푼다.
  • 정밀도의 비용이 제곱으로 오른다. 이 하나의 사실이 연구 설계의 경제학을 지배한다.
  • 유한모집단 수정이 필요한 경우는 드물다. \(n/N\) 이 \(0.05\) 를 넘을 때만 \(n_{\text{조정}}=\frac{n}{1+(n-1)/N}\) 을 쓰며, 모집단이 크면 거의 영향이 없다.
  • 계산은 언제나 가정 위에 선다. \(\sigma\) 의 추정값이 틀리면 결과도 틀리므로, 여러 시나리오로 계산해 보고 보수적인 쪽을 택하는 것이 실무다.
  • 탈락률을 감안해 부풀린다. 예상 탈락률이 \(20\%\) 면 \(n/0.8\) 을 모집한다.

이것으로 8장이 끝난다. 점추정에 폭을 붙이는 법, 그 폭이 무엇을 뜻하는지, 모수별로 구간을 만드는 법, 그리고 원하는 폭을 얻기 위한 표본 설계까지 보았다.

다음 장 가설검정으로 넘어간다. 같은 자료를 두고 "범위"가 아니라 "이 값이 그럴듯한가" 를 묻는 방식이며, 두 물음이 쌍대 관계임을 거기서 확인한다.