원하는 오차한계를 위한 표본크기¶
개요¶
앞 절들에서 신뢰구간을 구성하면서 그 너비가 표본크기 \(n\)에 달려 있음을 보았다. 그러면 자연스럽게 계획 단계의 질문이 생긴다: 원하는 정밀도를 보장하려면 \(n\)이 얼마나 커야 하는가? 이 절에서는 평균과 비율 각각에 대해 오차한계 공식을 뒤집어 필요한 표본크기를 유도한다.
평균을 위한 표본크기¶
모평균의 신뢰구간에서 오차한계는 \(E = z_{\alpha/2} \cdot \sigma / \sqrt{n}\)이었다. 여기서
- \(z_{\alpha/2}\)는 신뢰수준 \(1 - \alpha\)에 대응하는 표준정규분포의 임계값,
- \(\sigma\)는 모표준편차(또는 그 믿을 만한 추정값),
- \(E\)는 원하는 오차한계(신뢰구간의 반너비)이다.
\(E = z_{\alpha/2} \cdot \sigma / \sqrt{n}\)을 \(n\)에 대해 풀면 최소 표본크기 공식을 얻는다:
\(n\)은 양의 정수여야 하므로, 오차한계가 \(E\)를 넘지 않도록 계산값을 항상 올림한다.
풀이 보기: 평균 키의 추정
한 연구자가 어느 도시 성인 남성의 평균 키를 오차한계가 최대 \(E = 1\) cm인 95% 신뢰구간으로 추정하려 한다. 선행 연구에서 모표준편차는 \(\sigma = 7\) cm로 추정된다. 95% 신뢰수준에서 \(z_{0.025} = 1.96\)이다. 필요한 표본크기는
올림하면 연구자는 참가자 \(n = 189\)명이 필요하다.
비율을 위한 표본크기¶
비율의 신뢰구간에서 오차한계는 \(E = z_{\alpha/2} \sqrt{p^*(1 - p^*) / n}\)이며, 여기서 \(p^*\)는 모비율에 대한 계획값이다. \(n\)에 대해 풀면:
여기서 \(p^*\)는 참 비율 \(p\)에 대한 사전 추정값이나 최선의 추측이다. 사전 추정값이 없으면 \(p^* = 0.5\)로 두는 것이 \(p^*(1 - p^*)\)를 최대화하므로 가장 보수적인(가장 큰) 표본크기를 준다. 평균의 경우와 마찬가지로 항상 다음 정수로 올림한다.
풀이 보기: 유권자 지지율의 추정
한 여론조사 회사가 어떤 안건을 지지하는 유권자의 비율을 99% 신뢰구간, 오차한계 \(E = 0.03\)(3 퍼센트포인트)으로 추정하려 한다. \(p\)의 사전 추정값이 없으므로 \(p^* = 0.5\)를 쓴다. 99% 수준에서 \(z_{0.005} = 2.576\)이다. 필요한 표본크기는
올림하면 응답자 \(n = 1844\)명이 필요하다.

