중심극한정리로 표본 평균의 정규 근사 이해하기
중심극한정리의 표본 분포, 표준오차, 샘플 크기 영향을 정리하고 A/B 테스트와 SRE 모니터링에 적용하는 방법
2026-08-14 · 최초 발행 2025-10-14
비정규 모집단에서도 표본 평균을 다룰 수 있는 근거
중심극한정리(Central Limit Theorem, CLT)는 통계적 추론의 기반이다. 유한한 평균 μ와 분산 σ²을 가진 독립·동일분포(i.i.d.) 확률변수 X1,…,Xn에서 표본 평균 X̄의 분포는 n→∞일 때 정규분포 N(μ, σ²/n)로 수렴한다.
이를 표준화하면 다음과 같다.
Z = (X̄ − μ) / (σ/√n)
이 통계량은 표준정규분포 N(0,1)로 수렴한다. 모집단 자체가 정규분포가 아니어도 표본 평균의 분포를 근사적으로 다룰 수 있으므로, 신뢰구간·가설검정·표본 크기 설계가 가능해진다.
Berry–Esseen 경계에서는 수렴 오차가 O(1/√n) 수준임을 설명한다. 3차 절대 모멘트가 큰, 즉 꼬리가 무거운 분포일수록 더 큰 n이 필요하다. σ를 알 수 없다면 S로 대체하고 유한 표본에서는 자유도 n−1의 t 분포를 적용한다. 분산이 무한한 경우에는 일반 CLT를 적용하기 어렵기 때문에 Stable law 등을 대안으로 검토해야 한다.
반복 추출에서 만들어지는 표본 평균의 분포
같은 모집단에서 크기 n의 표본을 반복해서 뽑으면 각 표본 평균 X̄가 쌓인다. 이 평균들의 분포가 표본 평균의 샘플링 분포다.
n이 커질수록 샘플링 분포의 모양은 정규분포에 가까워지고, 분산은 σ²/n으로 감소한다. 따라서 X̄는 N(μ, σ²/n)로 근사할 수 있으며, Z = (X̄ − μ)/(σ/√n)로 표준화하면 스케일에 관계없이 비교할 수 있다. σ가 미지인 경우에는 Z 대신 t 통계량을 사용하고, n이 충분히 크면 t ≈ N(0,1) 근사가 허용된다.
표본 크기는 표준오차와 비용의 균형점이다
표준오차는 SE = σ/√n이다. n을 4배로 늘리면 SE는 절반으로 감소한다. 이 관계는 데이터 수집과 처리 비용을 감수하면서 어느 수준의 정밀도를 얻을지 판단하는 기준이 된다.
신뢰구간의 반경은 다음과 같이 근사할 수 있다.
신뢰구간 반경 ≈ z_{α/2}·σ/√n
n을 2배로 늘리면 오차는 약 1/√2(≈29%) 감소한다. 목표 오차 E를 기준으로 표본 크기를 설계할 때는 다음 식을 사용한다.
n ≈ (z_{α/2}·σ/E)²
비대칭과 첨도가 큰 분포에는 n≥30 이상을 권고하며, 로그정규·파레토처럼 극단적인 장꼬리를 가진 데이터는 n≥100+을 검토한다.
| 항목 | 소규모 n | 대규모 n |
|---|---|---|
| 근사 정확도(일관성) | 낮음, 분포 왜도·첨도 영향 큼 | 높음, 정규 근사 양호 |
| 안정성(변동성) | 표준오차 큼, CI 넓음 | 표준오차 작음, CI 좁음 |
| 성능(계산 비용) | 저비용, 빠른 계산 | 고비용, 수집·처리 비용 증가 |
| 확장성(데이터 요구) | 데이터 부족 시 편향 위험 | 대규모 수집 인프라 필요 |
| 운영 편의 | 실험·모니터링 민첩성 높음 | 정확도 향상, 배치/스트리밍 설계 필요 |
가정이 깨지는 데이터를 다루는 방법
CLT의 전제는 i.i.d., 유한 분산, 표본 독립성이다. 이 조건이 깨지면 수렴이 느려지거나 실패할 수 있다.
의존 데이터는 블록 부트스트랩, Newey–West, 혼합(믹싱) 조건 하 CLT 적용을 검토한다. 장꼬리 데이터에는 로그/박스–콕스 변환, 절사평균, 부트스트랩을 활용할 수 있다. 이상치나 자기상관을 발견했을 때는 정규 근사를 그대로 밀어붙이기보다 강건 또는 블록 기법으로 전환해야 한다.
실무에서는 원시 데이터와 목표 정밀도인 오차 허용치 E, 신뢰수준(1−α)을 입력으로 삼는다. 표본을 추출해 X̄와 S를 계산한 뒤 왜도·첨도·QQ plot으로 정규 근사를 점검하고, 신뢰구간과 검정을 수행한다. 결과는 신뢰구간, p-값, 의사결정으로 이어진다.
평균 기반 의사결정이 쓰이는 장면
A/B 테스트에서는 전환율 p에 대해 np(1−p)와 n(1−p)p가 충분히 클 때 비율의 정규 근사를 적용한다. 평균 주문금액처럼 연속값을 비교할 때는 X̄의 정규 근사를 바탕으로 두 집단 Z-검정 또는 t-검정을 수행한다.
SRE와 데이터 플랫폼 운영에서는 평균 응답시간이나 평균 처리량의 시간창 표본평균에 CLT를 적용할 수 있다. 표준오차를 기준으로 경보 임계값을 설계하고 SLO 위반을 조기에 탐지하는 방식이다.
제조 품질관리의 X̄-관리도에서는 배치별 샘플 평균을 관리도에 기록한다. 중심선 μ와 관리한계 μ ± k·(σ/√n)를 이용해 공정 이상을 탐지한다.
대용량 분산 분석에서는 샤드나 배치별 부분 평균을 구한 다음 이를 집계 평균으로 결합한다. MapReduce 패턴에서 부분 평균의 근사 정규성은 전체 평균의 CI와 오류율 계산을 단순화한다.
비정규 데이터에도 보편적인 추론 프레임을 적용할 수 있다는 점은 분석 절차를 표준화하고 의사결정의 일관성을 높인다. 복잡한 정확분포 대신 정규 근사를 사용하면 계산과 운영 비용도 줄일 수 있다.
적용 전 확인할 항목
- 히스토그램, QQ plot, 왜도·첨도로 분포를 탐색하고 극단치 영향을 평가한다.
- ACF/PACF를 이용한 시계열 자기상관과 클러스터·세션 종속성을 확인한다.
- 사전 파일럿으로 σ를 추정하고 n을 산정한 뒤, 모니터링 중 재평가한다.
- 강건 평균(절사·윈저라이징), 로그/Box–Cox 변환, 블록/부트스트랩을 실패 대응 수단으로 준비한다.
지수분포 표본 평균으로 보는 정규 근사
전제조건: Python 3.10+, numpy>=1.20, matplotlib>=3.5
비정규인 지수분포에서 표본 평균이 정규분포에 가까워지는 모습과 n 변화에 따른 SE 변화를 확인하는 예제다.
import numpy as np
import matplotlib.pyplot as plt
rng = np.random.default_rng(42)
def simulate_clt(dist_sampler, mu_true, sigma_true, n, reps=10000):
# 표본평균 시뮬레이션
samples = dist_sampler(size=(reps, n))
xbar = samples.mean(axis=1)
# 이론적 정규 근사 파라미터
mu = mu_true
se = sigma_true / np.sqrt(n)
return xbar, mu, se
# 비정규 모집단: 지수분포(λ=1) → 평균=1, 분산=1, σ=1
mu_true, sigma_true = 1.0, 1.0
for n in [5, 30, 100]:
xbar, mu, se = simulate_clt(rng.exponential, mu_true, sigma_true, n=n, reps=20000)
# 히스토그램과 정규근사 PDF
fig, ax = plt.subplots(1, 1, figsize=(5, 3))
ax.hist(xbar, bins=60, density=True, alpha=0.6, color="steelblue", label=f"X̄ 분포 (n={n})")
xs = np.linspace(xbar.min(), xbar.max(), 400)
pdf = (1/(se*np.sqrt(2*np.pi))) * np.exp(-0.5*((xs - mu)/se)**2)
ax.plot(xs, pdf, 'r-', lw=2, label=f"정규 근사 N({mu:.1f}, {se**2:.3f})")
ax.set_title(f"CLT 시각화: 지수분포 → 표본평균 정규 근사 (n={n})")
ax.set_xlabel("표본평균 X̄")
ax.set_ylabel("밀도")
ax.legend()
plt.tight_layout()
plt.show()
# 샘플 크기 vs 오차(표준오차) 관계 예시
import math
def required_n(z_alpha_over_2, sigma, E):
return math.ceil((z_alpha_over_2 * sigma / E)**2)
z_975 = 1.96 # 95% CI
print("샘플 크기 예시 (σ=1, 95% CI)")
for E in [0.2, 0.1, 0.05]:
print(f"허용오차 E={E}: n≈{required_n(z_975, 1.0, E)}")
n이 5→30→100으로 증가할수록 히스토그램은 정규 근사 곡선에 가까워지고, SE = 1/√n으로 축소된다. 샘플 크기 함수는 목표 오차 E에 맞춰 n을 산정하는 데 사용할 수 있다.