음이항 분포로 과분산 카운트 데이터를 모델링하는 방법
음이항 분포의 실패 수 해석, 포아송-감마 혼합, NB2 분산 구조와 과분산 카운트 회귀의 진단·적용 방법을 정리한다.
2026-08-14 · 최초 발행 2024-04-29
실패 수의 관점에서 보는 음이항 분포
음이항 분포는 성공확률 (p)인 시행에서 (r)번의 성공이 나타날 때까지 발생하는 실패 수를 다룬다. 확률변수 (X)가 실패 횟수일 때 확률질량함수는 다음과 같다.
[ P(X=k) = C(k+r-1, k) \cdot (1-p)^k \cdot p^r \quad (k=0,1,2,\ldots) ]
(r=1)이면 기하분포(geometric)와 같다. 이 정의는 반복 시행의 실패 수를 설명하지만, 실무에서는 평균과 과분산을 함께 표현하는 카운트 모형으로 더 자주 쓰인다.
((r,p)) 매개변수화에서 기댓값과 분산은 다음과 같다.
[ \mu = r(1-p)/p ]
[ Var[X] = r(1-p)/p^2 = \mu + \mu^2/r ]
분산은 항상 기댓값보다 크므로 (Var[X] > E[X])가 성립한다. 이 성질 때문에 평균과 분산이 같다는 제약을 가진 포아송 분포로는 설명하기 어려운 과분산 카운트 데이터에 적합하다.
NB2 형태의 GLM에서는 이를 다음처럼 표현한다.
[ Var[Y]=\mu+\alpha\mu^2 ]
여기서 (\alpha=1/r)이고, (p=r/(r+\mu))다.
포아송-감마 혼합이 설명하는 추가 분산
음이항 분포는 포아송-감마 혼합으로도 해석할 수 있다.
[ \lambda \sim Gamma(shape=r, rate=r/\mu) ]
[ Y|\lambda \sim Poisson(\lambda) \Rightarrow Y \sim NegBin(\mu,r) ]
관측 대상마다 (\lambda)가 달라지는 이질성이 있으면 포아송의 분산만으로는 설명되지 않는 변동이 생긴다. 이 무작위성이 (\alpha\mu^2)에 해당하는 추가 분산으로 나타난다.
회귀로 확장할 때는 로그 연결함수를 사용한다.
[ log(\mu)=X\beta+offset ]
노출량이 서로 다르면 (log) 노출량을 offset으로 넣을 수 있다. 영값이 특히 많이 나타나는 경우에는 ZINB(Zero-Inflated NB)로 확장할 수 있다.
과분산 강도와 회귀 모형의 해석
실무 회귀에서는 ((r,p))보다 ((\mu,r)), 또는 ((\mu,\alpha=1/r)) 형태가 주로 쓰인다. (r(=1/\alpha))가 커질수록 음이항 모형은 포아송에 수렴한다. 반대로 (\alpha)는 과분산의 강도를 읽는 지표가 된다.
NB2 회귀는 (Y \sim NB2(\mu,\alpha))로 두고, 설계행렬 (X)를 통해 공변량 효과를 추정한다.
[ \mu = exp(X\beta+offset) ]
추정은 최대우도추정(MLE)으로 (\beta)와 (\alpha)를 함께 구한다. 포아송과의 우도비 검정(LRT), AIC/BIC 비교는 모형 선택에 사용할 수 있다.
모형을 적합한 뒤에는 Pearson/Deviance 잔차, 분산-평균비, (\alpha) 추정치를 확인한다. 영향점(outlier), 레버리지, 영과잉도 함께 점검 대상이다. (\alpha \rightarrow 0)이면 포아송이 적절하다는 신호가 될 수 있다. 수렴 경고가 나오면 변수 표준화, 초기값 조정, 규제(정규화)를 검토한다.
이질성이 큰 카운트 데이터에 적용하는 경우
제조·품질에서는 배치당 불량 건수를 예측하거나 공정을 비교할 때 활용할 수 있다. 라인과 설비의 이질성을 반영하면 경보 임계치 설정에도 연결된다.
보험·리스크 영역에서는 청구 건수와 사고 빈도를 모델링할 수 있다. 피보험자 간 이질성을 반영해 위험기반 가격 산정에 활용한다.
디지털·마케팅 데이터에서는 세션당 클릭 수나 전환 수를 다룰 수 있다. 캠페인과 채널마다 변동성이 다른 상황에서 과분산을 반영하고 예산 배분을 검토하는 데 쓴다.
의료·공공 영역에서는 재입원 횟수나 사건 발생 카운트를 분석할 수 있다. 병원·지역 사이의 이질성을 포함해 정책 효과를 추정하는 방식이다.
입력은 카운트 (Y), 공변량 (X), 노출량 (E)다. 먼저 (Var[Y]/E[Y])를 확인하고 포아송을 초기 기준선으로 적합한다. 이후 LRT와 AIC로 음이항 모형의 필요성을 평가하고 (\alpha)를 추정한다. 잔차, 영과잉, 영향점을 진단한 뒤 필요하면 모형을 다시 구성한다. 결과물은 추정계수 (\beta), 과분산 (\alpha), 신뢰구간, 예측값, 요약지표다.
포아송과 NB2가 갈리는 지점
| 지표 | 포아송 | 음이항(NB2) |
|---|---|---|
| 성능(적합도) | 과분산 시 적합도 저하 경향 | 과분산 데이터에서 우수한 적합도 |
| 확장성(모형 유연성) | 분산=평균 제약 | Var=μ+αμ^2로 유연한 분산 |
| 일관성(추정 안정성) | 가정 위반 시 SE 과소추정 위험 | α 추정으로 SE 보정 효과 |
| 안정성(수렴/수치) | 대체로 안정 | 초기값·스케일링 필요 경우 존재 |
| 운영 편의(해석·배포) | 단순 해석·배포 용이 | α 해석 추가, 그러나 산업 표준 툴 지원 |
적합과 진단을 연결하는 흐름
Python으로 포아송과 음이항 회귀를 비교하기
전제조건: Python 3.11+, numpy/pandas, statsmodels 0.14+ 설치
과분산 데이터를 시뮬레이션한 뒤 포아송과 음이항의 AIC를 비교하고, (\alpha)와 예측값을 확인하는 예시다.
# Python 3.11, statsmodels 0.14+
import numpy as np
import pandas as pd
from statsmodels.discrete.discrete_model import Poisson, NegativeBinomial
rng = np.random.default_rng(42)
n = 2000
x = rng.normal(size=n)
offset = np.log(rng.uniform(0.5, 2.0, size=n)) # 노출량 E에 대한 log-offset
# 진실 모형: NB2, Var = mu + alpha * mu^2
beta0, beta1 = 0.2, 0.7
alpha_true = 0.6
mu = np.exp(beta0 + beta1 * x + offset)
# 포아송-감마 혼합으로 NB2 데이터 생성
# Gamma(shape=1/alpha, scale=alpha*mu) → 평균 mu, 분산 alpha*mu^2
lam = rng.gamma(shape=1/alpha_true, scale=alpha_true * mu)
y = rng.poisson(lam)
# 설계행렬 구성
X = np.column_stack([np.ones(n), x, offset]) # 절편, x, offset를 명시적 회귀항으로 포함
# 음이항: loglike_method='nb2' 지정
poisson_res = Poisson(y, X).fit(disp=False)
nb_res = NegativeBinomial(y, X, loglike_method='nb2').fit(disp=False)
print("요약: 포아송 vs 음이항")
print(f"- 평균={y.mean():.3f}, 분산={y.var():.3f}, 분산/평균={y.var()/y.mean():.2f}")
print(f"- AIC(Poisson)={poisson_res.aic:.1f}, AIC(NB)={nb_res.aic:.1f}")
print(f"- 추정 α(NB2)={nb_res.params_alpha:.3f}") # statsmodels 0.14의 α 접근자
# 예측(새 데이터)
x_new = np.array([[-1.0], [0.0], [1.0]])
offset_new = np.log([1.0, 1.0, 1.0])
X_new = np.column_stack([np.ones(3), x_new.ravel(), offset_new])
mu_pred_nb = nb_res.predict(X_new)
print("NB 예측 평균(mu):", mu_pred_nb.round(3))
offset는 회귀항으로 직접 포함하거나 패밀리의 offset 인자로 전달하는 방식 가운데 하나만 사용하는 편이 좋다. 수렴 경고가 있으면 변수 표준화, 초기값 변경(method='newton' 등), 이상치 점검이 필요하다. (\alpha) 추정치가 0에 가까우면 포아송 모형의 적정성을 시사한다.
적합도와 운영 판단에 미치는 영향
과분산 데이터에서는 포아송 대비 AIC가 5~20% 개선될 수 있으며, 이 효과는 데이터에 의존한다. 음이항 모형은 표준오차의 과소추정을 완화해 유의성 판단 오류를 줄이고, RMSE/MAE 개선과 극단값 영향 완화에도 연결될 수 있다.
(\alpha)를 통해 데이터 이질성을 진단할 수 있다는 점도 실무적이다. 경보 임계치와 리스크 버퍼를 설정할 때 보수성을 확보하는 데 도움이 되며, 필요하면 ZINB/허들 모형이나 혼합효과 모형으로 확장할 수 있다.
분산-평균비가 1보다 크거나, 포아송 진단이 적합하지 않고 잔차에 과산포 패턴이 보이면 음이항 모형을 검토할 시점이다. 포아송 기준선을 세운 뒤 과분산 검정과 AIC 비교를 수행하고, NB2 적합 후 (\alpha)와 잔차를 확인한다. 영과잉이 강하면 ZINB 또는 허들 모형을 이어서 검토한다.