확률변수 (Random Variables)

측도론적 정의, PMF·PDF·CDF, 이산·연속·혼합형

확률변수는 표본공간의 결과를 실수로 대응시키는 함수다. 가측함수(measurable function)로서의 엄밀한 정의부터 시작해 이산형의 PMF, 연속형의 PDF, 모든 확률변수를 아우르는 CDF의 성질을 체계적으로 다룬다. 분포의 동일성 조건, 혼합형 확률변수, 확률변수의 함수까지 포함한다.

Statistics
저자

Kwangmin Kim

공개

2026년 03월 27일

1 왜 확률변수인가

지금까지 확률을 사건(집합) 의 언어로 다뤘다. 그런데 실제 데이터는 사건이 아닌 숫자로 표현된다.

  • 주사위 눈: 1, 2, 3, 4, 5, 6
  • 환자의 혈압: 120.5 mmHg
  • 검사 결과: 양성(1), 음성(0)

확률변수(random variable) 는 표본공간의 결과를 실수로 변환하는 다리(bridge)다.

\[ \text{표본공간 } \Omega \xrightarrow{X} \mathbb{R} \]

이 변환을 통해 확률론의 언어가 데이터 분석의 언어와 만난다.


2 왜 확률변수가 필요한가

집합론과 확률 공리는 사건(집합) 의 언어다. 통계 모델링은 숫자의 언어가 필요하다.

확률변수 없이는 다음이 불가능하다:

  • “키가 170cm 이상일 확률”을 수식으로 표현할 수 없다
  • 기댓값, 분산, 적률생성함수를 정의할 수 없다
  • 두 분포를 대수적으로 비교할 수 없다

확률변수가 도입되면:

이전 (집합 언어) 이후 (숫자 언어)
사건 \(\{\)\(\geq\) 170\(\}\) \(P(X \geq 170) = 1 - F_X(170)\)
분포 비교 불가 \(F_X = F_Y\) 이면 동일 분포
평균 정의 불가 \(E[X] = \int x f(x)dx\)

선행 개념인 σ-대수가 “어떤 사건에 확률을 부여하는가”를 정의했다면, 확률변수는 “사건을 실수로 변환해 계산 가능하게” 만든다. 이후 포스트의 기댓값, 분산, 적률생성함수, 분포 수렴은 모두 이 다리 위에 세워진다.


3 형식적 정의

정의: 확률변수 (Random Variable)

확률 공간 \((\Omega, \mathcal{F}, P)\) 위에서 정의된 함수 \(X: \Omega \to \mathbb{R}\)확률변수이려면 가측(measurable) 이어야 한다:

\[ \forall\, B \in \mathcal{B}(\mathbb{R}): \quad \{X \in B\} := \{\omega \in \Omega : X(\omega) \in B\} \in \mathcal{F} \]

즉, \(\mathbb{R}\) 의 모든 보렐 집합의 역상(preimage)이 \(\mathcal{F}\) 에 속해야 한다.

직관

가측 조건은 “\(X\) 가 어떤 범위의 값을 가질 확률”을 정의할 수 있어야 한다는 의미다.

\(P(X \leq 3)\) 이 의미 있으려면 \(\{X \leq 3\} = \{\omega : X(\omega) \leq 3\}\)\(\mathcal{F}\) 의 원소, 즉 사건이어야 한다.

대부분의 실용적 함수(연속함수, 단조함수, 계단함수 등)는 자동으로 가측이다.

가측성이 실무에서 의미하는 것

“가측(measurable)”이라는 조건은 추상적으로 보이지만, 실무적 의미는 명확하다:

  • ML 모델링: 입력 변수 \(X\) 에 대해 \(P(X \leq t)\) 를 계산할 수 있어야 손실 함수의 기댓값을 최적화할 수 있다
  • A/B 테스트: 전환율 \(X\) 에 대해 \(P(X > 0.05)\) 를 정의할 수 있어야 유의성 검정이 가능하다
  • 금융: 포트폴리오 수익률 \(X\) 에 대해 \(P(X < -0.1)\) (VaR)을 계산하려면 \(X\) 가 가측이어야 한다

가측이 아닌 함수를 실무에서 마주칠 일은 거의 없다. 그러나 이 조건을 명시하는 이유는 확률론의 논리적 완결성을 보장하기 위해서다 — 모든 “확률 계산”이 잘 정의되어 있음을 보증한다.

예시

실험 \(\omega\) \(X(\omega)\)
동전 2번 HH 2 (앞면 수)
동전 2번 HT, TH 1
동전 2번 TT 0
주사위 \(k \in \{1,\ldots,6\}\) \(k\)
환자 검사 “양성” 1
환자 검사 “음성” 0

