콘텐츠로 이동

두 집단 비교를 위한 표본크기

개요

두 집단을 비교하는 자료를 모으기 전에 연구자는 각 집단에 몇 명을 등록할지 정해야 한다. 피험자가 너무 적으면 검정력이 낮아 실제 처리 효과를 놓칠 수 있고, 그러면 시간과 자원을 낭비하게 된다. 너무 많으면 비용이 크고 불필요하게 많은 참가자를 열등한 처리에 노출시킬 수 있다. 표본크기 공식은 원하는 검정력, 유의수준, 의미 있는 최소 효과크기를 집단당 구체적인 관측값 수로 옮겨 준다. 이 공식들은 앞 장에서 소개한 제1종 오류율 \(\alpha\), 제2종 오류율 \(\beta\), 검정력 \(1 - \beta\)와 직접 연결된다.

두 표본 평균의 비교

직관

각 집단에 몇 개의 관측값이 필요한지는 세 가지 요인이 결정한다. 첫째, 효과가 클수록 탐지하기 쉽다: 잡음에 비해 두 집단 평균의 참 차이가 크면 관측값이 적어도 된다. 둘째, 자료의 변동이 클수록 관측값이 많이 필요하다: \(\sigma\)가 크면 신호를 잡음과 구분하기 어렵다. 셋째, 오류를 엄격히 통제할수록 관측값이 많이 든다: \(\alpha\)를 작게(거짓 양성을 적게) 하거나 검정력 \(1 - \beta\)를 높게(놓치는 효과를 적게) 하면 둘 다 필요한 표본크기가 늘어난다.

공식

\(H_0\colon \mu_1 = \mu_2\)를 \(H_1\colon \mu_1 \neq \mu_2\)에 대해 양측으로 검정한다고 하고, 다음을 가정하자:

  • 모분산이 같음: \(\sigma_1^2 = \sigma_2^2 = \sigma^2\)
  • 집단 크기가 같음: \(n_1 = n_2 = n\)
  • 정규모집단(또는 중심극한정리가 통할 만큼 큰 표본)

유의수준 \(\alpha\)에서 검정력 \(1 - \beta\)로 차이 \(\delta = |\mu_1 - \mu_2|\)를 탐지하는 데 필요한 집단당 표본크기는

\[ n = \frac{2(z_{\alpha/2} + z_\beta)^2 \sigma^2}{\delta^2} \]

여기서 \(z_{\alpha/2} = \mathcal{N}^{-1}(1 - \alpha/2)\)는 표준정규의 상위 \(\alpha/2\) 분위수이고 \(z_\beta = \mathcal{N}^{-1}(1 - \beta)\)는 상위 \(\beta\) 분위수이다. 분자는 제1종·제2종 오류 요구의 엄격함을 함께 반영하고, 분모는 효과크기의 제곱 — 우리가 탐지하려는 신호 — 이다.

풀이 보기

한 임상시험이 혈압을 낮추는 새 약을 위약과 비교한다. 선행 연구에서 공통 표준편차는 \(\sigma = 12\) mmHg로 나타났다. 연구진은 유의수준 5%(\(\alpha = 0.05\))에서 검정력 80%(\(\beta = 0.20\))로 \(\delta = 5\) mmHg의 차이를 탐지하고자 한다.

임계값은 \(z_{0.025} = 1.96\), \(z_{0.20} = 0.842\)이다. 대입하면:

\[ n = \frac{2(1.96 + 0.842)^2 (12)^2}{(5)^2} = \frac{2(2.802)^2 (144)}{25} = \frac{2(7.851)(144)}{25} = \frac{2261.1}{25} \approx 90.4 \]

올림하면 이 시험에는 집단당 91명(총 182명)이 필요하다.

항상 올림하라

공식이 실수를 주므로 항상 다음 정수로 올림한다. 내림하면 검정력이 목표보다 살짝 낮아진다.

두 표본 비율의 비교

직관

두 비율의 비교도 같은 논리를 따르지만, 비율의 분산 \(p(1-p)\)가 \(p\) 자체에 의존한다. 여기서 미묘한 점이 생긴다: 귀무가설 아래(\(p_1 = p_2\))의 분산과 대립가설 아래(\(p_1 \neq p_2\))의 분산이 다르다. 표본크기 공식은 둘 다 반영해야 한다.

공식

집단 크기가 같은(\(n_1 = n_2 = n\)) 상황에서 \(H_0\colon p_1 = p_2\)를 \(H_1\colon p_1 \neq p_2\)에 대해 양측으로 검정할 때:

