중심극한정리: 표본 평균의 정규근사 조건과 한계
중심극한정리의 정규화 조건, Berry–Esseen 오차 상계, 의존성과 장꼬리 분포에서의 보완 전략을 실무 관점에서 정리한다.
2026-08-14 · 최초 발행 2024-04-29
표본 평균이 정규 근사에 도달하는 조건
서로 독립이고 동일한 분포를 따르며, 기댓값이 μ이고 유한한 분산 σ^2을 갖는 확률변수 X_i를 생각해 보자. 표본평균 X̄_n = (1/n)∑X_i는 다음과 같이 표준화했을 때 표준정규분포로 분포수렴한다.
√n(X̄_n − μ)/σ → N(0,1)
여기서 분포수렴은 n이 커질수록 표본평균의 분포를 정규분포로 근사할 수 있다는 뜻이다. 신뢰구간, 가설검정, 관리도처럼 평균을 중심으로 판단하는 방법이 이 정리에 기대는 이유도 여기에 있다.
동일분포는 충분조건일 뿐 유일한 경로는 아니다. 분산이 제한된 비동일 분포라도 Lindeberg 조건을 만족하면 Lindeberg–Feller CLT로 정규근사를 얻을 수 있다. 3차 절대모멘트의 유한성을 이용해 충분조건을 제시하는 Lyapunov CLT도 있다.
Berry–Esseen 한계는 근사오차를 C·E|X−μ|^3/(σ^3√n) 수준으로 제시하며, C는 약 0.47~0.56 범위다. 표본 크기를 4배로 늘리면 정규근사 오차는 절반 수준으로 감소한다.
독립성·분산·표준화가 깨질 때
강한 의존성이 있으면 중심극한정리가 성립하지 않을 수 있다. 반대로 혼합이나 마팅게일 차분처럼 약한 의존 구조에서는 약한 형태의 CLT가 성립할 수 있다. 시계열이나 군집 표본에서는 실제 표본 수보다 유효 표본 크기가 작아질 수 있으므로, 표준오차를 과소추정하지 않도록 주의해야 한다.
유한 분산도 단순한 형식 조건이 아니다. Pareto α ≤ 2처럼 꼬리가 두꺼워 분산이 무한한 경우에는 표본평균의 정규화가 붕괴한다. 이때는 정규근사를 적용하지 말고 안정분포(Stable law)로의 수렴 가능성을 검토해야 한다.
모집단 분산 σ를 알지 못할 때는 표본표준편차 s를 사용해 √n(X̄_n−μ)/s로 표준화한다. 큰 표본에서는 이 Studentization 이후에도 정규근사를 유지할 수 있다. 다만 왜도나 첨도가 큰 분포는 수렴하더라도 더 큰 n이 필요할 수 있으며, Berry–Esseen 한계는 보수적인 표본 크기 설계에 활용할 수 있다.
정리별 적용 범위와 오차 관리
| 항목 | i.i.d. CLT | Lyapunov CLT | Lindeberg–Feller CLT | Berry–Esseen Bound |
|---|---|---|---|---|
| 적용성 | i.i.d., Var < ∞ | 비동일 분포 가능 | 가장 일반적, 삼각배열 | i.i.d. 중심의 오차 상계 |
| 필요 조건 | E[X]=μ, Var=σ^2<∞ | (∑E|Y_i|^3)/s_n^3→0 | Lindeberg 조건 | E|X−μ|^3<∞ |
| 수렴 속도 | 비정량적 진술 | 비정량적 | 비정량적 | O(1/√n), 상수 C≈0.47~0.56 |
| 견고성(heavy-tail) | 낮음 | 중간 | 중간 | 3차 절대모멘트 요구 |
| 운영 편의 | 높음 | 중간 | 낮음(검증 난도) | 근사오차 관리 용이 |
주: s_n^2 = ∑Var(Y_i)
근사를 적용하기 전의 판단 흐름
평균 기반 추론이 쓰이는 곳
온라인 A/B 테스트에서는 전환율 차이의 표본평균을 근사 정규화해 추정과 검정에 사용한다. 대규모 트래픽에서는 비모수 부트스트랩보다 계산 비용을 줄일 수 있다.
제조 공정의 X-bar 관리도는 배치별 평균의 정규근사를 바탕으로 관리한계를 계산한다. 공정 능력지수와 함께 사용하면 이상 탐지의 민감도를 조정할 수 있다.
금융 리스크 집계에서는 다양한 포지션 수익률 합의 근사 정규화를 VaR/ES 초기 추정에 이용한다. 장꼬리 분포가 의심되면 t-분포나 코퓰라로 보완한다.
신뢰구간 길이는 ≈ 2·z*{α/2}·σ/√n으로, 필요한 표본 크기는 n ≈ (z*{α/2}·σ/ε)^2로 산출할 수 있다. 오차가 1/√n 비율로 줄어든다는 점은 자원과 정확도 사이의 트레이드오프를 정량화하는 기준이 된다. 표준화된 절차는 모델을 단순하게 해석하게 하고, 조직 내 재현성과 의사결정의 일관성도 높인다.
의존성과 장꼬리 분포를 다루는 방법
시계열 데이터는 ACF/PACF와 Ljung–Box로 독립성을 점검하고, 군집 표본은 설계 기반 보정을 적용한다. 유한 분산 여부는 로그-로그 CCDF, Hill 추정, 극단값 영향 진단으로 살필 수 있다.
의존성이 확인되면 블록부트스트랩, 해시리샘플, 샌드위치(heteroskedasticity/auto-correlation robust) 분산을 사용할 수 있다. 장꼬리 또는 분산 무한 가능성이 있으면 log/Box–Cox 변환, 윈저라이즈/트림, 안정분포 또는 분위수 기반 추론으로 전환한다.
견고화 처리는 편향을 늘릴 수 있지만 분산과 근사 안정성을 개선할 수 있다. 반대로 정규근사는 계산 비용을 최소화하지만, 전제가 깨진 상태에서는 과신으로 이어질 위험이 있다.
정규근사 여부를 확인하는 시뮬레이션
전제: Python 3.10+, numpy, scipy 설치 필요.
import numpy as np
from scipy import stats
rng = np.random.default_rng(42)
def standardized_mean(dist, n, reps=1000):
if dist == "exponential":
x = rng.exponential(scale=1.0, size=(reps, n))
elif dist == "pareto":
# Pareto(alpha=1.5): 분산 무한
alpha = 1.5
x = (rng.pareto(alpha, size=(reps, n)) + 1.0) # scale=1
else:
raise ValueError("unknown dist")
xbar = x.mean(axis=1)
s = x.std(axis=1, ddof=1)
z = np.sqrt(n) * (xbar - x.mean()) / s # Studentization
return z
for dist in ["exponential", "pareto"]:
print(f"== {dist} ==")
for n in [30, 100, 1000]:
z = standardized_mean(dist, n, reps=2000)
ks = stats.kstest(z, "norm")
print(f"n={n:4d} | mean={z.mean():+.3f}, std={z.std():.3f}, KS D={ks.statistic:.3f}, p={ks.pvalue:.3f}")
exponential은 n이 증가할수록 KS 통계가 감소하고 p-value가 증가하는 경향을 보여 정규근사 적합성이 개선된다. pareto는 n이 증가해도 KS 통계가 크게 남아 정규근사에 부적합한 경향이 이어진다.