4 확률변수의 분류

분류: 이산형 vs 연속형
  • 이산형(discrete): \(X\) 의 치역(range)이 유한하거나 가산 무한 (\(\{x_1, x_2, \ldots\}\))
  • 연속형(continuous): \(X\) 의 치역이 구간(또는 구간의 합집합)이며, 비가산 무한
  • 혼합형(mixed): 이산형과 연속형의 혼합
유형 예시 주요 함수
이산형 동전 앞면 수, 불량품 수, 클릭 수 PMF
연속형 키, 체중, 대기 시간, 수익률 PDF
혼합형 보험금(발생시 연속, 미발생시 0) CDF

5 이산형 확률변수와 PMF

5.1 확률질량함수

정의: 확률질량함수 (PMF, Probability Mass Function)

이산형 확률변수 \(X\)확률질량함수 \(p_X: \mathbb{R} \to [0,1]\):

\[ p_X(x) = P(X = x) = P(\{\omega \in \Omega : X(\omega) = x\}) \]

정리: PMF의 조건

함수 \(p: \mathbb{R} \to \mathbb{R}\) 이 어떤 이산형 확률변수의 PMF가 되기 위한 필요충분조건:

  1. \(p(x) \geq 0\) for all \(x\)
  2. \(\displaystyle\sum_{x} p(x) = 1\) (치역의 모든 값에 대한 합)
  3. \(p(x) = 0\) if \(x \notin \{x_1, x_2, \ldots\}\) (정의된 지점 외에는 0)

예시: 주사위

\[ p_X(x) = \begin{cases} 1/6 & x \in \{1,2,3,4,5,6\} \\ 0 & \text{otherwise} \end{cases} \]

예시: 동전 2번 (앞면 수)

\(x\) 0 1 2
\(p_X(x)\) 1/4 1/2 1/4

합: \(1/4 + 1/2 + 1/4 = 1\)


6 연속형 확률변수와 PDF

6.1 연속형의 핵심 특성

연속형 확률변수는 임의의 특정 점에서 확률이 0이다:

\[ P(X = x) = 0 \quad \text{for all } x \in \mathbb{R} \]

대신 구간의 확률만 양수다:

\[ P(a < X \leq b) = \int_a^b f_X(x)\,dx > 0 \quad\text{(일반적으로)} \]

6.2 확률밀도함수

정의: 확률밀도함수 (PDF, Probability Density Function)

함수 \(f_X: \mathbb{R} \to \mathbb{R}\) 이 연속형 확률변수 \(X\)확률밀도함수이면:

\[ P(X \in B) = \int_B f_X(x)\,dx \quad \text{for all } B \in \mathcal{B}(\mathbb{R}) \]

정리: PDF의 조건

\(f: \mathbb{R} \to \mathbb{R}\) 이 어떤 연속형 확률변수의 PDF가 되기 위한 필요충분조건:

  1. \(f(x) \geq 0\) for all \(x\)
  2. \(\displaystyle\int_{-\infty}^{\infty} f(x)\,dx = 1\)
주의: PDF 값 \(f(x)\) 는 확률이 아니다

\(f(x)\)밀도(density) 다. \(f(x) > 1\) 도 가능하다.

\[ P(x \leq X \leq x+dx) \approx f(x)\,dx \quad\text{(무한소 구간의 확률)} \]

\(f(x)\) 가 크다” = “그 근방의 값이 자주 나온다”는 뜻이지, 확률이 크다는 뜻이 아니다.

예시: 균등 분포 \(\text{Uniform}(0,1)\)

\[ f_X(x) = \begin{cases} 1 & 0 \leq x \leq 1 \\ 0 & \text{otherwise} \end{cases} \]

\[ P(0.3 \leq X \leq 0.7) = \int_{0.3}^{0.7} 1\,dx = 0.4 \]

예시: 지수 분포 \(\text{Exp}(\lambda)\)

\[ f_X(x) = \begin{cases} \lambda e^{-\lambda x} & x \geq 0 \\ 0 & x < 0 \end{cases} \]

\(\int_0^\infty \lambda e^{-\lambda x}dx = [-e^{-\lambda x}]_0^\infty = 1\)

\(P(X > t) = e^{-\lambda t}\) (무기억성)


7 누적분포함수 (CDF)

7.1 정의

정의: 누적분포함수 (CDF, Cumulative Distribution Function)

확률변수 \(X\)CDF \(F_X: \mathbb{R} \to [0,1]\):

\[ F_X(x) = P(X \leq x) \quad \text{for all } x \in \mathbb{R} \]