\[ n = \frac{\bigl(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})} + z_\beta\sqrt{p_1(1-p_1) + p_2(1-p_2)}\bigr)^2}{(p_1 - p_2)^2} \]

여기서 \(\bar{p} = (p_1 + p_2)/2\)는 가설상 두 비율의 평균이다. 제곱근 안의 첫 항은 \(H_0\) 아래(두 비율이 모두 \(\bar{p}\)인 경우)의 합동분산을, 둘째 항은 \(H_1\) 아래의 각각의 분산을 쓴다.

풀이 보기

한 마케팅 팀이 새 웹사이트 디자인(\(p_1 = 0.12\))과 현재 디자인(\(p_2 = 0.08\))의 전환율을 비교하려 한다. 유의수준 5%에서 검정력 90%(\(\beta = 0.10\))를 원한다.

먼저 합동 비율을 계산한다: \(\bar{p} = (0.12 + 0.08)/2 = 0.10\).

임계값은 \(z_{0.025} = 1.96\), \(z_{0.10} = 1.282\)이다. 분자는

\[ \bigl(1.96\sqrt{2(0.10)(0.90)} + 1.282\sqrt{(0.12)(0.88) + (0.08)(0.92)}\bigr)^2 \]
\[ = \bigl(1.96\sqrt{0.18} + 1.282\sqrt{0.1056 + 0.0736}\bigr)^2 \]
\[ = \bigl(1.96 \times 0.4243 + 1.282 \times 0.4234\bigr)^2 \]
\[ = (0.8316 + 0.5428)^2 = (1.3744)^2 = 1.889 \]

분모는 \((0.12 - 0.08)^2 = 0.0016\)이다. 따라서:

\[ n = \frac{1.889}{0.0016} \approx 1180.6 \]

이 연구에는 집단당 1181명(총 2362명)이 필요하다.

실무적 고려사항

탈락을 감안하라

위 공식은 분석에 필요한 피험자 수를 준다. 탈락률 \(d\)가 예상되면 집단당 \(n / (1 - d)\)명을 등록하라. 예를 들어 탈락률 15%가 예상되고 \(n = 91\)이면 집단당 \(\lceil 91 / 0.85 \rceil = 108\)명을 등록한다.

집단 크기가 다른 경우. \(n_1 \neq n_2\)이면 평균 비교 공식은 다음으로 일반화된다:

\[ n_1 = \frac{(1 + 1/k)(z_{\alpha/2} + z_\beta)^2 \sigma^2}{\delta^2} \]

여기서 \(k = n_2/n_1\)은 배정비이고 \(n_2 = k \cdot n_1\)이다. \(k = 1\)이면 (\(1 + 1/1 = 2\)이므로) 크기가 같은 경우의 공식이 된다.

효과크기로 표현하기. 평균 비교 공식의 양변을 \(\sigma^2\)으로 나누면 필요한 표본크기가 표준화 효과크기 \(d = \delta/\sigma\)에만 의존함을 알 수 있다:

\[ n = \frac{2(z_{\alpha/2} + z_\beta)^2}{d^2} \]

흔한 기준은 \(d = 0.2\)(작음), \(d = 0.5\)(중간), \(d = 0.8\)(큼)이다.

효과크기에 따른 집단당 표본크기 곡선과, 배정비에 따른 총 인원 막대

왼쪽 그림이 방금 유도한 \(n = 2(z_{\alpha/2}+z_\beta)^2/d^2\)이다. 가로축이 \(\delta\)도 \(\sigma\)도 아닌 그 비라는 점이 핵심이다. 혈압을 mmHg로 재든 kPa로 재든, \(\delta = 5\), \(\sigma = 12\)든 \(\delta = 0.42\), \(\sigma = 1\)이든 필요한 인원은 같다. 곡선을 읽으면 검정력 80%에서 \(d = 0.2\)에 집단당 393명, \(d = 0.5\)에 63명, \(d = 0.8\)에 25명이다. \(1/d^2\) 꼴이라 작은 효과의 값이 터무니없이 비싸다. 효과크기가 절반이면 인원은 네 배다.

검정력을 80%에서 90%로 올리는 값도 같은 그림에서 읽힌다. \(d = 0.5\)에서 63명이 85명으로, \(d = 0.2\)에서 393명이 526명으로 약 34% 늘어난다. \((1.96+1.282)^2/(1.96+0.842)^2 = 1.34\)이니 효과크기와 무관하게 늘 34%다. 90% 검정력이 관행이 되지 못한 것은 이 34%가 대개 예산을 넘기기 때문이다.

