1 개요
단변량 확률변수의 PDF/PMF는 하나의 변수가 어떤 값을 취할 확률을 기술한다. 그러나 현실의 데이터는 거의 항상 여러 변수가 동시에 관측된다. 건강 조사에서 한 사람의 체중만 측정하는 것이 아니라 키, 혈압, 체온도 함께 측정한다. 이처럼 여러 확률변수를 동시에 다루려면, 각 변수의 개별 분포가 아닌 결합분포(joint distribution)가 필요하다 (Casella & Berger, 2002, Ch.4).
비유: 두 사람이 각자 서로 다른 방에서 주사위를 굴리는 상황을 생각하자. 각 사람의 주사위 결과를 따로 본다면 각각 주변분포이다. 그러나 “첫 번째 사람이 6을 던질 때 두 번째 사람이 무엇을 던지는가?”를 알려면 결합분포가 필요하다. 만약 두 사람이 사실 같은 주사위를 공유한다면(완전한 상관), 이는 결합분포에만 나타나고 주변분포에는 나타나지 않는다.
이 포스트의 핵심 메시지:
- 결합분포 → 주변분포: 항상 유도 가능 (적분 또는 합산)
- 주변분포 → 결합분포: 일반적으로 불가능 (정보 손실)
- 결합분포는 주변분포보다 더 많은 정보를 담고 있다
2 확률벡터 (Random Vector)
\(n\) 차원 확률벡터(random vector)란 표본공간 \(S\) 에서 \(\mathbb{R}^n\) 으로의 함수이다.
\(n = 2\) 인 경우, 표본공간의 각 원소에 순서쌍 \((x, y) \in \mathbb{R}^2\) 를 대응시키면 이변량(bivariate) 확률벡터 \((X, Y)\) 가 된다. 단변량 확률변수가 \(S \to \mathbb{R}\) 이었던 것의 자연스러운 확장이다.
2.1 예시: 주사위 두 개
두 개의 공정한 주사위를 던지는 실험에서 \(X\) = 두 눈의 합, \(Y\) = 두 눈의 차이의 절댓값으로 정의하면 (Casella & Berger, 2002, Example 4.1.2):
- 표본점 \((3, 3)\) → \(X = 6\) , \(Y = 0\)
- 표본점 \((4, 1)\) → \(X = 5\) , \(Y = 3\)
- 표본점 \((1, 4)\) → \(X = 5\) , \(Y = 3\) (같은 \((X, Y)\) 값)
36개의 표본점 각각에 \((X, Y)\) 값이 대응되므로, \((X, Y)\) 는 이변량 확률벡터이다.
3 결합 PMF (이산 경우)
이산 이변량 확률벡터 \((X, Y)\) 의 결합 확률질량함수(joint PMF)는:
\[ f(x, y) = P(X = x, Y = y) \]
결합 PMF가 합법적인 확률 모형이 되려면 두 조건을 충족해야 한다:
- \(f(x, y) \geq 0\) 모든 \((x, y)\) 에 대해
- \(\sum_{(x,y)} f(x, y) = 1\)
이 두 조건만 만족하면, 표본공간 \(S\) 를 명시하지 않고도 \(f(x, y)\) 를 정의하는 것만으로 \((X, Y)\) 의 확률 모형을 구성할 수 있다 (Casella & Berger, 2002, Ch.4).
3.1 기댓값
결합분포에서 \((X, Y)\) 의 함수 \(g(X, Y)\) 의 기댓값은:
\[ E[g(X, Y)] = \sum_x \sum_y g(x, y) \, f(x, y) \]
단변량에서 \(E[g(X)] = \sum g(x) f(x)\) 이었던 것의 자연스러운 확장이다. 기댓값의 선형성은 그대로 유지된다:
\[ E[a g_1(X, Y) + b g_2(X, Y) + c] = a \, E[g_1(X, Y)] + b \, E[g_2(X, Y)] + c \]
4 결합 PDF (연속 경우)
연속 이변량 확률벡터 \((X, Y)\) 의 결합 확률밀도함수(joint PDF) \(f(x, y)\) 는 다음을 만족한다:
\[ P((X, Y) \in A) = \iint_A f(x, y) \, dx \, dy \]
모든 \(A \subseteq \mathbb{R}^2\) 에 대해.
결합 PDF가 합법적이려면:
- \(f(x, y) \geq 0\) 모든 \((x, y)\) 에 대해
- \(\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(x, y) \, dx \, dy = 1\)
4.1 예시: 단위 정사각형 위의 결합 PDF
\(f(x, y) = 6xy^2\) , \(0 < x < 1\) , \(0 < y < 1\) (그 외에서 0)이라 하자 (Casella & Berger, 2002, Example 4.1.11).
합법성 확인:
\[ \int_0^1 \int_0^1 6xy^2 \, dx \, dy = \int_0^1 3y^2 \, dy = 1 \quad \checkmark \]
확률 계산: \(P(X + Y \geq 1)\) 을 구하면, 적분 영역은 \(\{1 - y \leq x < 1, \, 0 < y < 1\}\) 이다:
\[ P(X + Y \geq 1) = \int_0^1 \int_{1-y}^1 6xy^2 \, dx \, dy = \frac{9}{10} \]
5 주변분포 (Marginal Distribution)
5.1 정의
이산: \(\displaystyle f_X(x) = \sum_y f(x, y)\) , \(\displaystyle f_Y(y) = \sum_x f(x, y)\)
연속: \(\displaystyle f_X(x) = \int_{-\infty}^{\infty} f(x, y) \, dy\) , \(\displaystyle f_Y(y) = \int_{-\infty}^{\infty} f(x, y) \, dx\)
주변분포는 “다른 변수의 모든 가능한 값에 대해 합산(또는 적분)”하여 한 변수를 제거하는 것이다. 직관적으로, 결합 PMF를 표로 만들었을 때 행(또는 열)을 합산한 결과가 주변 PMF이다 — 표의 여백(margin)에 적는다는 뜻에서 “marginal”이라 부른다.
5.2 예시: 연속 결합 PDF에서 주변 PDF 유도
\(f(x, y) = 6xy^2\) ( \(0 < x < 1\) , \(0 < y < 1\) )에서 \(X\) 의 주변 PDF를 구한다 (Casella & Berger, 2002, Example 4.1.11):
\[ f_X(x) = \int_0^1 6xy^2 \, dy = 6x \cdot \frac{y^3}{3} \Big|_0^1 = 2x, \quad 0 < x < 1 \]
이 주변 PDF를 사용하면 \(X\) 만의 확률을 계산할 수 있다:
\[ P\!\left(\frac{1}{2} < X < \frac{3}{4}\right) = \int_{1/2}^{3/4} 2x \, dx = \frac{5}{16} \]
6 결합분포와 주변분포의 관계: 정보 손실
6.1 핵심 사실: 주변분포만으로 결합분포를 복원할 수 없다
같은 주변분포를 가지면서 서로 다른 결합분포가 존재한다 (Casella & Berger, 2002, Example 4.1.9).
결합분포 A (Example 4.1.5):
\(f(0,0) = f(0,1) = 1/6\) , \(f(1,0) = f(1,1) = 1/3\)
결합분포 B (Example 4.1.9):
\(f(0,0) = 1/12\) , \(f(1,0) = 5/12\) , \(f(0,1) = f(1,1) = 3/12\)
두 결합분포의 주변분포는 동일하다: \(f_X(0) = 1/3\) , \(f_X(1) = 2/3\) , \(f_Y(0) = f_Y(1) = 1/2\) .
그러나 결합 구조는 완전히 다르다.
이 현상이 실무에서 의미하는 바: 두 변수의 개별 분포를 아는 것만으로는 변수 간 관계(상관, 독립성 여부 등)를 알 수 없다. 관계를 이해하려면 반드시 결합분포가 필요하다.
6.2 정보의 계층
결합분포 f(x, y)
│
├── 주변분포 f_X(x), f_Y(y) ← 적분/합산으로 유도 가능
│ (변수 간 관계 정보가 소실됨)
│
└── 조건부분포 f(y|x) = f(x,y)/f_X(x) ← 관계 정보 보존
결합분포는 최대 정보, 주변분포는 최소 정보, 조건부분포는 그 사이에 위치한다. 주변분포 유도 과정에서 소실되는 정보가 바로 변수 간 의존성 구조이다.
7 결합 CDF (Cumulative Distribution Function)
결합분포는 CDF로도 기술할 수 있다:
\[ F(x, y) = P(X \leq x, Y \leq y) \]
연속인 경우 결합 PDF와의 관계는:
\[ F(x, y) = \int_{-\infty}^x \int_{-\infty}^y f(s, t) \, dt \, ds \]
역으로, 이변량 미적분학의 기본정리에 의해:
\[ \frac{\partial^2 F(x, y)}{\partial x \, \partial y} = f(x, y) \]
\(f\) 의 연속점에서 성립한다 (Casella & Berger, 2002, Ch.4). CDF에서 출발하여 혼합 편미분으로 PDF를 구할 수 있다는 것이다.
8 왜 결합분포가 필요한가
8.1 주변분포로 충분하지 않은 경우
두 변수의 개별 분포를 안다고 해서 동시적 행동을 예측할 수 있는 것은 아니다.
| 상황 | 주변분포만으로 | 결합분포가 있으면 |
|---|---|---|
| \(P(X + Y > 10)\) | 계산 불가 (일반적으로) | 직접 계산 가능 |
| \(\text{Cov}(X, Y)\) | 계산 불가 | \(E[XY] - E[X]E[Y]\) 로 계산 |
| \(X\) 가 클 때 \(Y\) 의 분포 | 알 수 없음 | \(f(y|x) = f(x,y)/f_X(x)\) |
8.2 유일하게 주변분포만으로 충분한 경우: 독립
\(X\) 와 \(Y\) 가 독립이면 \(f(x, y) = f_X(x) \cdot f_Y(y)\) 이므로, 주변분포만으로 결합분포를 완전히 복원할 수 있다. 독립은 결합분포를 주변분포로 분해할 수 있는 유일한 조건이다. 이것이 독립성 가정이 통계학에서 그토록 강력한 이유이다.
9 응용 분야
| 분야 | 활용 | 구체적 예시 |
|---|---|---|
| 회귀분석 | \((X, Y)\) 의 결합분포에서 \(E[Y|X]\) 유도 | 조건부 기대값 = 회귀함수 |
| 포트폴리오 이론 | 자산 수익률의 결합분포 | \(\text{Var}(aX + bY) = a^2\sigma_X^2 + b^2\sigma_Y^2 + 2ab\text{Cov}(X,Y)\) |
| 신뢰성 공학 | 부품 수명의 결합분포 | 시스템 수명 = \(\min(X, Y)\) 의 분포 |
| 베이지안 추론 | 모수와 데이터의 결합분포 | 사후분포 \(\propto\) 가능도 \(\times\) 사전분포 |
| 이미지 처리 | 인접 픽셀의 결합분포 | 마르코프 랜덤 필드 |
| 생존분석 | 사건 시간과 중도절단의 결합 | 경쟁위험 모형 |
10 예시: 결합 PDF에서 주변 PDF와 확률 계산
10.1 손계산
\(f(x, y) = e^{-y}\) , \(0 < x < y < \infty\) 에서 \(P(X + Y \geq 1)\) 을 구한다 (Casella & Berger, 2002, Example 4.1.12).
여집합을 활용하면 계산이 간편해진다:
\[ P(X + Y \geq 1) = 1 - P(X + Y < 1) \]
\(f(x, y) > 0\) 인 영역과 \(x + y < 1\) 의 교집합은 \(\{0 < x < y, \, x + y < 1\}\) 삼각형이다:
\[ P(X + Y < 1) = \int_0^{1/2} \int_x^{1-x} e^{-y} \, dy \, dx = \int_0^{1/2} (e^{-x} - e^{-(1-x)}) \, dx \]
계산하면 \(P(X + Y \geq 1) = 2e^{-1/2} - e^{-1} \approx 0.845\) 이다.
핵심 교훈: 결합 PDF의 적분 영역을 설정할 때 그래프를 그려서 영역을 시각화하는 것이 거의 항상 도움이 된다 (Casella & Berger, 2002, Ch.4).
11 코드 예시
11.1 Step 1: 순수 Python 구현 (원리 이해)
이산 결합 PMF에서 주변분포를 유도하고, 같은 주변분포를 가지는 서로 다른 결합분포를 구성한다.
# 두 결합분포가 같은 주변분포를 가질 수 있음을 확인
# 결합분포 A
joint_A = {
(0, 0): 1/6, (0, 1): 1/6,
(1, 0): 1/3, (1, 1): 1/3,
}
# 결합분포 B
joint_B = {
(0, 0): 1/12, (0, 1): 3/12,
(1, 0): 5/12, (1, 1): 3/12,
}
def marginals(joint):
"""결합 PMF에서 주변 PMF 유도"""
mx, my = {}, {}
for (x, y), p in joint.items():
mx[x] = mx.get(x, 0) + p
my[y] = my.get(y, 0) + p
return mx, my
print("=== 결합분포 A ===")
mx_a, my_a = marginals(joint_A)
print(f" f_X: {dict(sorted(mx_a.items()))}")
print(f" f_Y: {dict(sorted(my_a.items()))}")
print("\n=== 결합분포 B ===")
mx_b, my_b = marginals(joint_B)
print(f" f_X: {dict(sorted(mx_b.items()))}")
print(f" f_Y: {dict(sorted(my_b.items()))}")
print(f"\n주변분포 동일 여부:")
print(f" f_X 동일: {all(abs(mx_a[k] - mx_b[k]) < 1e-10 for k in mx_a)}")
print(f" f_Y 동일: {all(abs(my_a[k] - my_b[k]) < 1e-10 for k in my_a)}")
print(f"\n결합분포 동일 여부: {joint_A == joint_B}")
print("→ 주변분포가 같아도 결합분포는 다를 수 있다!")11.2 연속 결합 PDF에서 주변 PDF 유도
import math
# f(x, y) = 6xy^2, 0 < x < 1, 0 < y < 1
# 주변 PDF: f_X(x) = int_0^1 6xy^2 dy = 2x
def joint_pdf(x, y):
if 0 < x < 1 and 0 < y < 1:
return 6 * x * y**2
return 0.0
def marginal_x_theory(x):
"""이론적 주변 PDF: f_X(x) = 2x"""
if 0 < x < 1:
return 2 * x
return 0.0
# 수치 적분으로 주변 PDF 검증
n_grid = 1000
dy = 1.0 / n_grid
x_test = 0.7
marginal_x_numerical = sum(joint_pdf(x_test, (i + 0.5) * dy) * dy for i in range(n_grid))
marginal_x_exact = marginal_x_theory(x_test)
print(f"x = {x_test} 에서 주변 PDF:")
print(f" 수치 적분: {marginal_x_numerical:.6f}")
print(f" 이론값: {marginal_x_exact:.6f}")
# P(1/2 < X < 3/4) 계산
dx = 1.0 / n_grid
prob_numerical = sum(marginal_x_theory((i + 0.5) * dx) * dx
for i in range(n_grid) if 0.5 < (i + 0.5) * dx < 0.75)
prob_exact = 5 / 16
print(f"\nP(1/2 < X < 3/4):")
print(f" 수치 적분: {prob_numerical:.6f}")
print(f" 이론값: {prob_exact:.6f}")11.3 Step 2: scipy/numpy 구현 (실무 활용)
2변량 결합 PDF의 시각화와 주변분포 유도를 시연한다.
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
fig, axes = plt.subplots(1, 3, figsize=(14, 4))
# 결합 PDF: f(x,y) = 6xy^2, 0<x<1, 0<y<1
x_grid = np.linspace(0, 1, 100)
y_grid = np.linspace(0, 1, 100)
X, Y = np.meshgrid(x_grid, y_grid)
Z = 6 * X * Y**2
# 1) 결합 PDF 등고선
ax = axes[0]
cf = ax.contourf(X, Y, Z, levels=20, cmap='viridis')
plt.colorbar(cf, ax=ax, label='f(x,y)')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Joint PDF: f(x,y) = 6xy²')
# 2) 주변 PDF
ax = axes[1]
marginal_x = 2 * x_grid # f_X(x) = 2x
marginal_y = 3 * y_grid**2 # f_Y(y) = 3y^2
ax.plot(x_grid, marginal_x, 'b-', linewidth=2, label=r'$f_X(x) = 2x$')
ax.plot(y_grid, marginal_y, 'r-', linewidth=2, label=r'$f_Y(y) = 3y^2$')
ax.set_xlabel('value')
ax.set_ylabel('density')
ax.set_title('Marginal PDFs')
ax.legend()
# 3) 2변량 정규의 주변분포
ax = axes[2]
mu = [1, 3]
cov = [[1, 0.6], [0.6, 1.5]]
samples = np.random.multivariate_normal(mu, cov, 3000)
ax.scatter(samples[:, 0], samples[:, 1], alpha=0.1, s=3, c='gray')
# 주변 히스토그램 (상단/우측에 겹침)
x_vals = np.linspace(-3, 5, 200)
ax.plot(x_vals, stats.norm.pdf(x_vals, mu[0], np.sqrt(cov[0][0])) * 1.5 + 6,
'b-', linewidth=2, label=r'Marginal $X$')
ax.plot(stats.norm.pdf(x_vals, mu[1], np.sqrt(cov[1][1])) * 1.5 - 3, x_vals,
'r-', linewidth=2, label=r'Marginal $Y$')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Bivariate Normal: Joint → Marginals')
ax.legend(fontsize=8)
plt.tight_layout()
plt.show()11.4 결합 CDF와 PDF의 관계
import numpy as np
# f(x, y) = 6xy^2, 0<x<1, 0<y<1
# F(x, y) = int_0^x int_0^y 6st^2 dt ds = x^2 * y^3
def joint_cdf(x, y):
x = np.clip(x, 0, 1)
y = np.clip(y, 0, 1)
return x**2 * y**3
# CDF에서 PDF 복원: d^2F / dxdy
h = 1e-5
x0, y0 = 0.5, 0.7
# 수치 혼합 편미분
pdf_numerical = (
joint_cdf(x0 + h, y0 + h)
- joint_cdf(x0 + h, y0 - h)
- joint_cdf(x0 - h, y0 + h)
+ joint_cdf(x0 - h, y0 - h)
) / (4 * h**2)
pdf_exact = 6 * x0 * y0**2
print(f"d^2F/dxdy at ({x0}, {y0}):")
print(f" 수치 미분: {pdf_numerical:.6f}")
print(f" f(x,y): {pdf_exact:.6f}")
print(f" CDF → PDF 복원 확인 완료")12 관련 주제
선행 지식
후속 주제
- 조건부분포와 독립성 — \(f(y|x)\) 와 독립의 정의
- 이변량 변환 — 야코비안 방법
- 공분산과 상관계수 — 변수 간 관계의 정량화
관련 개념