CDF는 이산형·연속형·혼합형 모든 확률변수에 대해 정의된다. 확률변수의 분포는 CDF 하나로 완전히 특성화된다.

7.2 CDF의 성질

정리: CDF의 필요충분조건

\(F: \mathbb{R} \to [0,1]\) 이 어떤 확률변수의 CDF가 되기 위한 필요충분조건:

  1. 단조 비감소: \(x_1 < x_2 \Rightarrow F(x_1) \leq F(x_2)\)
  2. 우연속: \(\lim_{t \downarrow x} F(t) = F(x)\) for all \(x\)
  3. 극한 조건: \(\lim_{x \to -\infty} F(x) = 0\), \(\lim_{x \to +\infty} F(x) = 1\)

증명 (단조성): \(x_1 < x_2\) 이면 \(\{X \leq x_1\} \subseteq \{X \leq x_2\}\) 이므로 확률의 단조성에 의해 \(F(x_1) \leq F(x_2)\). \(\quad\blacksquare\)

증명 (극한): \(A_n = \{X \leq -n\}\) 은 감소하며 \(\bigcap A_n = \emptyset\). 확률의 연속성에 의해 \(F(-n) = P(A_n) \to P(\emptyset) = 0\). \(\quad\blacksquare\)

7.3 CDF로 구간 확률 계산

\[ \begin{aligned} P(a < X \leq b) &= F(b) - F(a) \\ P(X > a) &= 1 - F(a) \\ P(X = a) &= F(a) - F(a^-) = F(a) - \lim_{x \uparrow a} F(x) \end{aligned} \]

핵심

\(P(X = a) > 0\) ↔︎ \(F\)\(a\) 에서 불연속 (점프) ↔︎ \(X\)\(a\) 에 점 질량을 가짐

연속형 확률변수: \(F\) 가 어디서도 점프하지 않음 → \(P(X=a)=0\) for all \(a\)

7.4 이산형 CDF vs 연속형 CDF

이산형 예시 (동전 2번, 앞면 수):

\[ F_X(x) = \begin{cases} 0 & x < 0 \\ 1/4 & 0 \leq x < 1 \\ 3/4 & 1 \leq x < 2 \\ 1 & x \geq 2 \end{cases} \]

→ 계단함수(step function): \(x=0,1,2\) 에서 점프

연속형 예시 (\(\text{Uniform}(0,1)\)):

\[ F_X(x) = \begin{cases} 0 & x < 0 \\ x & 0 \leq x \leq 1 \\ 1 & x > 1 \end{cases} \]

→ 연속함수: 어디서도 점프 없음

7.5 PDF와 CDF의 관계 (연속형)