오른쪽은 같은 임상시험(\(\delta = 5\), \(\sigma = 12\), 검정력 80%)을 여러 배정비로 설계한 결과다. 세 막대 쌍 모두 검정력이 똑같이 80%인데 총 인원이 다르다. 1:1이면 91명씩 182명이고, 1:2로 하면 처리군은 68명으로 줄지만 대조군이 136명이 되어 총 204명, 1:5면 총 330명이 된다. 균등 배정이 총 인원을 최소로 한다. 공식의 \((1 + 1/k)\)가 \(n_1\)을 줄이는 속도보다 \(n_2 = k n_1\)이 늘어나는 속도가 빠르기 때문이다.

그렇다면 왜 불균등 배정을 쓰는가. 총 인원이 아니라 한쪽 집단의 인원이 제약일 때다. 신약이 비싸거나 공급이 제한적이면 처리군을 68명으로 줄이는 것이 이득이고, 늘어난 대조군 인원은 상대적으로 싸다. 또 대조군을 키우면 그 집단의 추정이 정밀해져 부수적 분석에 쓸모가 있다. 다만 1:3을 넘어가면 이득이 급격히 줄어든다. 처리군은 61명에서 55명으로 6명 줄이는 데 총 인원이 86명 늘어난다.

연습문제

연습문제 1. 어떤 연구자가 \(\sigma = 10\)인 두 집단에서 \(\alpha = 0.05\)(양측), 검정력 \(= 0.80\)으로 차이 \(\delta = 5\) 단위를 탐지하려 한다. 집단당 필요한 표본크기를 계산하라.

풀이

임계값은 \(z_{0.025} = 1.96\), \(z_{0.20} = 0.842\)이다(검정력 \(= 1 - \beta = 0.80\)이므로 \(\beta = 0.20\)).

\[ n = \frac{2(z_{\alpha/2} + z_\beta)^2 \sigma^2}{\delta^2} = \frac{2(1.96 + 0.842)^2 \times 100}{25} = \frac{2 \times 7.8505 \times 100}{25} = \frac{1570.1}{25} = 62.8 \]

올림하면 집단당 \(n = 63\)명(총 126명)이다.

연습문제 2. 효과크기 표현을 써서 \(\alpha = 0.05\), 검정력 80%로 "중간" 효과(\(d = 0.5\))를 탐지하는 데 필요한 집단당 표본크기를 계산하라.

풀이
\[ n = \frac{2(z_{\alpha/2} + z_\beta)^2}{d^2} = \frac{2(1.96 + 0.842)^2}{0.25} = \frac{2 \times 7.8505}{0.25} = \frac{15.701}{0.25} = 62.8 \]

올림하면 집단당 \(n = 63\)명이다. 널리 인용되는 기준값이다: 검정력 80%로 중간 크기의 효과를 탐지하려면 집단당 약 63명이 필요하다.

연습문제 3. 표본크기가 집단당 \(n = 30\)으로 고정되어 있고 \(\sigma = 10\), \(\alpha = 0.05\)일 때 검정력 80%에서 탐지 가능한 최소 차이 \(\delta\)는 얼마인가?

풀이

공식을 정리하면:

\[ \delta = \sqrt{\frac{2(z_{\alpha/2} + z_\beta)^2 \sigma^2}{n}} = \sqrt{\frac{2(1.96 + 0.842)^2 \times 100}{30}} = \sqrt{\frac{1570.1}{30}} = \sqrt{52.34} \approx 7.23 \]

집단당 30명이면 검정력 80%로 약 7.23 단위의 차이(표준화 효과로는 \(d = 7.23/10 = 0.72\))를 탐지할 수 있다.

연습문제 4. 표본크기를 두 배로 해도 탐지 가능한 효과크기가 두 배로 좋아지지 않는 이유를 직관적으로 설명하라. \(n\)과 \(\delta\)의 정확한 관계는 무엇인가?

풀이

공식 \(n = 2(z_{\alpha/2} + z_\beta)^2 \sigma^2 / \delta^2\)을 \(\delta\)에 대해 풀면 \(\delta \propto 1/\sqrt{n}\)이다. \(n\)을 두 배로 하면 탐지 가능한 최소 차이가 2배가 아니라 \(\sqrt{2} \approx 1.414\)배 작아진다.

