평균과 평균 차이의 표본 크기

Woodward 8.3+8.4 — 단일 평균과 두 그룹 평균 차이의 산정 공식

Woodward Ch.8.3 (단일 평균) 과 8.4 (평균 차이) 의 표본 크기 산정 공식과 실제 계산 예시를 정리한다. 짝지은 vs 독립 표본, 분산 가정, 효과 크기 표현 (Cohen’s d) 의 차이를 다룬다.

Experimentation
Fundamentals
저자

Kwangmin Kim

공개

2026년 05월 08일

1 도입 — 가장 흔한 두 사례

A/B 테스트와 임상시험의 연속 메트릭 비교 가 이 두 사례에 해당한다. 매출, 혈압, 검사 수치 등 연속형 outcome.

이 글은 (a) 단일 평균 표본 크기 (사례 1), (b) 두 그룹 평균 차이 표본 크기 (사례 2), (c) 짝지은 vs 독립 표본의 차이를 정리한다.

2 사례 1 — 단일 평균

2.1 공식

A-WOO8-1 에서 도출한 공식:

\[ \boxed{n = \left(\frac{(z_{1-\alpha/2} + z_{1-\beta}) \sigma}{\mu_1 - \mu_0}\right)^2} \]

(양측 검정. 한 측은 \(z_{1-\alpha/2}\) 대신 \(z_{1-\alpha}\).)

2.2 입력

  • \(\mu_0\): 귀무가설 평균 (기준값)
  • \(\mu_1\): 대립가설 평균 (검출하고 싶은 값)
  • \(\sigma\): 모집단 표준편차 (이전 자료에서)
  • \(\alpha\), \(\beta\): 오류율

2.3 사례 — 콜레스테롤 (계속)

Woodward Ex 8.1 의 양측 변형:

  • \(\mu_0 = 5.5\), \(\mu_1 = 6.0\), \(\sigma = 1.4\)
  • \(\alpha = 0.05\) (양측), power = 0.90

\[ n = \left(\frac{(1.96 + 1.282) \cdot 1.4}{0.5}\right)^2 = \left(\frac{4.539}{0.5}\right)^2 \approx 82.4 \to 83 \]

83 명 필요.

2.4 분산 추정

\(\sigma\) 의 추정 출처:

  1. 이전 연구의 자료 — 가장 정밀
  2. Pilot study — 작은 사전 실험 (\(n \approx 30\))
  3. 이론적 제약 — 척도의 범위로 추정 (예: 5 점 척도의 \(\sigma \approx 1\))
  4. 유사 연구 — 비슷한 모집단의 자료

추정 부정확 시 sensitivity analysis 권장.

직관 — 효과 크기의 표준화 표현

Cohen’s \(d\) 로 효과 크기를 표준화:

\[ d = \frac{\mu_1 - \mu_0}{\sigma} \]

콜레스테롤 사례: \(d = 0.5 / 1.4 \approx 0.357\) (small to medium).

\(d\) 를 사용한 표본 크기 공식:

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

이 식이 \(\sigma\) 를 따로 알 필요 없이 \(d\) 만으로 \(n\) 을 계산. 따라서 분야 간 비교가 단순.

Cohen’s \(d\) \(n\) 필요 (α=0.05 양측, power=0.80)
0.2 (small) 199
0.5 (medium) 32
0.8 (large) 13
1.0 8

작은 효과를 잡으려면 훨씬 큰 표본 이 필요한 정량적 관계.

3 사례 2 — 두 그룹 평균 차이 (독립)

3.1 공식

정의: 두 그룹 평균 차이의 표본 크기 (균형 설계, 등분산)

\[ n_{\text{per group}} = \frac{2 (z_{1-\alpha/2} + z_{1-\beta})^2 \sigma^2}{\delta^2} \]

여기서 \(\delta = \mu_1 - \mu_2\) 는 검출하고 싶은 평균 차이.

총 표본: \(N = 2 n_{\text{per group}}\).

단일 평균과의 차이: \(2\) 의 곱셈 인자. 이는 분산이 두 그룹에서 합산되기 때문.

3.2 사례 — 혈압 시험

새 항고혈압제 vs 위약. 효과 가정 5 mmHg 감소, \(\sigma = 12\) mmHg, \(\alpha = 0.05\) 양측, power = 0.80.