\[ F_X(x) = \int_{-\infty}^x f_X(t)\,dt \quad\Longleftrightarrow\quad f_X(x) = F_X'(x) \]

CDF를 미분하면 PDF, PDF를 적분하면 CDF.


8 분포의 동일성

정의: 동일 분포 (Identical Distribution)

두 확률변수 \(X\)\(Y\)동일 분포이면 (\(X \overset{d}{=} Y\) 또는 \(X \sim Y\)):

\[ F_X(x) = F_Y(x) \quad \text{for all } x \in \mathbb{R} \]

같은 확률 공간에 있을 필요도 없고, \(X(\omega) = Y(\omega)\) 일 필요도 없다. 분포(=CDF)만 같으면 동일 분포다.

예시

  • 동전 앞면 수 \(X \in \{0,1\}\) 와 주사위가 짝수인지 \(Y \in \{0,1\}\): 동일 분포 (둘 다 베르누이(1/2))
  • 같은 정규 분포에서 독립으로 뽑은 두 표본 \(X_1, X_2\): 동일 분포이지만 \(X_1 \neq X_2\)

9 혼합형 확률변수

정의: 혼합형 확률변수

이산 부분과 연속 부분을 모두 포함:

\[ F_X(x) = p \cdot F_{\text{이산}}(x) + (1-p) \cdot F_{\text{연속}}(x), \quad 0 < p < 1 \]

예시: 보험금

\[ X = \begin{cases} 0 & \text{사고 없음 (확률 } 0.7\text{)} \\ Y \sim \text{Exp}(0.01) & \text{사고 있음 (확률 } 0.3\text{)} \end{cases} \]

CDF: \[ F_X(x) = \begin{cases} 0 & x < 0 \\ 0.7 + 0.3(1 - e^{-0.01x}) & x \geq 0 \end{cases} \]

\(P(X=0) = F_X(0) - F_X(0^-) = 0.7\) (이산 부분) \(P(X > t) = 0.3\,e^{-0.01t}\) for \(t > 0\) (연속 부분)


10 확률변수의 함수

\(X\) 가 확률변수이고 \(g: \mathbb{R} \to \mathbb{R}\) 이 가측 함수이면, \(Y = g(X)\) 도 확률변수다.

분포 변환 공식

이산형: \(p_Y(y) = \sum_{x:\,g(x)=y} p_X(x)\)

연속형 (단조 미분가능 \(g\)): 변수변환(Jacobian) 공식:

\[ f_Y(y) = f_X(g^{-1}(y)) \cdot \left|\frac{d}{dy}g^{-1}(y)\right| \]

일반적 방법 (CDF 방법): \[ F_Y(y) = P(Y \leq y) = P(g(X) \leq y) \xrightarrow{\text{미분}} f_Y(y) \]

예시: \(Y = X^2\), \(X \sim \text{Uniform}(-1,1)\)

\[ F_Y(y) = P(X^2 \leq y) = P(-\sqrt{y} \leq X \leq \sqrt{y}) = \sqrt{y}, \quad 0 \leq y \leq 1 \]

\[ f_Y(y) = F_Y'(y) = \frac{1}{2\sqrt{y}}, \quad 0 < y \leq 1 \]


11 응용 분야

분야 확률변수 분포
A/B 테스트 클릭 여부 (0/1) 베르누이
신뢰도 공학 부품 수명 지수, 와이블
금융 일별 수익률 정규, 학생-t
자연어처리 단어 등장 횟수 포아송, 음이항
임상시험 생존 시간 지수, 코크스 비례위험
딥러닝 드롭아웃 마스크 베르누이

12 예시: 이산 + 연속 통합

12.1 이항 확률변수

\(n=10\) 번 독립 베르누이 시행, 성공 확률 \(p=0.3\). \(X\) = 성공 횟수.

\[ p_X(k) = \binom{10}{k}(0.3)^k(0.7)^{10-k}, \quad k=0,1,\ldots,10 \]

\[ F_X(x) = \sum_{k=0}^{\lfloor x \rfloor} \binom{10}{k}(0.3)^k(0.7)^{10-k} \]

12.2 정규 확률변수

\(X \sim N(\mu, \sigma^2)\):

\[ f_X(x) = \frac{1}{\sigma\sqrt{2\pi}} \exp\!\left(-\frac{(x-\mu)^2}{2\sigma^2}\right) \]

\[ F_X(x) = \Phi\!\left(\frac{x-\mu}{\sigma}\right), \quad \Phi(z) = \int_{-\infty}^z \frac{1}{\sqrt{2\pi}}e^{-t^2/2}dt \]

표준화: \(Z = (X-\mu)/\sigma \sim N(0,1)\)\(X\) 의 분포를 \(Z\) 표를 통해 계산.


13 코드 예시

13.1 Step 1: 순수 Python — PMF·CDF 직접 구현

import math

# ── 이산형: 이항 분포 PMF·CDF ────────────────────────────────────
def binom_pmf(k, n, p):
    return math.comb(n, k) * (p**k) * ((1-p)**(n-k))

def binom_cdf(x, n, p):
    return sum(binom_pmf(k, n, p) for k in range(math.floor(x)+1))

n, p = 10, 0.3
print("이항분포 B(10, 0.3) PMF:")
print(f"{'k':>4} {'PMF':>10} {'CDF':>10}")
print("-" * 26)
for k in range(n+1):
    pmf = binom_pmf(k, n, p)
    cdf = binom_cdf(k, n, p)
    print(f"{k:>4} {pmf:>10.6f} {cdf:>10.6f}")

# PMF 합이 1인지 확인
total = sum(binom_pmf(k, n, p) for k in range(n+1))
print(f"\nPMF 합 = {total:.10f}")  # 1.0

# ── 연속형: 균등 분포 PDF·CDF ────────────────────────────────────
def uniform_pdf(x, a=0, b=1):
    return 1/(b-a) if a <= x <= b else 0

def uniform_cdf(x, a=0, b=1):
    if x < a: return 0
    if x > b: return 1
    return (x - a) / (b - a)

print("\n균등 분포 U(0,1) CDF:")
for x in [0.0, 0.25, 0.5, 0.75, 1.0]:
    print(f"  F({x}) = {uniform_cdf(x):.4f}")

# 구간 확률
a, b = 0.3, 0.7
prob = uniform_cdf(b) - uniform_cdf(a)
print(f"\nP(0.3 < X ≤ 0.7) = {prob:.4f}")  # 0.4

# ── 이산형 CDF의 점프 확인 ────────────────────────────────────────
print("\n동전 2번 앞면 수 CDF (점프 확인):")
X_pmf = {0: 0.25, 1: 0.50, 2: 0.25}

def coin_cdf(x):
    return sum(v for k,v in X_pmf.items() if k <= x)

for x in [-0.5, 0, 0.5, 1, 1.5, 2, 2.5]:
    print(f"  F({x:4.1f}) = {coin_cdf(x):.4f}")

# P(X=1) = F(1) - F(1^-) = F(1) - F(0.999)
jump_at_1 = coin_cdf(1) - coin_cdf(0.999)
print(f"\nP(X=1) = F(1) - F(1⁻) = {jump_at_1:.4f}")  # 0.5

13.2 Step 2: scipy·numpy — 분포 시각화와 변수변환

import numpy as np
from scipy import stats

# ── 여러 분포의 PMF·PDF·CDF 비교 ────────────────────────────────
distributions = {
    "Binomial(10,0.3)":    stats.binom(n=10, p=0.3),
    "Poisson(3)":          stats.poisson(mu=3),
}

print("이산형 분포 비교 (k=0..10):")
print(f"{'k':>4} {'Binom PMF':>12} {'Binom CDF':>12} {'Poisson PMF':>14} {'Poisson CDF':>14}")
print("-" * 58)
for k in range(11):
    b_pmf = stats.binom.pmf(k, 10, 0.3)
    b_cdf = stats.binom.cdf(k, 10, 0.3)
    p_pmf = stats.poisson.pmf(k, 3)
    p_cdf = stats.poisson.cdf(k, 3)
    print(f"{k:>4} {b_pmf:>12.6f} {b_cdf:>12.6f} {p_pmf:>14.6f} {p_cdf:>14.6f}")

# ── 연속형: 정규 분포 ──────────────────────────────────────────────
mu, sigma = 170, 10  # 키 (cm)
dist = stats.norm(loc=mu, scale=sigma)

print(f"\n정규분포 N({mu}, {sigma}²):")
print(f"  P(X ≤ 180) = {dist.cdf(180):.6f}")          # 약 84.1%
print(f"  P(160 < X ≤ 180) = {dist.cdf(180)-dist.cdf(160):.6f}")  # 약 68.3%
print(f"  P(X > 190) = {dist.sf(190):.6f}")             # sf = 1 - cdf

# 백분위수(quantile)
for q in [0.025, 0.25, 0.50, 0.75, 0.975]:
    print(f"  {q*100:.1f}th percentile = {dist.ppf(q):.2f} cm")

# ── 변수변환: Y = X² (X ~ Uniform(-1,1)) ─────────────────────────
X = stats.uniform(loc=-1, scale=2)  # Uniform(-1, 1)
np.random.seed(42)
x_samples = X.rvs(100_000)
y_samples  = x_samples ** 2          # Y = X^2

# 이론 PDF: f_Y(y) = 1/(2√y), 0 < y ≤ 1
y_vals = np.linspace(0.001, 1, 300)
f_Y_theory = 1 / (2 * np.sqrt(y_vals))

# 시뮬레이션으로 검증
hist, edges = np.histogram(y_samples, bins=50, density=True)
bin_centers = (edges[:-1] + edges[1:]) / 2

print("\n변수변환 Y=X² (X~Uniform(-1,1)) 검증:")
print("  이론 PDF vs 시뮬레이션 (일부):")
for y_t in [0.1, 0.3, 0.5, 0.7, 0.9]:
    theory = 1 / (2 * np.sqrt(y_t))
    idx    = np.argmin(np.abs(bin_centers - y_t))
    sim    = hist[idx]
    print(f"  y={y_t:.1f}: 이론={theory:.4f}, 시뮬={sim:.4f}")

# ── CDF의 성질 수치 검증 ──────────────────────────────────────────
dist_norm = stats.norm(0, 1)
print("\nCDF 성질 검증 (표준 정규):")
print(f"  단조성: F(-1)={dist_norm.cdf(-1):.4f} ≤ F(0)={dist_norm.cdf(0):.4f} ≤ F(1)={dist_norm.cdf(1):.4f}")
print(f"  극한:   F(-∞) ≈ {dist_norm.cdf(-10):.8f}")
print(f"          F(+∞) ≈ {dist_norm.cdf(10):.8f}")
print(f"  구간:   P(-1<X≤1) = F(1)-F(-1) = {dist_norm.cdf(1)-dist_norm.cdf(-1):.6f}  (≈68.3%)")

14 관련 주제

선행 지식

후속 주제

관련 개념

Subscribe

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