직관적으로, 평균 차이의 표준오차는 \(\sigma\sqrt{2/n}\)으로 \(1/\sqrt{n}\)에 따라 줄어든다. \(\delta\)를 탐지하는 검정력은 비 \(\delta / \text{SE}\)에 달려 있으므로, (\(n\)을 두 배로 하여) 정밀도가 \(\sqrt{2}\)배 좋아지면 \(\sqrt{2}\)배 작은 차이를 탐지할 수 있다. 이 수확 체감 관계 때문에 탐지 가능한 효과크기를 절반으로 줄이려면 표본크기가 네 배 필요하다.

연습문제 5. 두 집단의 크기를 \(n_2=kn_1\)로 불균등 배분할 때 필요한 표본을 구하라. 총 표본이 가장 작아지는 배분은 무엇이고, 비용이 다르면 어떻게 바뀌는가?

풀이

필요한 \(n_1\). 분산이 \(\sigma^2(1/n_1+1/n_2)=\sigma^2(1+1/k)/n_1\)이므로

\[ n_1=\left(1+\frac1k\right)\frac{(z_{1-\alpha/2}+z_{1-\beta})^2\sigma^2}{\delta^2}, \qquad n_2=kn_1 \]
import numpy as np
from scipy import stats

za, zb = stats.norm.ppf(0.975), stats.norm.ppf(0.80)
sigma, delta = 10.0, 5.0
base = (za + zb)**2 * sigma**2 / delta**2

print(f"{'k':>5s} {'n1':>6s} {'n2':>6s} {'총':>6s} {'균등 대비':>10s}")
for k in [1, 1.5, 2, 3, 4, 10]:
    n1 = np.ceil((1 + 1 / k) * base)
    n2 = np.ceil(k * (1 + 1 / k) * base)
    print(f"{k:5.1f} {n1:6.0f} {n2:6.0f} {n1 + n2:6.0f} "
          f"{(n1 + n2) / (2 * np.ceil(2 * base)):10.2f}")
    k     n1     n2      총      균등 대비
  1.0     63     63    126       1.00
  1.5     53     79    132       1.05
  2.0     48     95    143       1.13
  3.0     42    126    168       1.33
  4.0     40    157    197       1.56
 10.0     35    346    381       3.02

균등 배분(\(k=1\))이 총 표본을 최소화한다. 총수 \(n_1(1+k)=(1+1/k)(1+k)\cdot\text{base}=(2+k+1/k)\cdot\text{base}\)이고, \(k+1/k\)가 \(k=1\)에서 최소이기 때문이다.

불균등의 대가는 처음에 완만하다. \(k=2\)면 총 표본이 13%만 늘고, \(k=3\)이어야 33%다. \(k\le2\) 정도의 불균형은 실무적으로 큰 손해가 아니다.

그래도 불균등을 쓰는 이유.

  1. 한쪽 집단이 부족할 때. 희귀질환 환자를 다 넣고 대조군을 늘리는 경우. \(k=3\)까지는 검정력이 꽤 회복된다. \(k=10\)은 대체로 낭비다.
  2. 치료군을 늘려 안전성 자료를 더 모을 때. 신약 시험에서 2:1 배정이 흔하다.
  3. 비용이 다를 때.

비용을 넣은 최적 배분. 집단 1의 단위비용 \(c_1\), 집단 2의 \(c_2\)일 때 총비용을 최소화하는 배분은

\[ k^*=\frac{n_2}{n_1}=\sqrt{\frac{c_1}{c_2}} \]
\(c_2/c_1\) 최적 \(k^*\) 해석
0.25 2.00 집단 2가 4배 싸므로 2배 많이
0.50 1.41
1.00 1.00 비용이 같으면 균등
2.00 0.71 집단 2가 비싸므로 적게
4.00 0.50

비용비의 제곱근만큼만 기울인다. 4배 싸다고 4배 뽑지 않는다.

분산이 다르면. \(\sigma_1\ne\sigma_2\)일 때는 \(k^*=\sigma_2/\sigma_1\)(비용이 같을 때)이고, 둘을 합치면 \(k^*=(\sigma_2/\sigma_1)\sqrt{c_1/c_2}\)다.

연습문제 6. 이분형 결과의 두 집단 비교에 필요한 표본크기를 구하라. 여러 \((p_1,p_2)\) 조합에서 계산하고, 무엇이 표본을 결정하는지 밝혀라.

풀이

공식. \(H_0\) 아래의 분산(합동)과 \(H_1\) 아래의 분산을 각각 쓰는 판이 표준이다.

