Cute Hello Kitty 3
본문 바로가기
Data/통계

확률질량함수(PMF), 확률밀도함수(PDF), 누적분포함수(CDF)

by 민 채 2025. 3. 27.
 
 
 

 

 

 

 

확률질량함수(PMF), 확률밀도함수(PDF), 누적분포함수(CDF)

확률분포를 다룰 때, 자주 헷갈리는 두 개념이 바로 확률질량함수(PMF) 확률밀도함수(PDF)입니다.

두 개념은 비슷해 보이지만 이산형 변수 연속형 변수를 구분하여 사용해야 하며, 의미와 사용 방법도 크게 다릅니다.

 

 

 

 


핵심 차이 요약

항목 확률질량함수 (PMF) 확률밀도함수 (PDF)
적용 대상 이산 확률 변수 연속 확률 변수
예시 주사위, 동전, 학생 수 키, 몸무게, 시간
정의 특정 값 $x$가 나올 확률을 직접 계산 특정 구간 $(a \le X \le b)$에 속할 확률을 계산
수식 $P(X = x)$ $P(a \le X \le b) = \int_a^b f(x)dx$
특징 각 값의 확률을 더하면 1 전체 면적(적분값)이 1
그래프 형태 막대 그래프 (discrete bars) 연속 곡선 (smooth curve)
  • 모두 "확률 분포"를 나타내는 함수인데, 다루는 자료의 종류(이산형 vs 연속형)에 따라 다르게 사용된다.

💡 더 쉽게 이해하기

  1. PMF (확률질량함수)
  • PMF는 말 그대로 "어떤 값이 나올 확률"을 직접 알려줍니다.
  • 예: 주사위에서 3이 나올 확률은 P(X = 3) = 1/6
  1. PDF(확률밀도함수)
  • PDF는 특정한 정확한 값의 확률은 0이고, 대신 구간의 확률을 면적으로 계산합니다.
  • 예: 어떤 사람의 키가 정확히 175.000000cm일 확률 = 0
  • 하지만 174.5cm ~ 175.5cm 사이일 확률은 ∫₁₇₄.₅¹⁷⁵.₅ f(x) dx

확률질량함수(PMF) - 주사위 던지기 예시

  • 확률 변수 $X$: 주사위를 던졌을 때 나오는 눈의 수
  • 가능한 값: $1, 2, 3, 4, 5, 6$ (이산형)
  • 각 값의 확률: $P(X = x) = \frac{1}{6}$

 

수식 표현

$$
P(X = x) =
\begin{cases}
\frac{1}{6}, & x \in {1, 2, 3, 4, 5, 6} \\
0, & \text{otherwise}
\end{cases}
$$

 

Python 시각화

위 그래프는 주사위를 던지는 경우를 나타냅니다.
주사위 눈이 나올 수 있는 경우는 각 1부터 6까지가 있고, 각 확률은 $1/6$ 입니다.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6]
prob = [1/6] * 6

plt.bar(x, prob, color='skyblue')
plt.title("PMF: dice")
plt.xlabel("x")
plt.ylabel("P(X = x)")
plt.ylim(0, 0.2)
plt.grid(axis='y', linestyle='--', alpha=0.5)
plt.show()

 


확률밀도함수(PDF)

확률밀도함수(PDF)는 연속 확률 변수의 분포를 설명하는 함수로,
특정 값이 나올 확률의 밀도를 나타냅니다.

연속형 변수에서는 어떤 한 값을 정확하게 맞출 확률은 항상 0입니다.

하지만, 구간을 지정하면 그 안에 포함될 확률은 존재합니다.

즉, f(x)는 그 지점에서의 "확률의 진하기"라고 볼 수 있습니다.


 

PDF의 성질

  1. $f(x) \ge 0$ (모든 x에 대해 음수가 될 수 없음)
  2. 전체 면적은 1
  3. $f(x)$는 확률이 아니라 확률 밀도입니다.
    → 따라서 $f(x)$가 2, 3 등 1보다 커질 수도 있습니다.

 

대한민국 성인 남성의 키 예시(PDF)

  • 확률 변수 $X$: 대한민국 성인 남성의 키 (cm)
  • 평균 (μ): 173cm
  • 표준편차 (σ): 5cm
  • 분포: 정규분포 $N(173, 5^2)$

 