\[ n_{\text{per group}} = \frac{2 (1.96 + 0.84)^2 \cdot 144}{25} = \frac{2 \cdot 7.84 \cdot 144}{25} = \frac{2257.92}{25} \approx 90.3 \to 91 \]

각 그룹 91 명, 총 182 명.

3.3 짝지은 vs 독립

짝지은 (paired) 표본의 표본 크기는 다르다:

\[ n_{\text{pairs}} = \left(\frac{(z_{1-\alpha/2} + z_{1-\beta}) \sigma_d}{\delta}\right)^2 \]

여기서 \(\sigma_d\)차이의 표준 편차 (개별 표준편차가 아님).

\(\sigma_d\) 는 일반적으로 개별 \(\sigma\) 보다 작음 (짝 사이의 상관 때문). 따라서 짝지은 설계가 더 효율적.

직관 — 짝지은 설계의 장점

쌍둥이 임상시험: 한 명에 처치, 다른 명에 위약.

  • 두 사람의 공통 유전자baseline 차이 를 줄임
  • 차이 점수의 분산이 작음
  • 같은 결과 검출에 더 적은 표본 필요

A/B 테스트의 paired 사례:

  • 같은 사용자 가 두 변형을 모두 경험 (Within-subjects)
  • Crossover 설계 (시간 1: A, 시간 2: B 또는 반대)
  • Same user, different time: 자기 자신과의 비교

이 접근의 장점은 사용자 간 차이 를 설계로 통제. 단점: carryover effect (이전 처치 효과 잔류) 또는 학습 효과 위험.

4 분산이 다른 경우 — Welch

등분산 가정이 깨지면 Welch 변형 사용:

\[ n_1 = \frac{(z_{1-\alpha/2} + z_{1-\beta})^2 (\sigma_1^2 + r \sigma_2^2)}{\delta^2} \]

여기서 \(r = n_2 / n_1\) (비대칭 비율).

4.1 균형 vs 비균형 설계

설계 검정력 (총 \(n\) 고정 시)
1:1 최대
2:1 약 89 %
3:1 약 75 %
4:1 약 60 %

균형이 대부분의 시나리오에서 최적.

5 \(\delta\) 의 결정 — 가장 어려운 입력

\(\delta\) 결정의 출처:

  1. MCID (Minimum Clinically Important Difference) — 임상 합의
  2. Pilot study — 사전 추정
  3. 이전 연구 — 메타 분석
  4. 비즈니스 의미 — A/B 테스트의 ROI

5.1 A/B 테스트의 \(\delta\)

매출 1 % lift 가 \(\delta\) 라면:

  • 베이스라인 매출 = $1000
  • \(\delta = 10\)
  • \(\sigma\) = 매출 표준편차 (보통 큰 값)

\(\sigma\) 가 매우 크면 작은 \(\delta\) 검출에 큰 표본 필요. 매출 자료의 우편향 성격이 분석을 더 까다롭게 만든다 (변환 또는 winsorization 권장).

6 Sensitivity Analysis

가정 변화가 \(n\) 에 미치는 영향 분석.

6.1 사례 — 혈압 시험

기준: \(\delta = 5\), \(\sigma = 12\), \(n_{\text{per}} = 91\).

가정 변경 \(n_{\text{per}}\)
\(\delta = 3\) (작은 효과) 252
\(\delta = 5\) (기준) 91
\(\delta = 7\) (큰 효과) 47
\(\sigma = 10\) (작은 분산) 64
\(\sigma = 14\) (큰 분산) 124

이 표가 \(\delta\) 가정 의 영향이 \(\sigma\) 가정 보다 훨씬 큼 을 보여줌. 따라서 \(\delta\) 를 신중히 결정.

7 코드 예시 — 단일 평균과 평균 차이

import numpy as np
from scipy.stats import norm

def n_single_mean(mu0, mu1, sigma, alpha=0.05, power=0.80, two_sided=True):
    z_a = norm.ppf(1 - alpha/2 if two_sided else 1 - alpha)
    z_b = norm.ppf(power)
    return ((z_a + z_b) * sigma / abs(mu1 - mu0))**2

def n_two_means(delta, sigma, alpha=0.05, power=0.80, two_sided=True):
    z_a = norm.ppf(1 - alpha/2 if two_sided else 1 - alpha)
    z_b = norm.ppf(power)
    return 2 * ((z_a + z_b) * sigma / abs(delta))**2