\[ n=\frac{\left\{z_{1-\alpha/2}\sqrt{2\bar p(1-\bar p)}+z_{1-\beta}\sqrt{p_1(1-p_1)+p_2(1-p_2)}\right\}^2}{(p_1-p_2)^2}, \qquad \bar p=\frac{p_1+p_2}2 \]
import numpy as np
from scipy import stats

za, zb = stats.norm.ppf(0.975), stats.norm.ppf(0.80)
print(f"{'p1':>6s} {'p2':>6s} {'차이':>6s} {'RR':>5s} "
      f"{'정밀식':>8s} {'단순식':>8s}")
for p1, p2 in [(0.30, 0.20), (0.10, 0.05), (0.60, 0.50), (0.05, 0.02)]:
    pb = (p1 + p2) / 2
    v1 = p1 * (1 - p1) + p2 * (1 - p2)
    n = (za * np.sqrt(2 * pb * (1 - pb)) + zb * np.sqrt(v1))**2 / (p1 - p2)**2
    n0 = (za + zb)**2 * v1 / (p1 - p2)**2
    print(f"{p1:6.2f} {p2:6.2f} {p1 - p2:6.2f} {p1 / p2:5.1f} "
          f"{np.ceil(n):8.0f} {np.ceil(n0):8.0f}")
    p1     p2     차이    RR      정밀식      단순식
  0.30   0.20   0.10   1.5      294      291
  0.10   0.05   0.05   2.0      435      432
  0.60   0.50   0.10   1.2      388      385
  0.05   0.02   0.03   2.5      588      586

두 공식의 차이는 1%도 안 된다. 합동분산을 쓰느냐가 큰 문제가 아니다.

무엇이 표본을 결정하는가.

  1. 절대 차이가 지배한다. \((0.30,0.20)\)과 \((0.60,0.50)\)은 둘 다 차이 0.10인데 294와 388로 비슷한 규모다. 반면 \((0.10,0.05)\)는 차이가 절반이라 435로 커진다.

  2. \(p\)가 0.5에 가까울수록 분산이 커져 불리하다. \((0.60,0.50)\)이 \((0.30,0.20)\)보다 32% 더 필요하다. 같은 절대 차이인데도 그렇다.

  3. 상대위험은 직접적인 결정요인이 아니다. \((0.10,0.05)\)는 RR이 2.0으로 크지만 435명이 필요하고, \((0.30,0.20)\)은 RR이 1.5인데 294명이면 된다. 절대 차이가 작으면 아무리 상대위험이 커도 표본이 많이 든다.

희귀사건의 어려움. \(p\)가 작으면 차이도 작아지기 마련이라 표본이 폭발한다. 대략 \(n\approx(z_a+z_b)^2(p_1+p_2)/(p_1-p_2)^2\)이므로, 두 비율을 모두 \(f\)배로 줄이면 \(n\)이 \(1/f\)배로 커진다.

연속성 수정. 카이제곱 검정을 쓸 계획이면 수정판 공식이 있으나, 앞서 보았듯 수정 자체가 지나치게 보수적이므로 수정 없이 계산하고 우도비나 정확검정을 쓰는 편이 낫다.

연습문제 7. 생존분석에서는 표본크기가 아니라 사건 수가 검정력을 결정한다. 로그순위검정의 공식을 적용하고, 이것이 실무에서 무엇을 뜻하는지 설명하라.

풀이

슈엔펠트 공식. 비례위험 가정 아래 로그순위검정에 필요한 총 사건 수는

\[ d=\frac{4\left(z_{1-\alpha/2}+z_{1-\beta}\right)^2}{\left(\log \text{HR}\right)^2} \]

(1:1 배정일 때). \(n\)이 아니라 \(d\)가 나온다는 점이 핵심이다.

import numpy as np
from scipy import stats

za, zb = stats.norm.ppf(0.975), stats.norm.ppf(0.80)
print(f"{'HR':>6s} {'필요 사건 수':>12s}")
for hr in [0.50, 0.60, 0.70, 0.75, 0.80]:
    print(f"{hr:6.2f} {np.ceil(4 * (za + zb)**2 / np.log(hr)**2):12.0f}")
    HR      필요 사건 수
  0.50           66
  0.60          121
  0.70          247
  0.75          380
  0.80          631

HR이 1에 가까울수록 급격히 커진다. 0.5면 66건, 0.8이면 631건으로 10배다. \((\log\text{HR})^2\)이 분모이기 때문이다.

\(n\)은 어떻게 나오는가. 추적기간 동안 사건이 일어날 확률 \(\psi\)를 추정해

\[ n=\frac{d}{\psi} \]