의미

  • $f(x)$는 x 근처에서 키가 나올 확률의 밀도를 나타냄
  • $P(X = 173) = 0$ → 한 점의 확률은 0
  • $P(170 \le X \le 175)$ → 이 구간에 들어올 확률은 존재

 

Python 시각화

  • 파란색 선이 PDF: f(x) 를 나타냅니다.
  • f(x)는 해당 x구간에서 얼마나 밀도가 몰려있는지를 나타냅니다.

 

⚠️ 주의: $f(x)$는 확률이 아님

$f(173) = 0.0798$이라면

173cm에서의 확률 밀도는 0.0798이지만,

정확히 173cm일 확률은 0입니다.

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# 평균과 표준편차
mu = 173
sigma = 5

# x 값: 150cm ~ 195cm
x = np.linspace(150, 195, 1000)
pdf = norm.pdf(x, loc=mu, scale=sigma)

plt.figure(figsize=(10, 5))
plt.plot(x, pdf, color='blue', label='PDF')
plt.fill_between(x, pdf, alpha=0.2)
plt.axvline(mu, color='red', linestyle='--', label='평균 키 173cm')
plt.title("대한민국 성인 남성 키의 확률밀도함수 (PDF)")
plt.xlabel("키 (cm)")
plt.ylabel("밀도 f(x)")
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

 

누적분포함수(CDF)란?

누적분포함수(Cumulative Distribution Function, CDF)
확률변수 $X$가 특정 값 $x$ 이하일 확률을 나타내는 함수입니다.

$$
F(x) = P(X \le x)
$$

 

예시

PDF 에서 사용한 대한민국 남성의 키 분포를 그대로 사용하겠습니다.

$F(175) = 0.755$ 이라면 → X가 175 이하일 확률이 75.5%


 

CDF와 PDF의 관계

CDF는 PDF를 적분한 함수입니다.

$$F(x) = \int_{-\infty}^{x} f(t), dt$$

반대로,
PDF는 CDF를 미분한 함수입니다.

$$f(x) = \dfrac{d}{dx} F(x)$$

즉, PDF는 순간적인 변화량,
CDF는 확률이 누적되어 쌓인 총합 개념입니다.


 

실생활 예시: 대한민국 성인 남성의 키

  • 평균: 173cm
  • 표준편차: 5cm
  • 분포: 정규분포 $N(173, 5^2)$

 

Python으로 PDF vs CDF 시각화

파란색 선이 PDF(밀도) 고 초록 선이 CDF(누적) 입니다.

PDF 는 순간적인 밀도의 진한 정도를 나타내고,

CDF는 쌓인 누적 확률입니다.

그래서, PDF를 적분하면 CDF, CDF를 미분하면 PDF가 됩니다.

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# 평균과 표준편차
mu = 173
sigma = 5

x = np.linspace(150, 195, 1000)
pdf = norm.pdf(x, loc=mu, scale=sigma)
cdf = norm.cdf(x, loc=mu, scale=sigma)

plt.figure(figsize=(12, 5))

# PDF
plt.subplot(1, 2, 1)
plt.plot(x, pdf, label='PDF', color='blue')
plt.fill_between(x, pdf, alpha=0.2)
plt.title("확률밀도함수 (PDF)")
plt.xlabel("키 (cm)")
plt.ylabel("밀도 f(x)")
plt.grid(alpha=0.3)
plt.legend()

# CDF
plt.subplot(1, 2, 2)
plt.plot(x, cdf, label='CDF', color='green')
plt.title("누적분포함수 (CDF)")
plt.xlabel("키 (cm)")
plt.ylabel("누적 확률 F(x)")
plt.grid(alpha=0.3)
plt.legend()

plt.tight_layout()
plt.show()

 

 

2025.04.03 - [Data] - LS 빅데이터 스쿨 / 정규분포와 t분포 / Python

 

LS 빅데이터 스쿨 / 정규분포와 t분포 / Python

가설검정이란?가설검정(Hypothesis Testing)은 통계학에서 어떤 주장이나 가설이 옳은지를 데이터 기반으로 판단하는 절차입니다. 주어진 데이터로부터 모집단의 특성을 추정하고, 이 추정값을 바탕

kiminchae.tistory.com