확률 분포 선택과 PMF·PDF·CDF 실무 활용
이항·포아송·정규·지수·감마·베타 분포의 PMF·PDF·CDF와 모수 해석, 추정·검증·운영 기준을 정리한다.
2026-08-14 · 최초 발행 2025-10-14
데이터가 허용하는 값에서 후보를 좁힌다
확률 분포는 데이터 생성 메커니즘을 모수로 압축한 표현이다. 성공 횟수인지, 일정 구간의 도착 건수인지, 양수인 처리시간인지에 따라 선택지는 달라진다.
확률 변수는 먼저 이산형과 연속형으로 나뉜다. 이산형은 유한하거나 가산 무한한 사건 수를 다루며 확률질량함수 PMF, 즉 P(X=x)를 쓴다. 연속형은 실수 구간에서 연속된 값을 취하고 확률밀도함수 PDF f(x)와 누적분포함수 CDF를 사용한다.
CDF는 F(x)=P(X≤x)다. 이산형에서는 PMF의 누적합으로, 연속형에서는 F(x)=∫ f로 얻는다. 미분 가능하다면 f(x)=dF(x)/dx 관계도 성립한다. 평균·분산·왜도 같은 모멘트는 분포를 요약하고, p, λ, μ, σ, α, β 같은 모수는 생성 과정을 해석하는 단서가 된다.
후보를 고를 때는 데이터 타입, 지지집합, 생성 메커니즘을 먼저 확인한다. 이어 극단값, 왜도, 과산포를 살피고 경험적 CDF와 Q-Q 플롯으로 가설을 점검한다. 수명이나 시간 분포에서는 rate λ와 scale θ 표기가 혼용될 수 있으므로 파라미터화도 함께 확인해야 한다.
작은 확률이나 큰 모수에서는 log-PMF와 log-PDF가 언더플로·오버플로를 줄이는 데 유리하다. CDF의 극단부는 정밀도에 민감하므로 정규분포에서는 SF(생존함수)를 고려할 수 있다. 추정은 MLE를 우선 적용하고, 필요하면 사전분포를 둔 MAP·베이즈 접근을 사용한다. 적합성은 연속형에 KS, 이산형에 χ², 후보 모델 비교에 AIC/BIC를 적용한다.
사건 수와 비율을 다루는 분포
이항분포 Binomial(n, p)
이항분포의 지원 범위는 정수 {0,…,n}이며, PMF는 조합×p^k×(1-p)^(n-k)로 표현한다. CDF는 이를 누적한 값이다. 평균은 np, 분산은 np(1-p)이며 독립적인 베르누이 시행에서 성공한 횟수를 모델링한다.
결함률·전환율 추정, A/B 테스트, 샘플 크기 설계에 사용할 수 있다.
포아송분포 Poisson(λ)
포아송분포는 비음수 정수의 단위구간 이벤트 건수를 표현한다. 평균과 분산은 모두 λ다. 희귀하고 독립적인 이벤트, 균질한 도착률을 가정하며 과산포가 있으면 음이항 대안을 검토한다.
콜센터 콜 도착, 트래픽 패킷 수, 결함 밀도가 대표적인 대상이다.
베타분포 Beta(α, β)
베타분포는 0≤x≤1 범위의 값을 다룬다. 평균은 α/(α+β), 분산은 αβ/[(α+β)²(α+β+1)]다. 확률·비율·전환율의 사전분포로 적합하며, 이항분포와 공액 관계여서 관측에 따른 업데이트가 단순하다.
A/B 전환율, 신뢰도 비율, 확률 파라미터 추정에 쓰인다.
실수와 양의 연속값을 모델링할 때
정규분포 Normal(μ, σ)
정규분포는 실수 전체를 지원하며 종 모양의 PDF를 갖는다. 평균은 μ, 분산은 σ²다. 합과 평균을 근사하는 중심극한정리와 연결되지만 극단값에는 민감하다.
센서 노이즈, 측정 오차, 회귀 잔차 근사에 주로 적용한다.
지수분포 Exponential(λ) 또는 Exponential(scale=θ)
지수분포의 범위는 x>0이고 메모리리스 특성을 갖는다. 평균은 1/λ=θ다. 포아송 과정에서 사건 사이 간격을 모델링하며 위험률이 상수라는 가정을 둔다.
MTBF, 대기시간, 단순 신뢰성 분석에 활용할 수 있다.
감마분포 Gamma(k, θ) 또는 Gamma(α, β)
감마분포 역시 x>0에서 정의되며 지수분포의 합으로 볼 수 있다. Gamma(k, θ) 표기에서 평균은 kθ, 분산은 kθ²이고, α/β 표기에서는 평균이 α/β다. 지수분포를 일반화한 형태이며 베이즈 추론에서 포아송·지수분포의 공액 사전으로 사용할 수 있다.
처리시간, 비용·리드타임, 강건한 양의 연속 모형이 필요한 경우에 맞는다.
분포별 선택과 운영 특성
| 분포 | 지원 범위 | CDF 폐형 | 성능(샘플/밀도) | 확장성(다변량) | 일관성(가정 민감) | 안정성(수치) | 운영 편의 |
|---|---|---|---|---|---|---|---|
| 이항 | {0…n} | 누적합 | 매우 빠름 | 제한적 | 중간(독립·동일 p) | 우수(logpmf 권장) | 해석 용이, 도구 풍부 |
| 포아송 | 0,1,… | 불완전감마 연계 | 매우 빠름 | 제한적 | 중간(균질률) | 우수 | λ 해석 직관 |
| 정규 | R | 에러함수 | 매우 빠름 | 우수(다변량 정규) | 높음(꼬리 약함) | 극단부 주의 | 표준 도구 풍부 |
| 지수 | x>0 | 폐형 | 매우 빠름 | 제한적 | 중간(상수 hazard) | 우수 | 간단·설정 용이 |
| 감마 | x>0 | 불완전감마 | 빠름 | 제한적 | 낮음(유연) | 우수 | 공액성 유리 |
| 베타 | [0,1] | 베타불완전함수 | 빠름 | 제한적 | 낮음(유연) | 우수 | 비율 모델 최적 |
주: 성능은 표준 라이브러리 사용 가정, 일관성은 가정 위반 민감도 관점 요약.
추정·검증·운영을 연결하는 흐름
분포를 배포 가능한 모델로 만들려면 선택에서 끝나면 안 된다. 모수를 추정하고 적합성을 검증한 뒤 스코어링·샘플링 API로 연결하며, 운영에서는 데이터 드리프트와 경고 임계를 계속 관찰한다.
제조 불량률은 샘플 크기 n을 설계하고 불량 건수 k를 수집한 뒤 p=M L E=k/n으로 추정한다. 베타 (α0,β0) 사전을 두면 주기적으로 업데이트할 수 있고, 공정이 바뀌면 사전을 리셋한다.
콜센터 도착량은 시간대별 건수를 집계해 λ_t를 추정하고 포아송 회귀를 적용한다. 과산포가 있으면 음이항을 고려하며, 휴일·프로모션 더미 변수와 예측 불확실도를 인력 배치에 반영한다.
A/B 전환율은 베타 (α,β) 사전과 관측 k,n으로 사후 Beta(α+k, β+n-k)를 얻는다. 운영 판단에는 P(B>A)>0.95를 이용해 롤아웃을 결정할 수 있다.
고장시간과 MTBF는 경과시간을 수집해 지수분포 또는 감마분포에 적합하고, 신뢰수준 기준으로 MTBF를 보고한다. 예방정비 임계치 최적화도 이 흐름에서 다룬다. 센서 노이즈는 Q-Q 플롯으로 잔차를 확인하고 이상치를 처리한 뒤 μ,σ를 추정한다. 운영에서는 3σ 규칙 경보와 분산 증가를 함께 모니터링한다.
PMF·PDF·CDF 계산과 샘플링
환경: Python 3.10+, numpy 1.26+, scipy 1.10+
주의: gamma는 shape a, scale θ 파라미터화, exponential은 scale=1/λ
# pip install numpy scipy
import numpy as np
from scipy.stats import binom, poisson, norm, expon, gamma, beta
rng = np.random.default_rng(42)
# 1) PMF/PDF/CDF 계산
k = np.arange(0, 11)
pmf_binom = binom.pmf(k, n=10, p=0.3)
cdf_binom = binom.cdf(k, n=10, p=0.3)
x = np.linspace(-3, 3, 501)
pdf_norm = norm.pdf(x, loc=0.0, scale=1.0)
cdf_norm = norm.cdf(x, loc=0.0, scale=1.0)
x_pos = np.linspace(0, 10, 501)
pdf_exp = expon.pdf(x_pos, scale=2.0) # λ=0.5
cdf_exp = expon.cdf(x_pos, scale=2.0)
pdf_gamma = gamma.pdf(x_pos, a=3.0, scale=2.0) # 평균= a*scale = 6
cdf_gamma = gamma.cdf(x_pos, a=3.0, scale=2.0)
p = np.linspace(0, 1, 501)
pdf_beta = beta.pdf(p, a=2.0, b=5.0)
cdf_beta = beta.cdf(p, a=2.0, b=5.0)
# 2) 로그-확률로 수치 안정성 확보
logpmf_pois = poisson.logpmf(k, mu=4.0)
logpdf_norm = norm.logpdf(x, loc=0, scale=1)
# 3) 샘플링 및 모수 추정(MLE)
samples = norm.rvs(loc=2.0, scale=1.5, size=1000, random_state=rng)
mu_mle = np.mean(samples)
sigma_mle = np.std(samples, ddof=0) # 정규의 MLE 분산
print(mu_mle, sigma_mle)
# 4) 베타-이항 업데이트(사전 α0,β0)
alpha0, beta0 = 1.0, 1.0
k_obs, n_obs = 37, 100
alpha_post, beta_post = alpha0 + k_obs, beta0 + (n_obs - k_obs)
# 사후 기대값
p_post_mean = alpha_post / (alpha_post + beta_post)
print(p_post_mean)
극단부 CDF 계산에는 cdf 대신 sf(=1-cdf)를 사용해 정밀도를 높일 수 있다. norm.sf 등이 해당된다. 벡터·배치 입력으로 처리 성능을 확보하고, p∈[0,1], λ>0, σ>0처럼 입력 파라미터의 범위도 검증한다.
모델 선택이 만드는 운영상 변화
적합한 분포를 선택하면 RMSE/LogLoss가 5~20% 개선될 수 있다. 베타-이항 베이즈 업데이트는 탐색 단계의 샘플 크기를 10~30% 절감할 수 있으며, 정규 기반 3σ 규칙과 비교해 감마 기반 위험률 경보에서는 오검이 10%p 감소할 수 있다.
모수 λ, p, μ, σ, α, β가 갖는 의미는 비즈니스 커뮤니케이션의 해석 가능성을 높인다. 추정·검증·배포·모니터링을 같은 프로세스로 운영하면 모델 관리 기준도 일관되게 유지할 수 있다.