로 환산한다. \(\psi\)는 기저 생존함수, 추적기간, 중도절단 패턴에 달려 있다.

실무적 함의 — 셋.

  1. 더 많이 모집하기보다 더 오래 추적하는 것이 나을 수 있다. 사건 수만 채우면 되므로, 추적기간을 늘리면 \(\psi\)가 커져 필요한 \(n\)이 준다. 비용 구조에 따라 어느 쪽이 싼지 달라진다.

  2. 예후가 좋은 집단은 연구하기 어렵다. 5년 생존율이 95%인 질환에서는 \(\psi\)가 작아 \(n\)이 폭발한다. 고위험군을 표적으로 삼는 설계가 나오는 이유다.

  3. 중간분석의 시점을 사건 수로 정한다. "2년 시점"이 아니라 "사건 100건 시점"으로 계획한다. 사건이 예상보다 적게 일어나면 일정이 밀리는 것을 받아들여야 한다. 이를 "사건 주도(event-driven) 설계"라 한다.

가정의 취약성.

  • 비례위험이 깨지면 로그순위검정의 검정력이 떨어진다. 치료효과가 시간에 따라 변하는 면역치료 등에서 문제가 된다.
  • 중도절단이 무작위가 아니면 추정이 편향된다.
  • HR을 어떻게 정할 것인가. 여기서도 임상적 근거가 필요하며, 낙관적인 HR을 넣어 표본을 줄이는 것이 흔한 실패 원인이다.

연습문제 8. 군집무작위 시험의 표본크기를 계산하라. 군집 수와 군집 크기 중 무엇을 늘리는 것이 효율적인가?

풀이

설계효과를 곱한다. 앞서 본 대로 \(\text{DEFF}=1+(m-1)\rho\)이므로

\[ n_{\text{군집설계}}=n_{\text{개인무작위}}\times\left\{1+(m-1)\rho\right\}, \qquad \text{군집 수}=\frac{n}{m} \]
import numpy as np
from scipy import stats

za, zb = stats.norm.ppf(0.975), stats.norm.ppf(0.80)
sigma, delta, m = 10.0, 5.0, 20
n_ind = np.ceil(2 * (za + zb)**2 * sigma**2 / delta**2)
print(f"개인무작위라면 집단당 {n_ind:.0f}명")
print(f"{'ICC':>6s} {'DEFF':>7s} {'집단당 인원':>11s} {'군집 수':>8s}")
for rho in [0.01, 0.02, 0.05, 0.10]:
    deff = 1 + (m - 1) * rho
    n = n_ind * deff
    print(f"{rho:6.2f} {deff:7.2f} {np.ceil(n):11.0f} {np.ceil(n / m):8.0f}")
개인무작위라면 집단당 63명
   ICC    DEFF      집단당 인원     군집 수
  0.01    1.19          75        4
  0.02    1.38          87        5
  0.05    1.95         123        7
  0.10    2.90         183       10

군집 수 대 군집 크기. \(\rho=0.05\)로 고정하고 \(m\)을 바꿔 보면

rho = 0.05
print(f"{'m':>5s} {'DEFF':>7s} {'총 인원':>8s} {'군집 수':>8s}")
for m in [5, 10, 20, 50, 100]:
    deff = 1 + (m - 1) * rho
    n = n_ind * deff
    print(f"{m:5d} {deff:7.2f} {np.ceil(n):8.0f} {np.ceil(n / m):8.0f}")
    m    DEFF     총 인원     군집 수
    5    1.20       76       16
   10    1.45       92       10
   20    1.95      123        7
   50    3.45      218        5
  100    5.95      375        4

군집을 작게, 많이 뽑는 것이 인원 면에서 효율적이다. \(m=5\)면 76명, \(m=100\)이면 375명으로 5배 차이다.

그러나 군집 수는 반대로 움직인다. \(m=5\)면 16개 군집, \(m=100\)이면 4개다. 학교나 병원을 섭외하는 비용이 크면 군집을 늘리기 어렵다.

최적 \(m\). 군집당 고정비용 \(c_c\), 개인당 비용 \(c_i\)일 때

\[ m^*=\sqrt{\frac{c_c}{c_i}\cdot\frac{1-\rho}{\rho}} \]

군집 수의 하한. 통계적으로도 실무적으로도 군집이 너무 적으면 안 된다.

  • 군집 수준 자유도가 대략 (군집 수 \(-2\))이므로, 4개 군집이면 자유도 2로 \(t\) 임계값이 4.3에 이른다. 위 계산은 정규근사를 썼으므로 군집 수가 적으면 크게 과소추정한다.
  • 군집 수가 적으면 무작위배정만으로 균형이 잡히지 않는다. 층화나 짝지은 배정이 권장된다.
  • 실무 지침으로 집단당 최소 10~15개 군집을 권한다.