# Woodward Ex 8.1 (양측)
n1 = n_single_mean(5.5, 6.0, 1.4, alpha=0.05, power=0.90)
print(f"단일 평균 (콜레스테롤, 양측, power=0.90): n = {np.ceil(n1):.0f}")

# 혈압 시험
n2 = n_two_means(5, 12, alpha=0.05, power=0.80)
print(f"두 그룹 (혈압, δ=5, σ=12): n_per = {np.ceil(n2):.0f}")

# Sensitivity analysis
print("\n혈압 시험 — Sensitivity:")
for delta in [3, 5, 7, 10]:
    n = n_two_means(delta, 12)
    print(f"  δ = {delta}: n_per = {np.ceil(n):.0f}")

print()
for sigma in [8, 10, 12, 14, 16]:
    n = n_two_means(5, sigma)
    print(f"  σ = {sigma}: n_per = {np.ceil(n):.0f}")

# Cohen's d 표
print("\nCohen's d 별 n (균형, α=0.05 양측, power=0.80):")
for d in [0.1, 0.2, 0.3, 0.5, 0.8, 1.0]:
    n = 2 * ((norm.ppf(0.975) + norm.ppf(0.80)) / d)**2
    print(f"  d = {d}: n_per = {np.ceil(n):.0f}")

# A/B 테스트 매출 시뮬레이션
print("\nA/B 테스트 — 매출 1 % lift 검출")
sigma_revenue = 200  # 매출 표준편차 가정
delta = 10  # 1 % of $1000 baseline
n = n_two_means(delta, sigma_revenue)
print(f"  δ = ${delta}, σ = ${sigma_revenue}: n_per = {np.ceil(n):.0f}")

8 두 평균 비교 — 자세한 변형

8.1 Welch t 의 표본 크기

등분산 위반 시:

\[ n_1 = \frac{(z_{1-\alpha/2} + z_{1-\beta})^2 (\sigma_1^2 + r \sigma_2^2)}{\delta^2}, \quad r = n_2/n_1 \]

균형이 더 효율적이지만, 분산 차이가 큰 경우 비대칭 (\(r \neq 1\)) 이 효율 향상.

8.2 비대칭 분산의 최적 비율

\[ \frac{n_1}{n_2} = \frac{\sigma_1}{\sigma_2} \]

분산이 큰 그룹에 더 큰 표본. 직관: 더 많은 자료로 큰 분산 보정.

import numpy as np
from scipy.stats import norm

def welch_sample_size(delta, sigma1, sigma2, alpha=0.05, power=0.80):
    """Welch t 의 비대칭 표본 크기 (최적 비율)"""
    z_a = norm.ppf(1 - alpha/2)
    z_b = norm.ppf(power)
    # 최적 비율 r = σ1 / σ2
    r = sigma1 / sigma2
    # 최소 총 표본
    n1 = ((z_a + z_b)**2 * (sigma1**2 + r * sigma2**2)) / delta**2
    n2 = n1 / r
    return n1, n2

# 등분산 vs 비등분산
n1_eq, n2_eq = welch_sample_size(5, 12, 12)
n1_ne, n2_ne = welch_sample_size(5, 8, 16)
print(f"등분산 (σ=12): n1={np.ceil(n1_eq):.0f}, n2={np.ceil(n2_eq):.0f}, 총={np.ceil(n1_eq+n2_eq):.0f}")
print(f"비등분산 (σ1=8, σ2=16): n1={np.ceil(n1_ne):.0f}, n2={np.ceil(n2_ne):.0f}, 총={np.ceil(n1_ne+n2_ne):.0f}")

9 Repeated Measures (Within-Subjects)

Paired Sample 의 효율성

같은 사람을 두 시점 에 측정. 차이 점수의 분산 \(\sigma_d\) 가 분석 대상.

\[ \sigma_d^2 = \sigma_1^2 + \sigma_2^2 - 2 \rho \sigma_1 \sigma_2 \]

여기서 \(\rho\) 는 두 측정의 상관.

상관이 높을수록 \(\sigma_d\) 작음 → 표본 크기 절감.

9.1 사례 — 약물 전후 비교

같은 환자의 약물 전후 혈압 비교. 환자 내 상관 ρ ≈ 0.7.

분석 표본 크기 (대략)
Independent (전후 독립) 100
Paired (ρ = 0.7) 30

Paired 가 3 배 효율. 환자 모집이 어렵거나 비싼 경우 paired 설계 권장.

9.2 A/B 테스트의 Within-Subjects

