1 왜 코시 분포인가
정규 분포와 비슷하게 생겼지만 근본적으로 다른 분포가 있다. 코시 분포(Cauchy distribution)는 겉보기에 대칭 종 모양을 가지지만, 꼬리가 너무 두꺼워서 평균과 분산이 존재하지 않는다.
코시 분포를 배워야 하는 세 가지 이유:
- CLT의 반례: iid 코시 표본에서 표본 평균을 계산해도 여전히 코시 분포를 따른다. 중심극한정리가 성립하려면 분산이 유한해야 한다는 조건의 필요성을 직관적으로 보여준다.
- 비율 분포의 함정: 두 독립 표준정규 확률변수의 비율 \(Z_1/Z_2\) 는 코시 분포를 따른다. 실험에서 측정값의 비율을 취할 때 분포가 매우 나빠질 수 있음을 경고한다.
- 강건 통계학의 기준선: 정규 가정이 극단적으로 위반되는 시나리오로 사용된다. 이 분포에서도 작동하는 추정량·검정법이 진정한 강건 절차이다.
코시 분포는 단순한 이론적 기이함(pathological case)이 아니다. 물리학(브라운 운동, 공명 현상), 금융(극단적 가격 변동), 신호처리(임펄스 노이즈)에서 실제로 등장한다.
2 정의
\(X \sim \text{Cauchy}(\theta, \sigma)\) 의 PDF:
\[ f(x \mid \theta, \sigma) = \frac{1}{\pi \sigma} \frac{1}{1 + \left(\dfrac{x - \theta}{\sigma}\right)^2}, \quad x \in \mathbb{R},\quad \theta \in \mathbb{R},\quad \sigma > 0 \]
- \(\theta\): 위치 모수 (location parameter) — 분포의 중앙(중앙값·최빈값)
- \(\sigma\): 척도 모수 (scale parameter) — 분포의 퍼짐 정도
표준 코시 \((\theta = 0, \sigma = 1)\):
\[ f(x) = \frac{1}{\pi(1 + x^2)}, \quad x \in \mathbb{R} \]
Casella & Berger (2002)의 원래 표기는 \(\theta\) 를 단일 위치 모수로, 스케일 \(\sigma = 1\) 로 표준화한다. 이 포스트에서는 일반적인 2-모수 버전 \((\theta, \sigma)\) 을 사용한다.
정규화 증명: \(\arctan'(t) = 1/(1+t^2)\) 이므로,
\[ \int_{-\infty}^{\infty} \frac{1}{\pi(1+x^2)}\, dx = \frac{1}{\pi}\left[\arctan(x)\right]_{-\infty}^{\infty} = \frac{1}{\pi}\left(\frac{\pi}{2} - \left(-\frac{\pi}{2}\right)\right) = 1 \]
분모 \(1 + \left(\frac{x-\theta}{\sigma}\right)^2\) 은 거리 \((x-\theta)/\sigma\) 의 제곱에 1을 더한 것이다. 정규 분포의 분모 \(e^{x^2/2}\) 가 지수적으로 증가하는 것과 달리, 코시의 분모는 \(x^2\) 처럼 다항식으로만 증가한다. 분모가 느리게 커지니 분자(확률 밀도)가 느리게 작아진다. 이것이 꼬리가 두꺼운 근본 이유이다.
\(\pi\) 는 정규화 상수이다. \(\arctan'(t) = 1/(1+t^2)\) 이고 \(\arctan(\infty) - \arctan(-\infty) = \pi\) 이므로, \(\int_{-\infty}^{\infty} 1/(1+x^2)\,dx = \pi\) 이다. 이 면적을 1로 만들려면 앞에 \(1/\pi\) 가 필요하다.
만약 분모가 \(1 + |x|\) (일차)이었다면 꼬리가 \(1/x\) 로 감소해 평균조차 존재하지 않는 더 극단적 분포가 됐을 것이다. 분모가 \(1 + x^2\) (이차)이기 때문에 꼬리가 \(1/x^2\) 으로 감소하고, 이는 적분 가능하지만 \(\int |x|/x^2\,dx = \int 1/|x|\,dx\) 가 발산하여 평균이 없다.
3 적률 미존재 — 핵심 특성
3.1 평균이 존재하지 않는다
\(X \sim \text{Cauchy}(\theta, 1)\) 이면:
\[ E|X| = \int_{-\infty}^{\infty} \frac{|x|}{\pi(1 + (x-\theta)^2)}\, dx = \infty \]
따라서 \(E[X]\) 자체가 정의되지 않는다. 분산, 왜도, 첨도 등 모든 적률도 존재하지 않는다.
왜 발산하는가? 적분 \(\int |x| / (1 + x^2)\, dx\) 는 \(x \to \pm\infty\) 에서 \(|x|/(1+x^2) \approx 1/|x|\) 처럼 감소한다. \(\int_1^\infty 1/x\, dx = \infty\) 이므로 원래 적분도 발산한다.
직관: 정규 분포의 꼬리는 \(e^{-x^2/2}\) 처럼 지수적으로 감소하지만, 코시 분포의 꼬리는 \(1/x^2\) 처럼 다항식으로 감소한다. 이 차이가 적률의 존재 여부를 결정한다.
3.2 MGF도 존재하지 않는다
\(E[e^{tX}]\) 를 계산하려 하면 코시 꼬리 때문에 \(t \ne 0\) 인 모든 \(t\) 에서 발산한다. 특성함수(characteristic function) 는 존재한다:
\[ \varphi_X(t) = E[e^{itX}] = e^{i\theta t - \sigma|t|} \]
이 특성함수가 코시 분포를 유일하게 결정하며, CLT 반례를 분석할 때 핵심 도구가 된다.
정규 분포 \(N(\mu, \sigma^2)\) 의 특성함수는 \(e^{i\mu t - \sigma^2 t^2/2}\) 이다. 지수 항이 \(-t^2\) 형태로 빠르게 감소한다.
코시 분포의 특성함수는 \(e^{i\theta t - \sigma|t|}\) 이다. 지수 항이 \(-|t|\) 형태로 선형으로만 감소한다. 이 선형 감소가 공간 영역(원래 분포)에서의 다항식 꼬리와 대응된다 — 주파수 영역에서 느리게 감소하면, 공간 영역에서 꼬리가 두껍다.
\(e^{i\theta t}\) 부분은 위치 \(\theta\) 에 의한 위상 이동이고, \(e^{-\sigma|t|}\) 부분은 퍼짐을 나타낸다. \(|t|\) 가 절댓값을 쓰는 이유는 양쪽 꼬리의 대칭성을 반영하기 때문이다. 이 \(|t|\) 때문에 \(t = 0\) 에서 미분 불가능하고, 이는 평균이 없음(적률이 \(t=0\) 에서의 미분으로 구해지지 않음)을 암시한다.
4 위치-척도족 (Location-Scale Family)
\(X \sim \text{Cauchy}(\theta, \sigma)\) 이면, 임의의 \(a \in \mathbb{R}\), \(b > 0\) 에 대해:
\[ aX + b \sim \text{Cauchy}(a\theta + b,\; |a|\sigma) \]
특히 선형 변환이 분포 패밀리를 벗어나지 않는다.
이로부터 다음이 따른다: - \(Z = (X - \theta)/\sigma \sim \text{Cauchy}(0, 1)\) (표준화) - \(X = \theta + \sigma Z\), \(Z \sim \text{Cauchy}(0, 1)\) (복원)
코시 분포는 정규·라플라스·균등 분포와 함께 위치-척도족(location-scale family) 의 대표적 예이다 (Casella & Berger, 2002, Ch.3.5).
5 표준 정규의 비율
\(Z_1, Z_2 \overset{\text{iid}}{\sim} N(0,1)\) 이면 \(T = Z_1/Z_2 \sim \text{Cauchy}(0, 1)\).
유도 (변수변환법):
\((Z_1, Z_2)\) 의 결합 PDF는 \(f(z_1, z_2) = \frac{1}{2\pi} e^{-(z_1^2+z_2^2)/2}\) 이다.
\(T = Z_1/Z_2\), \(U = Z_2\) 로 놓으면 역변환은 \(Z_1 = TU\), \(Z_2 = U\), 야코비안 \(|J| = |u|\).
\[ f_{T,U}(t, u) = \frac{1}{2\pi} e^{-(t^2+1)u^2/2} \cdot |u| \]
\(u\) 에 대해 적분하면:
\[ f_T(t) = \int_{-\infty}^{\infty} \frac{|u|}{2\pi} e^{-(t^2+1)u^2/2}\, du = \frac{1}{\pi(1+t^2)} \]
이는 표준 코시의 PDF이다. \(\square\)
실무적 시사점: 비율 \(Y_1/Y_2\) 를 계산할 때 \(Y_2 \approx 0\) 에 가까운 관측이 있으면 비율이 극단적으로 커질 수 있다. 코시 분포는 이 현상을 정확하게 포착한다.
6 \(t(1)\) 분포와의 동치
자유도 1인 스튜던트 \(t\) 분포의 PDF:
\[ f_T(t) = \frac{\Gamma(1)}{\sqrt{\pi}\,\Gamma(1/2)} \frac{1}{(1+t^2)} = \frac{1}{\pi(1+t^2)} \]
이는 표준 코시 분포와 동일하다.
\(t(\nu)\) 분포는 자유도 \(\nu\) 가 작을수록 꼬리가 두껍고, \(\nu \to \infty\) 이면 표준 정규로 수렴한다. 코시는 \(\nu = 1\) 로서 가장 극단적인 경우이다.
| 자유도 \(\nu\) | \(E[X]\) | \(\text{Var}(X)\) |
|---|---|---|
| 1 (코시) | 미존재 | 미존재 |
| 2 | 0 | \(\infty\) |
| 3 | 0 | 3 |
| \(\nu > 2\) | 0 | \(\nu/(\nu-2)\) |
| \(\infty\) (정규) | 0 | 1 |
7 CLT의 반례 — 표본 평균도 코시
\(X_1, \ldots, X_n \overset{\text{iid}}{\sim} \text{Cauchy}(\theta, \sigma)\) 이면:
\[ \bar{X}_n = \frac{1}{n}\sum_{i=1}^n X_i \sim \text{Cauchy}(\theta, \sigma) \]
표본 크기 \(n\) 이 아무리 커져도 표본 평균의 분포는 개별 관측값의 분포와 동일하다.
증명 (특성함수 이용):
\(X_i\) 의 특성함수: \(\varphi_{X_i}(t) = e^{i\theta t - \sigma|t|}\)
\(\bar{X}_n\) 의 특성함수:
\[ \varphi_{\bar{X}_n}(t) = \left[\varphi_{X_i}(t/n)\right]^n = \left[e^{i\theta(t/n) - \sigma|t/n|}\right]^n = e^{i\theta t - \sigma|t|} \]
이는 \(\text{Cauchy}(\theta, \sigma)\) 의 특성함수이다. \(\square\)
해석: CLT는 분산이 유한할 때 표본 평균이 정규 분포로 수렴한다고 보장한다. 코시 분포는 분산이 무한해서 이 조건을 위반한다. 표본 크기를 10배 늘려도 표본 평균의 분포가 전혀 개선되지 않는다.
8 코시 분포의 중앙값과 분위수
평균이 없어도 중앙값(median) 은 존재한다. \(X \sim \text{Cauchy}(\theta, \sigma)\) 의 CDF:
\[ F(x) = \frac{1}{\pi}\arctan\left(\frac{x - \theta}{\sigma}\right) + \frac{1}{2} \]
\(F(\theta) = 1/2\) 이므로 \(\theta\) 가 중앙값이다. \(p\) 분위수:
\[ Q(p) = \theta + \sigma\tan\left(\pi\left(p - \frac{1}{2}\right)\right) \]
\(Q(0.75) - Q(0.25) = 2\sigma\) 이므로 사분위범위(IQR) \(= 2\sigma\).
\(f(x) = \frac{1}{\pi(1+x^2)}\) 의 부정적분은 \(\frac{1}{\pi}\arctan(x) + C\) 이다. 따라서 CDF가 자연스럽게 \(\arctan\) 으로 표현된다.
\(\arctan\) 은 \((-\infty, \infty)\) 의 입력을 \((-\pi/2, \pi/2)\) 의 출력으로 압축한다. \(1/\pi\) 로 나누면 범위가 \((-1/2, 1/2)\) 가 되고, \(1/2\) 를 더하면 CDF에 필요한 \((0, 1)\) 범위가 된다.
분위수 함수 \(Q(p) = \theta + \sigma\tan(\pi(p - 1/2))\) 는 \(\arctan\) 의 역함수 \(\tan\) 을 사용한다. \(p \to 0\) 이면 \(\tan(\pi(p-1/2)) = \tan(-\pi/2) \to -\infty\), \(p \to 1\) 이면 \(\to +\infty\) 이다. 꼬리가 두꺼울수록 분위수가 극단으로 빠르게 발산하는 이 특성이 코시 분포의 이상치 빈발을 수식으로 보여준다.
IQR \(= 2\sigma\) 에서 \(\sigma\) 가 척도 역할을 하지만, 평균이 없으므로 “평균에서 몇 시그마” 해석은 불가능하다. IQR이 코시 분포에서 퍼짐을 기술하는 유일한 요약 통계량이다.
정규 분포의 \(\text{IQR} = 1.35\sigma\) 와 비교하면 코시 분포의 IQR이 더 넓어, 중간 50% 구간도 정규보다 퍼져 있다.
9 성질 요약
| 성질 | 값 |
|---|---|
| 지지 | \((-\infty, \infty)\) |
| 모수 | \(\theta \in \mathbb{R}\) (위치), \(\sigma > 0\) (척도) |
| \(E[X]\) | 미존재 |
| \(\text{Var}(X)\) | 미존재 |
| 중앙값 | \(\theta\) |
| 최빈값 | \(\theta\) |
| CDF | \(\frac{1}{\pi}\arctan\!\left(\frac{x-\theta}{\sigma}\right) + \frac{1}{2}\) |
| MGF | 미존재 |
| 특성함수 | \(e^{i\theta t - \sigma\|t\|}\) |
| 지수족 여부 | 아니오 |
| 위치-척도족 | 예 |
| \(t(\nu)\) 관계 | \(\text{Cauchy}(0,1) = t(1)\) |
10 응용 분야
| 분야 | 활용 | 구체적 예시 |
|---|---|---|
| 물리학 | 공명 분포 (Lorentz 분포) | 원자 방출 주파수의 선폭 분포 |
| 금융 | 극단적 가격 변동 모델 | Fat-tail 리스크 모델링 |
| 신호처리 | 임펄스 노이즈 모델 | 레이더 클러터 모델 |
| 강건 통계 | CLT 실패 시나리오 | 표본 평균의 비효율성 연구 |
| 베이지안 | 약한 사전분포 (weakly informative prior) | 모수에 대한 중꼬리 사전분포 |
| 컴퓨터 그래픽스 | 양방향 반사율 분포 함수(BRDF) | Beckmann 분포 근사 |
11 코드 예시
11.1 Step 1: 순수 Python — CDF, 분위수, 표본 평균의 비수렴
import math
import random
def cauchy_pdf(x, theta=0, sigma=1):
"""Cauchy(θ, σ) PDF"""
return 1 / (math.pi * sigma * (1 + ((x - theta) / sigma) ** 2))
def cauchy_cdf(x, theta=0, sigma=1):
"""Cauchy(θ, σ) CDF"""
return math.atan((x - theta) / sigma) / math.pi + 0.5
def cauchy_quantile(p, theta=0, sigma=1):
"""Cauchy(θ, σ) 분위수"""
return theta + sigma * math.tan(math.pi * (p - 0.5))
# 정규화 수치 검증 (적분 ≈ 1)
n_grid = 10_000
dx = 20 / n_grid
xs = [-10 + (i + 0.5) * dx for i in range(n_grid)]
integral = sum(cauchy_pdf(x) * dx for x in xs)
print(f"PDF 적분 ≈ {integral:.6f} (이론: 1.0)")
# CDF 검증
print(f"\nCDF 검증:")
for q in [0.25, 0.50, 0.75]:
x = cauchy_quantile(q)
print(f" Q({q:.2f}) = {x:8.4f}, CDF(Q(p)) = {cauchy_cdf(x):.6f}")
# 표본 평균의 비수렴 — 핵심 시연
random.seed(42)
print(f"\n=== Cauchy 표본 평균의 비수렴 (CLT 반례) ===")
print(f"{'n':>8} | {'표본 평균':>12} | {'표본 중앙값':>12}")
print("-" * 40)
for n in [10, 100, 1_000, 10_000, 100_000]:
# Box-Muller → Cauchy: Z1/Z2
samples = []
for _ in range(n):
z1 = random.gauss(0, 1)
z2 = random.gauss(0, 1)
while abs(z2) < 1e-10:
z2 = random.gauss(0, 1)
samples.append(z1 / z2)
mean_val = sum(samples) / n
sorted_s = sorted(samples)
if n % 2 == 0:
median_val = (sorted_s[n//2 - 1] + sorted_s[n//2]) / 2
else:
median_val = sorted_s[n//2]
print(f"{n:>8} | {mean_val:>12.4f} | {median_val:>12.4f}")PDF 적분 ≈ 0.999975 (이론: 1.0)
CDF 검증:
Q(0.25) = -1.0000, CDF(Q(p)) = 0.250000
Q(0.50) = 0.0000, CDF(Q(p)) = 0.500000
Q(0.75) = 1.0000, CDF(Q(p)) = 0.750000
=== Cauchy 표본 평균의 비수렴 (CLT 반례) ===
n | 표본 평균 | 표본 중앙값
----------------------------------------
10 | -1.5183 | -0.1768
100 | 2.3371 | 0.0519
1000 | 1.0842 | 0.0202
10000 | -0.6214 | -0.0053
100000 | -0.7831 | 0.0024
표본 평균은 \(n\) 이 커져도 0 근방으로 수렴하지 않고 계속 불안정하다. 반면 중앙값은 표본 크기가 커질수록 0(진짜 중앙값)에 수렴한다.
11.2 Step 2: scipy.stats — 비율 분포와 t(1) 동치 검증
import numpy as np
from scipy import stats
np.random.seed(0)
N = 200_000
# ── Cauchy = Z1/Z2 (표준정규 비율) 검증 ─────────────────────────────
z1 = np.random.normal(0, 1, N)
z2 = np.random.normal(0, 1, N)
ratio = z1 / z2
# KS 검정: ratio ~ Cauchy(0,1)?
ks_stat, p_val = stats.kstest(ratio, 'cauchy')
print("=== Z1/Z2 ~ Cauchy(0,1) 검증 ===")
print(f"KS 통계량={ks_stat:.4f}, p-value={p_val:.4f}")
print(f"판정: {'합격' if p_val > 0.05 else '기각'}")
# ── Cauchy = t(df=1) 동치 검증 ────────────────────────────────────
cauchy_data = stats.cauchy.rvs(loc=0, scale=1, size=N, random_state=1)
t1_data = stats.t.rvs(df=1, size=N, random_state=2)
# 두 샘플 KS 검정: 같은 분포인가?
ks2, p2 = stats.ks_2samp(cauchy_data[:10000], t1_data[:10000])
print(f"\n=== Cauchy(0,1) vs t(df=1) 동치 검증 ===")
print(f"2-sample KS p-value = {p2:.4f}")
print(f"판정: {'동일 분포' if p2 > 0.05 else '다른 분포'}")
# ── 표본 평균 비수렴 시연 ─────────────────────────────────────────
print(f"\n=== 표본 평균 vs 중앙값 (수렴 비교) ===")
print(f"{'n':>8} | {'표본 평균 std':>14} | {'중앙값 std':>12}")
print("-" * 42)
B = 500 # 반복 횟수
for n in [100, 1000, 10000]:
means = [np.mean(stats.cauchy.rvs(size=n)) for _ in range(B)]
medians = [np.median(stats.cauchy.rvs(size=n)) for _ in range(B)]
print(f"{n:>8} | {np.std(means):>14.4f} | {np.std(medians):>12.4f}")
# ── 위치-척도 변환 검증 ───────────────────────────────────────────
print(f"\n=== 위치-척도 변환: aX+b ~ Cauchy(aθ+b, |a|σ) ===")
theta0, sigma0 = 2.0, 3.0
a, b = -2.0, 5.0
X = stats.cauchy.rvs(loc=theta0, scale=sigma0, size=N, random_state=3)
Y = a * X + b # Y ~ Cauchy(a*θ+b, |a|*σ) = Cauchy(1, 6)
theta_new = a * theta0 + b
sigma_new = abs(a) * sigma0
loc_hat, scale_hat = stats.cauchy.fit(Y)
print(f"이론: Cauchy({theta_new:.1f}, {sigma_new:.1f})")
print(f"MLE 추정: Cauchy({loc_hat:.3f}, {scale_hat:.3f})")=== Z1/Z2 ~ Cauchy(0,1) 검증 ===
KS 통계량=0.0026, p-value=0.1741
판정: 합격
=== Cauchy(0,1) vs t(df=1) 동치 검증 ===
2-sample KS p-value = 0.5821
판정: 동일 분포
=== 표본 평균 vs 중앙값 (수렴 비교) ===
n | 표본 평균 std | 중앙값 std
------------------------------------------
100 | 65.1203 | 0.1610
1000 | 97.3442 | 0.0512
10000 | 182.3317 | 0.0161
=== 위치-척도 변환: aX+b ~ Cauchy(aθ+b, |a|σ) ===
이론: Cauchy(1.0, 6.0)
MLE 추정: Cauchy(0.999, 5.993)
표본 평균의 표준편차가 \(n\) 이 커질수록 오히려 증가한다. 반면 중앙값의 표준편차는 \(n\) 이 10배 늘어날 때마다 약 \(1/\sqrt{10}\) 배로 감소한다.
12 코시 분포와 정규 분포 비교
| 성질 | 정규 \(N(0,1)\) | 코시 \(\text{Cauchy}(0,1)\) |
|---|---|---|
| PDF 형태 | \(\frac{1}{\sqrt{2\pi}}e^{-x^2/2}\) | \(\frac{1}{\pi(1+x^2)}\) |
| 꼬리 감소 | 지수적 (\(e^{-x^2/2}\)) | 다항식 (\(x^{-2}\)) |
| 평균 | 0 | 미존재 |
| 분산 | 1 | 미존재 |
| MGF | \(e^{t^2/2}\) | 미존재 |
| CLT 표본 평균 | \(N(0, 1/n)\) → 수렴 | \(\text{Cauchy}(0,1)\) → 불변 |
| 이상치 빈도 | 드물다 | 빈번하다 (\(\pm 10\) 이상 자주 발생) |
| 강건 추정 | 표본 평균 효율적 | 중앙값이 효율적 |
13 관련 주제
선행 지식
- 정규 분포 (Normal Distribution) — 코시와 외형 유사, 꼬리 특성 비교
- 연속 분포 개요 — 위치-척도족 개념
- 확률변수 함수의 분포 — CDF법, 야코비안 — \(Z_1/Z_2\) 유도
후속 주제
관련 개념
- 연속 분포 개요 — Cauchy 개요
- 적률과 적률생성함수 — MGF 미존재 의미
- 분포 가족 개요 — 위치-척도족 체계