공식 \(n = (z_{\alpha/2}\sigma/E)^2\)에서 \(E\)가 분모에 제곱으로 들어간다는 사실이 실무에서 무엇을 뜻하는지는 그림으로 볼 때 가장 분명하다. 왼쪽은 위 키 보기(\(\sigma = 7\), 95%)의 곡선이다. 오차한계 \(\pm 4\) cm로 만족한다면 12명이면 되고, \(\pm 2\) cm를 원하면 48명, \(\pm 1\) cm면 189명, \(\pm 0.5\) cm면 753명이 필요하다. \(E\)를 반으로 줄일 때마다 \(n\)이 네 배가 된다. 주황색 화살표 세 개가 모두 같은 "4배"인 것이 역제곱 법칙의 모습이다.
오른쪽은 같은 법칙을 예산 쪽에서 본 것이다. 이번에는 \(n\)을 정하고 얻어지는 \(E\)를 묻는다. 비율 조사(\(p = 0.5\), 95%)에서 400명이면 \(\pm 4.90\)%p, 800명이면 \(\pm 3.46\)%p다. 돈을 두 배 썼는데 오차한계는 절반이 아니라 \(1/\sqrt{2} = 0.707\)배, 곧 29%만 줄었다. 1600명으로 또 두 배를 써도 \(\pm 2.45\)%p에 그친다. 곡선이 오른쪽으로 갈수록 납작해지는 것이 바로 이 수확 체감이다.
여기서 나오는 실무적 태도는 두 가지다. 첫째, 목표 오차한계를 정할 때 한 자리 더 욕심내는 비용을 미리 계산하라. 여론조사가 대개 1,000명 남짓에서 멈추는 것은 \(\pm 3\)%p가 충분해서라기보다 \(\pm 1\)%p가 9배 비싸기 때문이다. 둘째, 이미 표본이 큰 상태에서 표본을 더 늘리는 것은 가장 비싼 개선 방법이다. 3,200명에서 시작하면 한 명을 더 모아 얻는 정밀도가 거의 0이다. 그 단계에서는 측정을 정밀하게 하거나(\(\sigma\)를 줄이거나) 층화 같은 설계로 효율을 올리는 쪽이 훨씬 싸다.
한 가지 덧붙이면, 이 곡선들은 모두 표집오차만 다룬다. \(n\)을 3,200명으로 키워 오차한계를 \(\pm 1.73\)%p로 만들어도, 응답률이 낮아 생긴 무응답 편향이 2%p라면 그 편향은 조금도 줄지 않는다. \(n\)을 늘려 줄어드는 것은 곡선이 그리는 부분뿐이다.
연습문제¶
연습문제 1. 어떤 조사자가 95% 신뢰수준에서 오차한계 3 퍼센트포인트로 모비율을 추정하려 한다. 보수적인 추정값 \(p = 0.5\)를 써서 필요한 표본크기를 구하라.
풀이
비율의 오차한계는 \(E = z_{\alpha/2}\sqrt{p(1-p)/n}\)이다. \(n\)에 대해 풀면:
\(z_{0.025} = 1.96\), \(p = 0.5\)(\(p(1-p) = 0.25\)를 최대화), \(E = 0.03\)이면:
올림하면 응답자 \(n = 1068\)명이 필요하다.
연습문제 2. 어떤 연구자가 99% 신뢰수준에서 오차한계 \(E = 2\) 단위로 모평균을 추정하려 한다. 예비조사에서 \(\sigma \approx 10\)으로 나타났다. 필요한 표본크기를 구하라.
풀이
평균의 오차한계는 \(E = z_{\alpha/2} \cdot \sigma/\sqrt{n}\)이다. 풀면:
\(z_{0.005} = 2.576\), \(\sigma = 10\), \(E = 2\)이면:
올림하면 \(n = 166\)이다. 예비조사의 \(\sigma\) 추정값이 불확실하다면 더 큰 \(\sigma\)를 쓰는 것이 보수적인 접근이다.
연습문제 3. 오차한계를 절반으로 줄이려면 왜 표본크기가 네 배 필요한지 설명하라. 오차한계 공식에서 이 관계를 유도하라.
풀이
오차한계는 \(E = z_{\alpha/2}\sigma/\sqrt{n}\)이므로 \(n = z_{\alpha/2}^2\sigma^2/E^2\)이다.
\(n \propto 1/E^2\)이므로 표본크기와 오차한계의 관계는 역제곱 법칙이다. \(E' = E/2\)(오차한계 절반)를 원하면:
이 "수확 체감" 성질 때문에 정밀도를 높일수록 비용이 점점 더 커진다. \(E = 4\)에서 \(E = 2\)로 가면 \(n\)이 네 배가 되고, \(E = 2\)에서 \(E = 1\)로 가면 또 네 배가 된다. 이는 조사 설계의 근본적인 제약이며, 극도로 정밀한 추정에 아주 큰 표본이 필요한 이유이다.
연습문제 4. 어떤 회사가 조사 \(n = 400\)건의 예산을 가지고 있다. 95% 신뢰수준에서 모비율에 대해 달성 가능한 최선의 오차한계는 얼마인가? 예산이 두 배가 되어 \(n = 800\)이 되면 오차한계는 얼마나 줄어드는가?
풀이
보수적인 \(p = 0.5\)를 쓰면:
\(n = 400\)일 때:
\(n = 800\)일 때:
표본크기를 두 배로 하니 오차한계가 4.9%에서 3.5%로 줄었으며, 감소 인자는 \(\sqrt{2} \approx 1.414\)이다. 오차한계는 \(1/\sqrt{n}\)에 비례해 줄어들므로 \(n\)을 두 배로 해도 정밀도는 50%가 아니라 약 29%만 좋아진다.
연습문제 5. 표본크기 공식은 \(\sigma\)를 아는 것처럼 다룬다. 실제로는 \(S\)로 구간을 만들므로 폭이 목표를 넘을 확률이 상당하다. 이를 계산하고 "보증(assurance)"을 넣어 \(n\)을 고쳐라.
풀이
문제. \(\sigma=10\), 목표 오차한계 \(E=2\), 95% 신뢰수준이면 공식은
을 준다. 그런데 실제 반폭은 \(t_{n-1}S/\sqrt n\)이고 \(S\)가 확률변수다. \(S\)가 \(\sigma\)보다 크게 나오면 목표를 놓친다.
달성확률. \((n-1)S^2/\sigma^2\sim\chi^2_{n-1}\)이므로
import numpy as np
from scipy import stats
sigma, E = 10.0, 2.0
z = stats.norm.ppf(0.975)
n0 = int(np.ceil((z * sigma / E)**2))
print(f"σ를 아는 경우의 n = {n0}")
def assurance(n):
t = stats.t.ppf(0.975, n - 1)
thr = (n - 1) * n * E**2 / (t**2 * sigma**2)
return stats.chi2.cdf(thr, n - 1)
for n in [n0, 106, 116]:
print(f" n = {n:3d} 폭 목표 달성확률 {assurance(n):.4f}")
print()
for target in [0.50, 0.80, 0.90, 0.95]:
n = next(m for m in range(n0, 3 * n0) if assurance(m) >= target)
print(f"보증 {target:.0%} → n = {n} (기본 대비 +{n - n0}명)")
σ를 아는 경우의 n = 97
n = 97 폭 목표 달성확률 0.4768
n = 106 폭 목표 달성확률 0.7257
n = 116 폭 목표 달성확률 0.9117
보증 50% → n = 98 (기본 대비 +1명)
보증 80% → n = 110 (기본 대비 +13명)
보증 90% → n = 116 (기본 대비 +19명)
보증 95% → n = 120 (기본 대비 +23명)
\(n=97\)로 계획하면 목표를 달성할 확률이 절반도 안 된다(0.477).
왜 그런가. 공식은 "\(S\)가 정확히 \(\sigma\)와 같다면"을 전제한다. \(S\)의 분포는 \(\sigma\) 주위에 퍼져 있고, 게다가 \(t>z\)이므로 두 가지가 모두 불리한 쪽으로 작용한다. 결과적으로 달성확률이 50% 근처가 된다.
보증(assurance)이란. "목표 정밀도를 달성할 확률"을 미리 정하는 것이다. 90%를 원하면 표본을 20% 늘린다.
검정력 계산에도 같은 문제가 있다. 검정력 80%로 계획했는데 \(\sigma\)를 \(S\)로 추정했다면, 실제 검정력의 기댓값은 80%가 아니다. 베이즈적으로 \(\sigma\)의 불확실성을 적분한 "기대 검정력"을 쓰는 것이 더 정직하다.
실무 권고.
- 보증 80~90%를 기본으로 삼는다. 비용이 크게 늘지 않는다(위 예에서 13~19%).
- \(\sigma\)의 출처와 불확실성을 명시한다. 예비연구 \(n\)이 작으면 \(\sigma\) 자체가 매우 불안정하다.
- 내부 예비추정. 자료를 모으면서 \(S\)를 확인하고 \(n\)을 조정하는 설계도 있다. 다만 \(\alpha\) 보정이 필요하다.
연습문제 6. 계획에 쓴 \(\sigma\)가 틀렸을 때 표본크기가 얼마나 어긋나는지 정량화하고, 어느 방향의 실수가 더 위험한지 논하라.
풀이
\(n\propto\sigma^2\)이다. 따라서 \(\sigma\)를 \(f\)배로 잘못 잡으면 \(n\)이 \(f^2\)배 어긋난다.
import numpy as np
from scipy import stats
sigma_true, E = 10.0, 2.0
z = stats.norm.ppf(0.975)
n_true = int(np.ceil((z * sigma_true / E)**2))
print(f"{'가정한 σ':>9s} {'계획 n':>8s} {'참 n 대비':>10s} {'실제 오차한계':>13s}")
for f in [0.70, 0.85, 1.00, 1.20, 1.50]:
n = int(np.ceil((z * sigma_true * f / E)**2))
actual_E = z * sigma_true / np.sqrt(n)
print(f"{sigma_true * f:9.1f} {n:8d} {n / n_true:10.2f} {actual_E:13.3f}")
가정한 σ 계획 n 참 n 대비 실제 오차한계
7.0 48 0.49 2.829
8.5 70 0.72 2.343
10.0 97 1.00 1.990
12.0 139 1.43 1.663
15.0 217 2.24 1.331
과소추정이 훨씬 위험하다.
- \(\sigma\)를 30% 작게 잡으면 표본이 절반(48명)이 되고, 실제 오차한계가 2.83으로 목표의 1.4배가 된다. 연구가 목표를 달성하지 못한다.
- 50% 크게 잡으면 표본이 2.24배가 되어 비용이 늘지만, 결과는 목표보다 정밀하다.
비대칭의 이유. 표본이 모자라면 연구 전체가 결론을 내지 못한다. 표본이 남으면 돈을 더 쓴 것뿐이다. 게다가 부족한 표본은 사후에 고칠 수 없다.
\(\sigma\)를 어디서 얻는가.
| 출처 | 신뢰도 | 주의 |
|---|---|---|
| 같은 집단의 선행연구 | 높음 | 측정 방법이 같은지 |
| 다른 집단의 선행연구 | 중간 | 이질성이 크면 위험 |
| 예비연구(\(n<30\)) | 낮음 | \(S\)의 변동이 크다 |
| 범위 \(/4\) 어림 | 낮음 | 정규 가정 필요 |
| 전문가 추측 | 매우 낮음 | 대체로 과소추정 |
예비연구의 함정. \(n=20\)인 예비연구에서 \(S\)를 얻었다면, 앞서 본 대로 \(S^2\)의 95% 구간이 \((0.58s^2,\ 2.13s^2)\)다. \(\sigma\)의 추정에 40%의 불확실성이 있고, 이것이 \(n\)에서는 두 배로 증폭된다.
권고.
- 보수적으로 잡는다. \(\sigma\)의 신뢰구간 상한이나 그에 가까운 값을 쓴다.
- 민감도 표를 만든다. "σ가 8이면 70명, 10이면 97명, 12면 139명"을 계획서에 함께 적는다.
- 내부 예비추정을 계획에 넣는다. 중간에 \(S\)를 확인하고 조정하는 절차를 미리 정해 두면, 잘못된 가정에 묶이지 않는다.
연습문제 7. 무응답과 설계효과를 반영해 실제 모집 규모를 계산하라. 응답률 65%, 설계효과 1.8, 목표 오차한계 3%포인트인 조사의 경우를 다루어라.
풀이
세 단계로 곱한다.
import numpy as np
from scipy import stats
z = stats.norm.ppf(0.975)
E, p, deff, resp = 0.03, 0.5, 1.8, 0.65
n_srs = z**2 * p * (1 - p) / E**2
n_eff = n_srs * deff
n_con = n_eff / resp
print(f"단순임의추출 필요 표본 {np.ceil(n_srs):6.0f}명")
print(f"설계효과 {deff} 반영 {np.ceil(n_eff):6.0f}명")
print(f"응답률 {resp:.0%} 반영 {np.ceil(n_con):6.0f}명 ← 실제 접촉 규모")
print(f"총 배율 {n_con / n_srs:.2f}배")
단순임의추출 필요 표본 1068명
설계효과 1.8 반영 1921명
응답률 65% 반영 2955명 ← 실제 접촉 규모
총 배율 2.77배
교과서 공식의 1,068명이 실제로는 2,955명이 된다. 거의 세 배다.
각 요인의 성격이 다르다.
| 요인 | 무엇을 하는가 | 고칠 수 있나 |
|---|---|---|
| 설계효과 | 정보량을 줄임 | 설계를 바꾸면(군집 크기 축소) |
| 무응답 | 표본크기를 줄임 | 접촉 노력으로 부분적으로 |
무응답의 더 큰 문제 — 편향. 위 계산은 무응답이 무작위라고 가정한다. 실제로는 응답자와 비응답자가 다른 경우가 많고, 그때는
만큼 치우친다. 응답률 65%면 비응답자가 35%이고, 두 집단의 차이가 10%포인트만 되어도 편향이 3.5%포인트다. 이는 표집오차 3%포인트보다 크다.
핵심. 표본을 늘려도 무응답 편향은 줄지 않는다. 표집오차는 \(1/\sqrt n\)으로 줄지만 편향은 그대로다. 1만 명을 조사해도 응답률이 낮으면 1천 명 조사보다 나을 것이 없다.
대처.
- 응답률 자체를 높인다. 반복 접촉, 다중 방식, 보상.
- 사후층화 가중. 인구 특성으로 가중치를 조정한다. 다만 가중이 분산을 키운다(설계효과가 더 커진다).
- 비응답 추적조사. 비응답자 일부를 집중 접촉해 차이를 추정한다.
- 응답률을 반드시 보고한다. AAPOR 기준으로 계산해 명시한다.
보고 예. "표본 1,921명(접촉 2,955명, 응답률 65.0%), 설계효과 1.8, 오차한계 \(\pm\)3.0%포인트(95% 신뢰수준). 표집오차 외의 오차는 반영되지 않았다."
연습문제 8. 여러 목표가 있는 조사에서 표본크기를 어떻게 정하는가? 전체 오차한계 3%p, 세 하위집단 각각 5%p를 원하는 경우를 다루어라.
풀이
원칙 — 가장 까다로운 요구가 결정한다. 각 목표에 필요한 \(n\)을 모두 계산하고 최대를 취한다.
import numpy as np
from scipy import stats
z = stats.norm.ppf(0.975)
def n_for(E, p=0.5):
return z**2 * p * (1 - p) / E**2
# 하위집단 비중이 (0.50, 0.30, 0.20)
shares = np.array([0.50, 0.30, 0.20])
n_sub = n_for(0.05)
n_total_from_sub = n_sub / shares
print(f"전체 3%p 요구 → n = {np.ceil(n_for(0.03)):6.0f}")
print(f"하위집단 5%p 요구 → 집단당 n = {np.ceil(n_sub):6.0f}")
for s, nt in zip(shares, n_total_from_sub):
print(f" 비중 {s:.2f}인 집단을 위해 전체 n = {np.ceil(nt):6.0f}")
print(f"\n비례배분으로 모두 만족 → n = {np.ceil(n_total_from_sub.max()):6.0f}")
# 불비례배분: 작은 집단을 과대표집
n_alloc = np.full(3, np.ceil(n_sub))
# n_sub 를 그대로 찍으면 384.146 이 반올림되어 384 로 나오는데, 배분에 쓴
# 것은 올림한 385 다. 그러면 384 x 3 = 1152 로 옆의 합 1155 와 어긋난다.
print(f"불비례배분(집단당 {n_alloc[0]:.0f}명씩) → n = {n_alloc.sum():.0f}")
w = shares
var_st = (w**2 * 0.25 / n_alloc).sum()
print(f" 이때 전체 추정의 오차한계 {z * np.sqrt(var_st):.4f}")
전체 3%p 요구 → n = 1068
하위집단 5%p 요구 → 집단당 n = 385
비중 0.50인 집단을 위해 전체 n = 769
비중 0.30인 집단을 위해 전체 n = 1281
비중 0.20인 집단을 위해 전체 n = 1921
비례배분으로 모두 만족 → n = 1921
불비례배분(집단당 385명씩) → n = 1155
이때 전체 추정의 오차한계 0.0308
비례배분이면 1,921명이 필요하다. 가장 작은 집단(20%)에서 385명을 얻으려면 전체를 크게 잡아야 하기 때문이다.
불비례배분이 훨씬 효율적이다. 세 집단에서 385명씩 뽑으면 총 1,155명으로 하위집단 요구를 모두 만족하고, 전체 추정의 오차한계도 3.08%p로 목표 3%p에 거의 닿는다. 비례배분의 60% 규모다.
왜 그런가. 작은 집단을 과대표집하면 그 집단의 추정이 정밀해지고, 전체 추정은 가중으로 바로잡는다. 앞서 본 층화추정량 \(\sum W_h\hat p_h\)를 쓴다.
대가. 불비례배분은 전체 추정의 설계효과를 1보다 크게 만든다. 위 예에서
다. 즉 전체 추정에서는 1,155명이 약 1,014명어치의 정보밖에 못 낸다. 하위집단의 정밀도를 전체의 정밀도와 맞바꾼 것이다. 전체 3%p를 꼭 지켜야 한다면 불비례배분을 조금 완화해 \(n\)을 1,250명쯤으로 늘리면 된다.
실무 절차.
- 목표를 우선순위로 정렬한다. 무엇이 주 분석이고 무엇이 부수적인가.
- 주 분석의 요구를 반드시 만족시키고, 나머지는 가능한 범위에서.
- 하위집단 분석은 탐색적이라고 미리 선언하면 요구를 낮출 수 있다.
- 예산 제약에서 역산한다. "\(n=1200\)으로 할 수 있는 것"을 계산해 이해관계자와 협의한다.
연습문제 9. 사후 검정력(관측된 효과로 계산한 검정력)이 왜 쓸모없는지 설명하고, 대신 무엇을 보고해야 하는지 밝혀라.
풀이
사후 검정력이란. 연구가 끝난 뒤 관측된 효과크기를 참값으로 놓고 계산한 검정력이다. "\(p=0.08\)로 유의하지 않았는데, 검정력이 35%밖에 안 되어서 그렇다"는 식으로 쓰인다.
왜 쓸모없는가.
1 — \(p\)-값의 단조함수일 뿐이다. 관측된 효과로 계산하면 사후 검정력이 \(p\)-값만으로 결정된다.
import numpy as np
from scipy import stats
z_a = stats.norm.ppf(0.975)
print(f"{'p-값':>8s} {'관측 z':>8s} {'사후 검정력':>12s}")
for p in [0.01, 0.05, 0.10, 0.20, 0.50, 0.80]:
zobs = stats.norm.isf(p / 2)
power = stats.norm.sf(z_a - zobs) + stats.norm.cdf(-z_a - zobs)
print(f"{p:8.2f} {zobs:8.3f} {power:12.4f}")
p-값 관측 z 사후 검정력
0.01 2.576 0.7310
0.05 1.960 0.5000
0.10 1.645 0.3765
0.20 1.282 0.2493
0.50 0.674 0.1035
0.80 0.253 0.0574
\(p=0.05\)면 사후 검정력이 정확히 50%다. 언제나 그렇다. \(p\)-값을 알면 사후 검정력을 알 수 있고 그 반대도 마찬가지이므로, 새로운 정보가 하나도 없다.
2 — 순환논법이다. "검정력이 낮아서 유의하지 않았다"는 말은 "\(p\)가 커서 \(p\)가 컸다"와 같다.
3 — 논리가 거꾸로다. 검정력은 설계 단계의 개념이다. 자료를 보기 전에 "이 정도 효과가 있다면 얼마나 잡아낼 수 있는가"를 묻는다. 자료를 본 뒤에는 불확실성이 이미 자료에 표현되어 있다.
대신 무엇을 보고할 것인가.
1 — 신뢰구간. 이것이 답이다. 구간의 폭이 정밀도를, 구간의 위치가 배제된 값들을 말해 준다.
- 구간이 좁고 0을 담으면 → 효과가 작다는 증거
- 구간이 넓고 0을 담으면 → 결론을 내기에 자료가 부족
같은 \(p>0.05\)라도 이 둘은 완전히 다른 상황이고, 구간은 이를 구별해 준다. 사후 검정력은 구별하지 못한다.
2 — 실무적으로 의미 있는 값이 구간에 있는지. "임상적으로 중요한 최소 차이 5단위가 구간 \((-1.2,\ 3.8)\) 밖이므로, 의미 있는 효과는 배제된다."
3 — 동등성 검정. 앞서 본 TOST로 "효과가 없다"를 적극적으로 주장한다.
4 — 설계 단계의 검정력. 계획서에 적은 검정력과 그 근거를 밝힌다. 이것은 유용하다.
예외적으로 유용한 경우. 관측된 효과가 아닌 다른 값에서 계산한 검정력은 의미가 있다. "우리가 관심 있는 5단위 차이에 대해 이 연구의 검정력은 40%였다"는 진술은 설계의 한계를 정직하게 드러낸다. 이것은 사후 검정력이 아니라 설계 검정력을 사후에 보고하는 것이다.
연습문제 10. 표본크기 계산의 결과를 연구계획서에 어떻게 적어야 하는지 정리하라.
풀이
반드시 담아야 할 요소.
-
주 결과변수. 무엇을 기준으로 계산했는가. 여러 결과가 있다면 어느 것이 주 결과인가.
-
목표. 오차한계인가 검정력인가. 검정력이라면 탐지하려는 효과크기와 그 임상적·실무적 근거.
-
가정한 값들. \(\sigma\), \(p\), 기저율, 상관 등과 그 출처(선행연구의 인용, 예비연구의 요약).
-
오류율. \(\alpha\), 단측/양측, 다중비교 보정 여부.
-
손실 요인. 탈락률, 무응답률, 설계효과, 부적격률.
-
최종 숫자. 계산 \(n\) → 손실 반영 \(n\) → 실제 모집 목표.
-
민감도. 가정이 틀렸을 때의 결과.
-
사용한 방법이나 소프트웨어. 공식 또는 함수 이름, 버전.
좋은 서술의 예.
주 결과변수는 12주 시점의 HbA1c 변화량이다. 선행연구(김 외, 2023, \(n=84\))에서 표준편차가 0.9%로 보고되었다. 임상적으로 의미 있는 최소 차이를 0.5%로 정했다(당뇨학회 지침). 양측 \(\alpha=0.05\), 검정력 80%에서 집단당 52명이 필요하다(비중심 \(t\) 분포로 정확히 계산; 정규근사는 51명). 예상 탈락률 15%를 반영해 집단당 62명, 총 124명을 모집한다.
민감도: 표준편차가 1.1%라면 집단당 77명(모집 91명)이 필요하다. 중간분석 시점에 관측된 표준편차를 확인하고, 계획보다 20% 이상 크면 운영위원회가 표본 확대를 검토한다.
나쁜 서술의 예와 문제점.
| 서술 | 문제 |
|---|---|
| "표본크기는 선행연구를 참고해 100명으로 정했다" | 계산이 없다 |
| "검정력 80%를 위해 \(n=64\)" | 효과크기와 \(\sigma\)가 없다 |
| "\(d=0.5\)(중간 효과)를 탐지하기 위해" | 왜 0.5인가. 관례적 기준일 뿐 근거가 아니다 |
| "예산 제약으로 50명" | 정직하지만, 그 경우 탐지 가능한 최소 효과를 함께 적어야 한다 |
효과크기의 근거가 핵심이다. "코헨의 중간 효과"는 근거가 아니다. 그 분야에서 무엇이 의미 있는 차이인지를 임상적·실무적으로 정당화해야 한다. 이것이 없으면 표본크기 계산 전체가 자의적이다.
예산이 먼저 정해진 경우. 역방향으로 계산해 탐지 가능한 최소 효과나 달성 가능한 오차한계를 보고한다.
예산상 집단당 30명이 가능하다. 이 규모에서 양측 \(\alpha=0.05\), 검정력 80%로 탐지 가능한 최소 차이는 0.66%다. 목표하는 0.5%보다 크므로, 이 연구는 탐색적으로 위치시키고 효과크기 추정에 초점을 둔다.
정직하게 한계를 적는 것이 계산을 꾸미는 것보다 낫다. 검토자는 대체로 이를 알아본다.
정리하며¶
표본크기 공식은 오차한계 공식을 \(n\) 에 대해 푼 것이다.
- \(E\) 가 분모에서 제곱된다. 오차한계를 절반으로 줄이려면 표본이 네 배다. \(1/\sqrt n\) 관계를 뒤집은 결과이며, 정밀도의 비용이 왜 급격히 오르는지를 보여 준다.
- 평균에서는 \(\sigma\) 를 미리 알아야 한다. 선행 연구, 예비 조사, 또는 범위를 4 로 나눈 어림값을 쓴다. 자료를 모으기 전에 필요한 값이라는 점이 이 계산의 근본적 난점이다.
- 비율에서는 \(p=0.5\) 가 안전한 선택이다. \(p(1-p)\) 가 거기서 최대이므로 가장 보수적인, 즉 가장 큰 \(n\) 을 준다. 사전 정보가 없으면 이것을 쓴다.
- 언제나 올림한다. 계산이 \(n=384.2\) 를 주면 \(385\) 를 쓴다.
- 여론조사의 "오차한계 \(\pm3\%p\)"가 여기서 나온다. \(p=0.5\), \(95\%\) 수준이면 \(n\approx1067\) 이며, 전국 조사든 도시 조사든 같다. 모집단 크기가 들어오지 않는다.
다음 절 두 집단 비교를 위한 표본크기로 넘어간다. 추정이 아니라 검정을 목표로 하면 검정력이 계산에 들어온다.