\(\rho\)를 어디서 얻는가. 이것이 가장 큰 불확실성이다. 교육 연구의 학교 수준 \(\rho\)는 보통 0.01~0.20, 보건의료의 진료소 수준은 0.001~0.05로 보고된다. 민감도 분석이 필수다.

연습문제 9. 비열등성과 동등성 시험의 표본크기를 계산하고, 우월성 시험과 비교하라.

풀이

세 가지 설계의 가설.

설계 \(H_0\) \(H_1\) 검정
우월성 \(\delta=0\) \(\delta\ne0\) 양측
비열등성 \(\delta\le-\Delta\) \(\delta>-\Delta\) 단측
동등성 \(\lvert \delta\rvert\ge\Delta\) \(\lvert \delta\rvert<\Delta\) TOST(양쪽 단측)
import numpy as np
from scipy import stats

sigma = 10.0
za = stats.norm.ppf(0.975)          # 단측 0.025 또는 양측 0.05
zb80 = stats.norm.ppf(0.80)
zb90 = stats.norm.ppf(0.90)         # TOST는 각 검정이 더 강해야 함

print(f"{'마진 Δ':>8s} {'비열등성':>10s} {'동등성':>10s}")
for D in [2.0, 3.0, 5.0]:
    n_ni = 2 * (za + zb80)**2 * sigma**2 / D**2
    n_eq = 2 * (za + zb90)**2 * sigma**2 / D**2
    print(f"{D:8.1f} {np.ceil(n_ni):10.0f} {np.ceil(n_eq):10.0f}")

print()
print("참고: 같은 크기의 효과를 탐지하는 우월성 시험")
for d in [2.0, 3.0, 5.0]:
    print(f"  δ = {d}: 집단당 "
          f"{np.ceil(2 * (za + zb80)**2 * sigma**2 / d**2):.0f}")
  마진 Δ      비열등성       동등성
     2.0        393        526
     3.0        175        234
     5.0         63         85
참고: 같은 크기의 효과를 탐지하는 우월성 시험
  δ = 2.0: 집단당 393
  δ = 3.0: 집단당 175
  δ = 5.0: 집단당 63

비열등성과 우월성의 표본이 같다. 마진 \(\Delta\)와 효과 \(\delta\)가 같은 수라면 그렇다. 단측이라 \(\alpha\)가 절반이지만, 관례상 단측 0.025를 쓰므로 양측 0.05와 같은 임계값이다.

동등성이 더 많이 든다. 두 단측검정을 모두 통과해야 하므로 각각의 검정력을 높여야 한다(\(1-\beta/2\) 근사). 34% 더 필요하다.

마진이 결정적이다. \(\Delta\)를 5에서 2로 줄이면 표본이 63명에서 393명으로 6.2배가 된다. \(\Delta\)를 정하는 것이 이 설계의 핵심 의사결정이다.

\(\Delta\)를 어떻게 정하는가.

  1. 기존 치료의 효과에서 역산. 위약 대비 기존 치료의 효과가 \(\theta\)라면, 그 효과의 일정 비율(흔히 50%)을 보존하는 것을 마진으로 삼는다.
  2. 임상적 판단. "이 정도 차이는 환자에게 무의미하다"는 수준.
  3. 규제 지침. 분야별로 정해진 관례가 있다.

절대 하지 말 것 — 자료를 본 뒤 마진 정하기. 어떤 결과든 "동등하다"고 만들 수 있다.

비열등성 시험의 위험 — 편향의 방향이 반대다.

  • 우월성 시험에서 자료가 엉성하면(측정오차, 순응도 저하, 탈락) 효과가 희석되어 기각하기 어려워진다. 즉 보수적이다.
  • 비열등성 시험에서는 반대다. 엉성한 자료는 두 군을 비슷해 보이게 만들어 비열등성을 주장하기 쉬워진다.

따라서 비열등성 시험은 더 엄격한 품질관리가 필요하고, ITT와 PP 분석을 모두 보고해야 한다.

연습문제 10. 여러 비교를 할 계획이면 표본크기가 얼마나 늘어나는가? 본페로니 보정을 반영해 계산하고, 대안을 논하라.

풀이
import numpy as np
from scipy import stats