A/B 테스트는 대부분 between-subjects (다른 사용자가 다른 variant). 그러나:

  • Crossover: 같은 사용자 두 variant 시간차로 경험
  • Bandit: 같은 사용자 여러 variant 노출

Within-subjects 가 효율적이지만 carryover effect 위험. 자세한 내용은 Phase F 시리즈에서.

10 ANOVA 의 표본 크기 (3 그룹 이상)

일원 ANOVA 표본 크기

Cohen’s \(f\) 사용:

\[ n_{\text{per group}} = \frac{\lambda}{f^2} \]

여기서 \(\lambda\) 는 비중심성 모수 (검정력 함수).

Cohen’s \(f\) 효과 크기 \(n\) / 그룹 (\(J = 3\), α=0.05, power=0.80)
0.10 small 322
0.25 medium 52
0.40 large 21

10.1 Multi-arm A/B 테스트

A/B/C/D 테스트에서 ANOVA 표본 크기. \(J = 4\) 일 때:

  • 작은 효과 (\(f = 0.10\)): n = 274 / 그룹
  • 중간 효과 (\(f = 0.25\)): n = 45 / 그룹

Dunnett 절차로 표본 절감 가능 (비교 수 적음).

11 비교 — 빈도주의 vs 베이즈 표본 크기

11.1 Frequentist

n_freq = 2 * (1.96 + 0.84)**2 * 144 / 25
print(f"Frequentist n: {np.ceil(n_freq):.0f}")

11.2 Bayesian

def bayesian_sample_size_means(mu_diff, sigma, target_post=0.95, n_grid=range(50, 1000, 10)):
    """베이즈 사후 확률 기준 표본 크기"""
    for n in n_grid:
        # 사후 분포: Normal-Inverse Gamma
        # 단순화: 표준 정규 가정
        post_se = sigma * np.sqrt(2/n)
        post_z = mu_diff / post_se
        post_prob = norm.cdf(post_z)
        if post_prob >= target_post:
            return n
    return n_grid[-1]

n_bayes = bayesian_sample_size_means(5, 12)
print(f"Bayesian n (95 % credible): {n_bayes}")

두 접근의 결과가 비슷 하지만 해석이 다름.

12 Pilot Study + Main Study

작은 pilot 으로 모수 추정 후 main study 표본 크기 결정.

12.1 절차

1. Pilot study (n_pilot ≈ 30) 실행
2. 분산 σ̂_pilot 추정
3. Main study 표본:
   n_main = 2 * (z_α/2 + z_β)^2 * σ̂_pilot^2 / δ^2
4. 단, σ̂_pilot 의 *upper CI* 사용 (보수적)

12.2 Pilot 의 함정

직관 — Pilot 효과를 main 효과로 사용하지 말라

Pilot 의 효과 크기 추정값극단적 변동성. n=30 의 추정 95 % CI 가 매우 넓음.

만약 pilot 에서 d = 0.8 관측 → main 에서 d = 0.3 일 가능성 높음.

권장: - Pilot 효과의 50 % 또는 95 % CI 하한 사용 - 또는 문헌 효과 우선 - Pilot 은 분산 추정 에만 활용

이 보수적 접근이 underpowered main study 회피.

13 표본 크기 보고 형식

Methods:
  Primary endpoint: 30 일 후 혈압 변화 (mmHg, 연속)
  설계: 2-arm RCT (1:1)
  Effect: MCID 5 mmHg 검출
  σ: 12 mmHg (Smith 2019 메타 분석)
  α = 0.05 양측, power = 0.80
  Drop-out 가정: 15 %
  계산:
    n_per_group = 2 * (1.96 + 0.84)^2 * 144 / 25 ≈ 91
    Drop-out 보정: 91 / 0.85 ≈ 107
    총 모집: 214

Software: G*Power 3.1
Sensitivity: σ=10 → n=64, σ=14 → n=124

이 형식이 임상시험 표준 + 재현 가능한 정보 모두.

14 후속 — 비율과 상대위험

다음 글 A-WOO8-3 는 비율과 상대위험 의 표본 크기를 다룬다. A/B 테스트의 클릭률·전환율 분석에 직접 적용.

15 관련 주제

선행 지식

후속 주제 (Phase A)

  • A-WOO8-3 비율과 상대위험
  • A-WOO8-4 Case-control

다른 카테고리 연결

Subscribe

Enjoy this blog? Get notified of new posts by email: