1 들어가며 — Ch.12 의 자리와 카운트 GLMM 의 동기
Ch.9 (이항) → Ch.10 (순서형) → Ch.11 (명목) 의 categorical 응답 시리즈에 이어, Ch.12 는 또 다른 형태의 응답 — 사건 발생 횟수 (카운트) — 를 다룬다.
| Chapter | 모형 | 응답 형태 | 분포 |
|---|---|---|---|
| Ch.4-7 | MRM/CPM/MRM-AC | 연속 | 정규 |
| Ch.8 | GEE | 자유 | 자유 |
| Ch.9 | GLMM | 0/1 | Bernoulli |
| Ch.10 | GLMM | 1, 2, …, C (순서) | Multinomial cumulative |
| Ch.11 | GLMM | 1, 2, …, C (비순서) | Multinomial reference |
| Ch.12 | GLMM | 0, 1, 2, … (카운트) | Poisson / ZIP |
| Ch.13 | GLMM | 다양 | 3 수준 |
→ Ch.12 는 categorical 응답이 무한 가능 — 사건 발생 횟수. Categorical 의 다른 확장.
“Ch.12 = 사건 발생 횟수 응답 (의료 이용, 자살률, 사고 수, 특허 수 등) 의 mixed-effects GLMM. § 12.1 표준 Poisson 모형은 mean-variance 동등 (\(E(y) = V(y) = \lambda\)) 가정 — 자주 위반. § 12.2-12.3 의 ZIP (zero-inflated Poisson, Lambert 1992) 가 ‘excess zeros’ 처리 — mixture 모형 (perfect state + Poisson state). § 12.4 mixed-effects 확장 — Poisson 에 random effects 추가 (식 12.19-12.27, marginal MLE + Gauss-Hermite, § 9.6 toolkit), ZIP 에 두 random effects (식 12.30-12.33, \(\sigma_1\) Poisson + \(\sigma_2\) logistic). § 12.5 의 자살률 응용 (Gibbons et al. 2005) 으로 mixed-effects Poisson 의 정책 가치 시연.”
본 overview 의 절 구성 (Hedeker §12 의 6 절 → 6 주제로 정리):
- § 12.1 — Poisson 회귀 기본.
- § 12.2-12.3 — Excess zeros 문제 + ZIP framework.
- § 12.4-12.4.3 — Mixed-effects 확장 (Poisson + ZIP).
- § 12.5 — 자살률 응용 미리보기.
- § 12.6 — 핵심 메시지.
2 § 12.1 — Poisson Regression 기본
2.1 Poisson 분포의 정의
응답 \(y_i\) 가 비음 정수 (\(0, 1, 2, \ldots\)):
\[ f(y_i; \lambda_i) = \frac{\exp(-\lambda_i) \lambda_i^{y_i}}{y_i!}, \quad y_i = 0, 1, 2, \ldots \tag{12.1} \]
여기서 \(\lambda_i = \exp(x_i^\top \beta)\) — log-linear 회귀.
\[ E(y_i) = V(y_i) = \lambda_i \tag{12.2} \]
→ Poisson 분포의 핵심 성질.
Poisson 분포의 결정적 특징 — 평균 = 분산. 의미:
- 평균 (\(\lambda\)) 이 작으면 (예: 1) 분산도 작음 (모든 관측이 평균 근처).
- 평균이 크면 (예: 100) 분산도 큼 (관측이 더 분산).
- 정규 분포처럼 평균과 분산이 독립으로 정의되지 않음.
왜 이 가정이 자연스러운가:
- Poisson 분포는 “단위 시간/공간 안에 일어나는 희귀 사건” 의 자연스러운 모형.
- 사건이 독립적으로 일어나면 카운트의 평균과 분산이 같아야 함 (수학적 결과).
- 예: 1 시간 동안 도착하는 손님 수, 한 페이지의 오타 수.
가정 위반의 실무 빈도:
- Overdispersion (\(V > E\)): 데이터가 모형보다 더 분산. 가장 흔함.
- Underdispersion (\(V < E\)): 드물지만 가능 (사건 사이 음의 상관, 예: 정해진 schedule).
대응:
- Overdispersion → Negative Binomial 분포 (\(V = \mu + \mu^2/k\), 추가 모수).
- Excess zeros → ZIP (§ 12.3, 두 종류의 zero 분리).
2.2 추정 — 식 (12.3-12.6)
Likelihood (식 12.3):
\[ L = \prod_{i=1}^N \frac{\exp(-\lambda_i) \lambda_i^{y_i}}{y_i!} \]
Log-likelihood (식 12.4):
\[ \log L = -\sum_{i=1}^N [\lambda_i - y_i \log \lambda_i + \log(y_i!)] \]
Score (식 12.5):
\[ \frac{\partial \log L}{\partial \beta} = \sum_{i=1}^N (y_i - \lambda_i) x_i \]
Hessian (식 12.6):
\[ \frac{\partial^2 \log L}{\partial \beta \partial \beta^\top} = -\sum_{i=1}^N \lambda_i x_i x_i^\top \]
\(\sum (y_i - \lambda_i) x_i\) — “잔차 × 공변량” 의 합.
이항 logistic (§ 9.2 의 식 9.7) 와 정확히 같은 형태:
\[ \frac{\partial \log L}{\partial \beta} = \sum_i (y_i - p_i) x_i \]
→ GLM 의 통일성 — exponential family 분포의 모든 모형이 같은 score 형태. Canonical link function 의 결과.
추정 방법: Newton-Raphson 또는 Fisher scoring (이항 모형과 동일).
계산 단순성: Hessian (식 12.6) 이 음정치 보장 — Newton-Raphson 안정 수렴.
3 § 12.2-12.3 — Excess Zeros 와 ZIP
3.1 Excess Zeros 의 문제
실무 카운트 데이터의 흔한 패턴:
- 응답의 큰 비율이 0.
- Poisson 모형이 예측하는 0 비율보다 훨씬 많음.
- 예: “올해 정신과 방문 횟수” — 대부분이 0, 일부만 양수.
전통적 Poisson 모형이 이런 데이터에 적합되면:
- \(\lambda\) 가 평균에 맞춰 추정 → 0 의 확률 \(e^{-\lambda}\) 가 작게.
- 실제 0 비율이 모형 예측보다 큼 → 적합 불량.
- → Excess zeros.
저자의 예시 — “올해 정신과 방문 횟수”:
- Type 1 zero: 정신과 진료 필요 없는 사람 (구조적 zero, “perfect state”). 0 만 가능.
- Type 2 zero: 정신과 진료 필요한데 안 간 사람 (Poisson zero, “imperfect state”). 0 또는 양수 가능.
표본의 zero 가 두 종류 mix → Poisson 만으로는 표현 못함.
해결 — Mixture 모형:
- Logistic 부분: “perfect state 인지 (필요 없는지)” 의 확률.
- Poisson 부분: “imperfect state 라면 몇 번 방문할지” 의 카운트.
→ ZIP (Zero-Inflated Poisson) 의 발상 (Lambert 1992).
3.2 ZIP 모형 — 식 (12.7-12.12)
\[ y_i = \begin{cases} 0 & \text{with probability } \pi_i \\ \text{Poisson}(\lambda_i) & \text{with probability } 1 - \pi_i \end{cases} \tag{12.7} \]
두 부분의 link 함수:
\[ \text{logit}(\pi_i) = w_i^\top \gamma \tag{12.8} \]
\[ \log(\lambda_i) = x_i^\top \beta \tag{12.9} \]
표기:
- \(\pi_i\): perfect state 의 확률 (구조적 zero 의 mixing parameter).
- \(\lambda_i\): Poisson state 의 평균.
- \(w_i\), \(x_i\): 두 부분의 covariate (같을 수도, 다를 수도).
전체 확률 표현:
\[ P(y_i = 0) = \pi_i + (1 - \pi_i) e^{-\lambda_i} \]
\[ P(y_i = k) = (1 - \pi_i) \frac{e^{-\lambda_i} \lambda_i^k}{k!}, \quad k = 1, 2, \ldots \tag{12.12} \]
식 (12.12) 의 의미:
- \(P(y = 0)\): perfect zero (\(\pi_i\)) + Poisson zero (\((1-\pi_i) e^{-\lambda_i}\)).
- \(P(y = k > 0)\): Poisson state 인 환자가 \(k\) 회 방문할 확률.
해석의 풍부함:
- \(\hat\pi_i\) 추정값: “이 환자가 정신과 진료 필요 없는 사람일 확률”.
- \(\hat\lambda_i\): “이 환자가 진료 필요한 그룹이라면 몇 회 방문할지의 평균”.
각각 별도 covariate 와 회귀 계수 가능 — “필요성 결정 요인” 과 “방문 빈도 결정 요인” 의 분리 분석.
예시:
- 보험 종류가 “필요성” 에 큰 영향, “빈도” 에 작은 영향.
- 거주지가 “빈도” (접근성) 에 큰 영향, “필요성” 에 작은 영향.
→ ZIP 가 정책 분석에 풍부한 정보 제공.
같은 covariate \(x_i\) 를 두 부분에 사용하면서 functional 관계 부여:
\[ \text{logit}(\pi_i) = -\tau x_i^\top \beta \tag{12.10} \]
\[ \log(\lambda_i) = x_i^\top \beta \tag{12.11} \]
추가 모수 \(\tau\) 가 두 부분의 효과를 연결.
ZIP (식 12.7-12.9): 두 부분이 별도 covariate, 별도 회귀.
- 가장 유연.
- 모수 많음 (\(p + s + 2\) 개).
- 정확한 해석 가능.
ZIP(τ) (식 12.10-12.11): 같은 covariate, \(\tau\) 가 두 부분 비율 조절.
- 절약적 (모수 \(p + 2\) 개).
- \(\tau\) 의 부호 — “covariate 가 \(\lambda\) 를 늘리면 \(\pi\) 가 줄어드는가” 의 방향.
- 해석 단순.
→ 데이터에 맞춰 선택. ZIP 가 더 일반, ZIP(τ) 가 더 절약.
ZIP 모형의 한계 (§ 12.3 끝 부분):
“A major limitation of these models is that they do not accommodate random effects.”
→ Mixed-effects 확장이 필요 (§ 12.4).
4 § 12.4 — Mixed-Effects Models for Counts
4.1 발전사
Mixed-effects Poisson 의 발전:
- Goldstein (1991): Multilevel log-linear 모형.
- Breslow (1984): Poisson regression with normal random effects.
- Lawless & Willmot (1989): Poisson with inverse Gaussian random effects.
- Siddiqui (1996): Normal vs gamma random effects 비교.
- Thall (1988), Stukel (1993), Albert (1992): 추가 확장.
Mixed-effects ZIP:
- Hall (2000): Poisson 부분에만 random effects (EM 알고리즘).
- Hur et al. (2002): 단일 random effect.
- Hedeker & Gibbons (2006): 두 random effects (Poisson + logistic 별도, 식 12.30-12.33).
카운트 데이터의 longitudinal/clustered 발생 형태:
- 같은 환자의 반복 측정 (예: 매년 정신과 방문 횟수).
- 같은 지역의 자살률 (counties).
- 같은 가족의 의료 이용 횟수.
- → 관측 사이 상관 → 독립 가정 위반.
Mixed-effects Poisson 의 동기:
- 환자/지역/클러스터 이질성을 random effects 로 흡수.
- Marginal vs subject-specific 효과 분리.
- 환자별 효과 추정 (Empirical Bayes).
- → § 9-11 의 GLMM framework 의 직접 적용.
5 § 12.4.1 — Mixed-Effects Poisson Regression
5.1 모형 정의 — 식 (12.19-12.21)
환자 \(i\) 의 \(n_i\) 시점 응답 \(y_i\) 의 conditional density (random effect \(\theta_i\) 조건부):
\[ f(y_i \mid \theta) = \prod_{j=1}^{n_i} \frac{\exp(-\lambda_{ij}) \lambda_{ij}^{y_{ij}}}{y_{ij}!} \tag{12.19} \]
with
\[ \lambda_{ij} = \exp(x_{ij}^\top \beta + \sigma \theta_i) \tag{12.20} \]
표준화 random effect: \(\theta_i = \upsilon_i / \sigma \sim \mathcal{N}(0, 1)\).
Log-likelihood (식 12.21):
\[ \log \ell(y_i \mid \theta) = -\sum_{j=1}^{n_i} [\exp(x_{ij}^\top \beta + \sigma \theta_i) - y_{ij} (x_{ij}^\top \beta + \sigma \theta_i) + \log(y_{ij}!)] \]
식 (12.20) 의 \(\lambda_{ij} = \exp(x'\beta + \sigma\theta_i)\) 의 의미:
- \(\sigma \theta_i\) 가 환자별 random shift.
- \(\exp(\sigma \theta_i)\) 가 환자별 multiplicative factor.
해석:
- \(\theta_i = +1\) (\(+1 \sigma\) 환자): \(\lambda\) 가 \(\exp(\sigma)\) 배 증가.
- \(\theta_i = -1\): \(\lambda\) 가 \(\exp(-\sigma)\) 배 감소.
임상 예시 (정신과 방문):
- \(\sigma = 0.5\): 환자별 \(\lambda\) 가 평균 대비 약 \(\exp(0.5) = 1.65\) 배 ~ \(\exp(-0.5) = 0.61\) 배 변동.
- 즉 어떤 환자는 평균보다 1.65 배 자주, 어떤 환자는 0.61 배 자주 방문.
이 multiplicative 형태가 Poisson 의 자연스러운 random effects 표현 — 카운트가 항상 비음수, 비율 효과가 자연.
§ 9.5 mixed-effects logistic 와의 비교:
- Logistic: \(\text{logit}(p) = x'\beta + \sigma\theta\) (additive on logit scale).
- Poisson: \(\log(\lambda) = x'\beta + \sigma\theta\) (additive on log scale, multiplicative on rate).
둘 다 link 함수 척도에서 random effects 추가 — 결과 척도 (probability or rate) 에서는 비선형 효과.
5.2 추정 — 식 (12.22-12.27)
\(\beta\) 와 \(\sigma\) 에 대한 conditional score:
\[ \frac{\partial \log \ell}{\partial \beta} = \sum_{j=1}^{n_i} (y_{ij} - \lambda_{ij}) x_{ij}, \quad \frac{\partial \log \ell}{\partial \sigma} = \sum_{j=1}^{n_i} (y_{ij} - \lambda_{ij}) \theta_i \]
Random effect \(\theta\) 에 대한 적분 (Gauss-Hermite 근사):
\[ h(y_i) = \int_\theta f(y_i \mid \theta) g(\theta) \, d\theta \approx \sum_{q=1}^Q \left[\prod_j \frac{\exp(-\lambda_{ijq}) \lambda_{ijq}^{y_{ij}}}{y_{ij}!} \right] A(B_q) \tag{12.24} \]
with \(\lambda_{ijq} = \exp(x_{ij}^\top \beta + \sigma B_q)\) (식 12.25).
\(B_q\), \(A(B_q)\): Gauss-Hermite quadrature node 와 weight (§ 9.6.3).
식 (12.24) 가 § 9.6 식 (9.40) 의 Poisson 버전. 차이는 conditional likelihood \(\ell\) 의 형태:
- 이항 (식 9.39): Bernoulli 곱.
- 순서형 (식 10.16): Multinomial cumulative.
- 명목 (식 11.8): Multinomial reference.
- 카운트 (식 12.19): Poisson 곱.
적분, marginal MLE, Gauss-Hermite quadrature, Fisher scoring — 모두 동일 framework.
§ 12.4.1 의 식 (12.26-12.27) — marginal score 의 Gauss-Hermite 근사:
\[ \frac{\partial \log L}{\partial \beta} = \sum_i \frac{1}{h(y_i)} \sum_q \sum_j (y_{ij} - \lambda_{ijq}) x_{ij} \cdot \ell_q \cdot A(B_q) \]
→ § 9.6 식 (9.59) 의 Poisson 버전. 알고리즘 구조 동일.
Software 지원:
- R
lme4::glmer(family = poisson). - R
glmmTMB: 빠르고 안정. - SAS
PROC NLMIXED: 직접 코딩. - Hedeker
MIXPREG: 카운트 mixed-effects 의 표준 도구.
6 § 12.4.2 — Empirical Bayes Random Effects
EAP estimator (식 12.28):
\[ \bar\theta_i = E(\theta_i \mid y_i) = \frac{1}{h(y_i)} \int_\theta \theta_i \, \ell(y_i \mid \theta) \, g(\theta) \, d\theta \]
사후 분산 (식 12.29):
\[ V(\bar\theta_i \mid y_i) = \frac{1}{h(y_i)} \int_\theta (\theta_i - \bar\theta_i)^2 \, \ell(y_i \mid \theta) \, g(\theta) \, d\theta \]
→ § 9.6.1 의 식 (9.48-9.49) 와 동일 형태.
Hedeker 본문 인용:
“In clustered data, the empirical Bayes estimator of cluster-specific effects has been used by Thomas et al. [1992] in hospital mortality rate analysis.”
EB 의 응용:
- Hospital mortality rates: 병원별 사망률 — 전국 평균 대비 logit 차이. Quality 평가 토대.
- Suicide rates by counties: 지역별 자살률 — § 12.5 의 Gibbons et al. 2005 분석.
- Service utilization rates: 환자별 의료 이용 빈도.
Shrinkage 효과 (§ 9.6.1 와 동일):
- 데이터 많은 환자/지역 → EB 추정이 그 데이터에 가까움.
- 데이터 적은 환자/지역 → 사전 분포 (모집단 평균) 으로 수축.
이 안정화가 ranking 분석에 결정적 — 작은 표본의 외부치 (outlier) 가 모집단 효과로 잘못 보고되는 것 방지.
7 § 12.4.3 — Mixed-Effects ZIP
7.1 모형 정의 — 식 (12.30-12.33)
ZIP 의 두 component 에 별도 random effects:
\[ P(y_{ij}) = (1 - \pi_{ij}) f(y_{ij}) + I(y_{ij}) \pi_{ij} \tag{12.30} \]
\[ f(y_{ij}) = \frac{\exp(-\lambda_{ij}) \lambda_{ij}^{y_{ij}}}{y_{ij}!} \tag{12.31} \]
\[ \text{logit}(\pi_{ij}) = w_{ij}^\top \gamma + \sigma_2 \theta_{2i} \tag{12.32} \]
\[ \log(\lambda_{ij}) = x_{ij}^\top \beta + \sigma_1 \theta_{1i} \tag{12.33} \]
표기:
- \(\sigma_1 \theta_{1i}\): Poisson part 의 환자별 random effect.
- \(\sigma_2 \theta_{2i}\): Logistic part 의 환자별 random effect.
- 두 random effects 가 별도 (또는 결합 분포 가능).
식 (12.30-12.33) 의 두 random effects 의미:
- \(\theta_{1i}\) (“Poisson frailty”): “이 환자가 진료 필요한 그룹이라면 평균보다 얼마나 자주 방문하는가” 의 환자별 차이.
- \(\theta_{2i}\) (“Logistic frailty”): “이 환자가 perfect state (진료 필요 없는 사람) 일 가능성” 의 환자별 차이.
두 random effects 가 같은 환자에게 작용 — 두 차원의 환자 segmentation:
- \(\theta_{1i} > 0, \theta_{2i} < 0\): 진료 필요한 환자 + 자주 방문 → “high utilizer”.
- \(\theta_{1i} < 0, \theta_{2i} > 0\): 진료 안 필요 환자 + 평균보다 적게 방문 → “non-utilizer”.
- \(\theta_{1i} \approx 0, \theta_{2i} \approx 0\): 평균 환자.
→ ZIP 가 두 차원의 환자 분류 를 자연스럽게 표현. 정책·임상에 풍부한 정보.
\(\theta_{1i}, \theta_{2i}\) 의 상관:
- 독립 가정 가능 (단순).
- 또는 이변량 정규로 상관 모형화 (더 일반).
상관 가정 시 Cholesky factor 사용 (§ 9.5.2 framework).
7.2 ZIP vs Mixed-Effects ZIP
| 모형 | Random effects | 응답 | 활용 |
|---|---|---|---|
| Poisson (식 12.1) | 없음 | Cross-sectional 카운트 | 표준 카운트 분석 |
| ZIP (식 12.7) | 없음 | Excess zeros 카운트 | 두 종류 zero 분리 |
| Mixed-effects Poisson (식 12.19-12.27) | 단일 \(\sigma\) | Longitudinal 카운트 | 환자 이질성 + Poisson |
| Mixed-effects ZIP (식 12.30-12.33) | 두 개 \(\sigma_1, \sigma_2\) | Longitudinal excess zeros | 두 종류 환자 이질성 |
→ Mixed-effects ZIP 가 가장 일반적 — 다른 셋의 일반화.
모형 선택 절차:
- 평균-분산 동등 검정 → Overdispersion 있으면 Poisson 부적절.
- Zero 비율 vs Poisson 예측 비교 → Excess zeros 있으면 ZIP.
- Longitudinal/clustered 구조 → Random effects 필요.
- 두 component (Poisson vs logistic) 의 환자 차이 다르면 → 두 random effects.
NIMH 의료 이용, MHRP, 자살률 등 흔한 longitudinal 카운트 데이터는 보통 Mixed-effects ZIP 가 적합.
8 후속 절의 미리보기
8.1 § 12.5 — Illustration: 자살률 분석
Gibbons et al. (2005) 의 분석:
- 미국 county 별 자살률 데이터.
- Random effect = county.
- Covariate: antidepressant 사용률, 인구학적 변수.
- 핵심 질문: “Antidepressant 사용 증가가 자살률 감소와 연관 있는가”.
Mixed-effects Poisson 의 응용 — county clustering 처리 + antidepressant 효과 추정.
자세한 분석은 후속 sub-post.
9 § 12.6 — Chapter 의 핵심 메시지
카운트 응답은 categorical 의 또 다른 확장: Bernoulli (\(C=2\)) → multinomial (\(C\) 유한) → Poisson (\(C\) 무한). 같은 GLMM framework.
Mean-variance 동등 가정 자주 위반: Overdispersion (NB), excess zeros (ZIP) 의 흔한 문제. 진단 + 적절 모형 선택 필수.
ZIP 의 mixture 발상: 두 종류 zero (perfect + Poisson) 분리. Logistic + Poisson 의 결합으로 임상·정책 인사이트 추가.
Mixed-effects 확장은 § 9.6 toolkit 의 직접 적용: Marginal MLE + Gauss-Hermite + Fisher scoring + Empirical Bayes — 새로 배울 알고리즘 없음.
Mixed-effects ZIP 의 풍부함: 두 random effects (\(\sigma_1\) Poisson + \(\sigma_2\) logistic) 로 두 차원의 환자 이질성. 정책 분석 (자살률, 의료 이용) 의 정확한 도구.
10 응용 분야
| 분야 | 카운트 응답 | ZIP 적용 동기 |
|---|---|---|
| 정신 건강 | 정신과 방문 횟수 | 진료 필요 vs 미필요 분리 |
| 자살 예방 | 지역별 자살 수 | County clustering |
| 보험·의료 | 청구 횟수 | 청구 안 한 사람 대 청구 안 일어남 |
| 교통 사고 | 도로별 사고 수 | 사고 위험 지역 vs 안전 지역 |
| 마케팅 | 제품 구매 횟수 | 구매 안 할 사람 대 구매 안 일어남 |
| 행동 | 흡연 횟수 | 비흡연자 대 흡연자가 안 핀 날 |
| 동물 행동 | 행동 빈도 | 종/개체 차이 |
| 산업 안전 | 공정별 결함 수 | 품질 관리 |
11 코드 예시
11.1 Step 1: Poisson 분포의 시각화
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson
# 다양한 lambda 의 Poisson pmf
fig, ax = plt.subplots(figsize=(10, 5))
x = np.arange(0, 20)
for lam in [1, 3, 5, 10]:
ax.plot(x, poisson.pmf(x, lam), 'o-', label=f'$\\lambda$ = {lam}',
markersize=8, linewidth=2)
ax.set_xlabel('y (count)')
ax.set_ylabel('P(Y = y)')
ax.set_title('Poisson Distribution: 다양한 $\\lambda$')
ax.legend()
ax.grid(alpha=0.3)
plt.tight_layout()
# Mean-variance 동등 검증
print("Mean-Variance 동등 검증:")
for lam in [1, 3, 5, 10]:
samples = np.random.poisson(lam, size=10000)
print(f" lambda = {lam}: mean = {samples.mean():.2f}, var = {samples.var():.2f}")다양한 \(\lambda\) 의 Poisson pmf 모양:
- \(\lambda = 1\): 0 에 큰 mass, skewed right.
- \(\lambda = 5\): 평균 5 근처에 peak, less skewed.
- \(\lambda = 10\): 정규 분포에 가까움 (CLT).
Mean-variance 동등 검증 — 표본 평균과 분산이 거의 같으면 Poisson 적합.
11.2 Step 2: ZIP 시뮬레이션과 적합
import numpy as np
import statsmodels.api as sm
def simulate_zip(n: int, beta: np.ndarray, gamma: np.ndarray,
seed: int = 2026) -> dict:
"""ZIP 데이터 시뮬레이션 (식 12.7-12.9)."""
rng = np.random.default_rng(seed)
x = rng.normal(size=n)
X = np.column_stack([np.ones(n), x])
# Logistic part: P(perfect state)
pi = 1 / (1 + np.exp(-X @ gamma))
# Poisson part: lambda
lam = np.exp(X @ beta)
# Mixture
is_perfect = rng.binomial(1, pi)
y = np.where(is_perfect == 1, 0, rng.poisson(lam))
return {"x": x, "y": y, "pi": pi, "lambda": lam, "is_perfect": is_perfect}
# 시뮬레이션
beta_true = np.array([1.0, 0.5]) # log lambda intercept + slope
gamma_true = np.array([-0.5, 1.0]) # logit pi intercept + slope
data = simulate_zip(n=2000, beta=beta_true, gamma=gamma_true)
print(f"Zero 비율: {(data['y'] == 0).mean():.3f}")
print(f" - Perfect state zero: {(data['is_perfect'] == 1).mean():.3f}")
print(f" - Poisson zero: {((data['is_perfect'] == 0) & (data['y'] == 0)).mean():.3f}")
print(f"평균: {data['y'].mean():.2f}, 분산: {data['y'].var():.2f}")시뮬레이션 결과에서:
- 전체 zero 비율 = perfect state + Poisson state 의 zero.
- Perfect state zero 가 zero 의 대부분 (구조적 zero).
- Poisson state zero 는 작은 비율.
Excess zeros 검증: 표본 평균 < 분산 (overdispersion). 단순 Poisson 적합 시 zero 예측이 부족할 것.
ZIP 적합 (R pscl::zeroinfl):
y ~ x | x 의 표기 — | 앞이 Poisson 부분, 뒤가 logistic 부분.
11.3 Step 3: Mixed-Effects Poisson 시뮬레이션 + 적합
library(lme4)
# Random intercept Poisson 시뮬레이션
set.seed(2026)
n_subjects <- 200
n_times <- 4
df <- expand.grid(subject = 1:n_subjects, time = 1:n_times)
df$x <- rnorm(nrow(df))
upsilon <- rep(rnorm(n_subjects, 0, 0.5), each = n_times)
# lambda_ij = exp(x'beta + sigma * theta_i) (식 12.20)
df$lambda <- exp(0.5 + 0.3 * df$x + upsilon)
df$y <- rpois(nrow(df), df$lambda)
# Mixed-effects Poisson 적합
fit_mep <- glmer(y ~ x + (1 | subject), data = df, family = poisson)
summary(fit_mep)
# 추정값 확인
cat("\n추정값:\n")
cat(" Intercept (진짜 0.5): ", round(fixef(fit_mep)["(Intercept)"], 3), "\n")
cat(" beta (진짜 0.3): ", round(fixef(fit_mep)["x"], 3), "\n")
cat(" sigma (진짜 0.5): ", round(sqrt(VarCorr(fit_mep)$subject[1, 1]), 3), "\n")R glmer 의 family = poisson — Mixed-effects Poisson 의 표준 도구.
추정값이 진짜 모수와 가까우면 시뮬레이션 + 적합 정확.
대안 패키지:
glmmTMB: 더 빠르고 안정 (특히 큰 데이터).MASS::glmmPQL: 옛 표준, PQL 근사.- SAS
PROC NLMIXED: 직접 코딩. - Hedeker
MIXPREG: ZIP 까지 포함.
11.4 Step 4: Empirical Bayes Random Effects 추정
# EB random effects 추출 (식 12.28)
ranef_mep <- ranef(fit_mep, condVar = TRUE)$subject
# 처음 5 환자의 EB 추정
print(head(ranef_mep))
# Shrinkage 검증 — EB 분포가 사전 정규 (sd = 0.5) 보다 좁음
sd_eb <- sd(ranef_mep[, 1])
cat("\nEB random effects SD:", round(sd_eb, 3), "(사전 가정: 0.5)\n")
cat("Shrinkage factor:", round(sd_eb / 0.5, 3), "\n")
# 환자별 expected lambda (개인 prediction)
df$lambda_eb <- exp(fixef(fit_mep)["(Intercept)"]
+ fixef(fit_mep)["x"] * df$x
+ ranef_mep[df$subject, 1])
# 실제 vs 예측
plot(df$lambda, df$lambda_eb, pch = 16, col = rgb(0, 0, 1, 0.3),
xlab = "True lambda", ylab = "EB-predicted lambda",
main = "Empirical Bayes 예측 vs 진짜 lambda")
abline(0, 1, col = "red", lwd = 2)EB 추정이 사전 분포 (정규 SD 0.5) 보다 좁은 SD — Shrinkage 효과.
해석:
- 데이터가 많은 환자 (시점 많음): EB 추정이 진짜에 가까움.
- 데이터가 적은 환자: EB 추정이 0 (사전 평균) 으로 수축.
이 안정화가 mixed-effects 모형의 핵심 가치 — fixed effects 추정의 폭발 방지 + 작은 표본 환자의 합리적 추정.
자살률 분석 (§ 12.5) 의 응용:
- County 별 자살 수 → EB 로 county-specific 자살률 추정.
- 작은 county (인구 적음) → 모집단 평균으로 수축 → 안정.
- 큰 county → 그 county 데이터에 가까운 추정 → 정확.
→ Ranking + 정책 분석의 표준 toolkit.
12 관련 주제
선행 지식
- Ch.9 GLMM 이항 — Mixed-effects logistic (Ch.12 의 toolkit 토대)
- § 9.6 추정 — Marginal MLE + Gauss-Hermite (Ch.12 에 직접 적용)
- § 9.6.1 Empirical Bayes — EAP estimator (식 12.28-12.29 와 동일)
- Ch.10 GLMM 순서형 — 카운트의 ordinal 변환 대안
- Ch.11 GLMM 명목 — Categorical 응답의 다른 형태
후속 주제 (Ch.12 sub-posts)
- § 12.5 — Suicide Rate Illustration (Gibbons et al. 2005)
- § 12.6 — Ch.12 Summary
관련 개념
- Lambert (1992) — ZIP 모형 원전
- Mullahy (1986), King (1989) — Hurdle 모형
- Heilbron (1989, 1994) — ZAP 모형
- Greene (1994) — Zero-inflated negative binomial
- Hall (2000), Hur et al. (2002) — Mixed-effects ZIP 발전
- Goldstein (1991), Breslow (1984) — Mixed-effects Poisson 토대
- Siddiqui (1996) — Normal vs gamma random effects
- Gibbons et al. (2005) — Suicide rate analysis
- Thomas et al. (1992) — Hospital mortality EB ranking
- McCullagh & Nelder (1989) — GLM canonical link 통일
- Statistics 음이항 분포 — Overdispersion 처리 대안
- Statistics 포아송 분포 — Poisson 분포의 기본