sigma, delta = 10.0, 5.0
zb = stats.norm.ppf(0.80)
n1 = None
print(f"{'비교 수':>7s} {'보정 α':>10s} {'집단당 n':>9s} {'배율':>6s}")
for m in [1, 2, 3, 5, 10, 20]:
    alpha = 0.05 / m
    za = stats.norm.ppf(1 - alpha / 2)
    n = np.ceil(2 * (za + zb)**2 * sigma**2 / delta**2)
    if n1 is None:
        n1 = n
    print(f"{m:7d} {alpha:10.4f} {n:9.0f} {n / n1:6.2f}")
   비교 수       보정 α     집단당 n     배율
      1     0.0500        63   1.00
      2     0.0250        77   1.22
      3     0.0167        84   1.33
      5     0.0100        94   1.49
     10     0.0050       107   1.70
     20     0.0025       120   1.90

생각보다 완만하다. 비교가 20개로 늘어도 표본은 1.9배다.

왜 그런가. \(n\propto(z_{1-\alpha/2m}+z_{1-\beta})^2\)인데, \(z\)는 \(\alpha\)의 로그에 대략 \(\sqrt{2\log(1/\alpha)}\)로 자란다. \(m\)이 지수적으로 늘어야 \(n\)이 선형으로 는다.

그러나 안심할 일이 아니다.

  1. 검정력의 정의를 확인해야 한다. 위 계산은 각 비교의 개별 검정력 80%다. "모든 비교에서 동시에 유의" 같은 다른 정의라면 훨씬 많이 든다.

  2. 주 결과를 하나로 정하는 것이 낫다. 여러 결과를 모두 주 결과로 삼으면 해석이 혼란스럽다. 주 결과 하나 + 나머지는 부수적으로 두면 보정이 필요 없다.

대안들.

방법 성격 표본 영향
본페로니 가장 보수적, 단순 위 표
홀름 본페로니보다 강력, 여전히 FWER 통제 약간 적음
계층적 검정 순서를 미리 정하고 순차 검정 보정 불필요
FDR(벤야미니-호흐베르크) 거짓발견비율 통제 훨씬 적음
복합 결과변수 여러 결과를 하나로 합침 보정 불필요
다변량 검정 전체 검정 하나 보정 불필요

계층적 검정이 실무에서 유용하다. "먼저 주 결과를 0.05로 검정하고, 유의하면 다음 결과를 0.05로 검정한다"는 규칙은 FWER을 보정 없이 유지한다. 다만 순서를 미리 정해야 하고, 앞에서 막히면 뒤를 볼 수 없다.

복합 결과변수의 함정. "사망 또는 재입원 또는 재발"처럼 묶으면 사건이 늘어 표본이 준다. 하지만 구성요소의 중요도가 다르면 해석이 왜곡된다. 재입원이 늘고 사망이 준 경우 복합 결과는 변화가 없어 보인다.

권고. 표본크기 단계에서 다중비교를 고려하는 것보다, 설계 단계에서 주 결과를 하나로 좁히는 것이 훨씬 효과적이다. 보정은 문제의 증상이지 원인이 아니다.


정리하며

두 집단 비교의 표본크기는 세 가지가 정한다.

  • 효과크기 — 클수록 적은 표본으로 잡아낸다. 표준화 효과크기 \(\delta=(\mu_1-\mu_2)/\sigma\) 로 적으면 \(n\) 이 \(\delta^2\) 에 반비례한다. 효과가 절반이면 표본은 네 배다.
  • 변동 \(\sigma\) — 클수록 많이 필요하다.
  • 오류율 \(\alpha\) 와 검정력 \(1-\beta\) — 둘 다 엄격히 할수록 커진다. 공식에 \((z_{\alpha/2}+z_\beta)^2\) 으로 들어온다.
\[ n \approx \frac{2(z_{\alpha/2}+z_\beta)^2}{\delta^2} \quad\text{(집단당)} \]
  • 관례적인 설정은 \(\alpha=0.05\), 검정력 \(0.80\) 이며, 그때 \((1.96+0.84)^2\approx7.85\) 다.
  • "의미 있는 최소 효과"를 정하는 것이 가장 어려운 단계다. 통계가 아니라 분야 지식이 답하는 물음이며, 이 값을 정하지 않으면 표본크기 계산 자체가 불가능하다.
  • 사후 검정력 계산은 하지 말 것. 이미 얻은 \(p\) 값에서 역산한 검정력은 새로운 정보를 주지 않는다. 검정력 계산은 설계 단계의 도구다.

다음 절 표본크기 계산에서 이 공식들을 코드로 정리한다.