다단계 모델과 계층적 베이지안 추론: lme4·brms 실무 가이드
다단계 모델의 고정효과·랜덤효과, 부분 풀링, 수렴 진단을 정리하고 lme4와 brms 기반의 계층적 추론 방법을 다룬다.
2026-08-14 · 최초 발행 2024-04-29
집단 구조가 있는 데이터는 평균만으로 설명되지 않는다
학생이 반과 학교에 속하고, 환자가 병원에 속하며, 관측값이 지역이나 배치 단위로 묶이는 데이터에서는 같은 집단 안의 관측이 서로 독립적이지 않을 수 있다. 다단계 모델(multilevel model, hierarchical model)은 개인 같은 하위 수준과 집단 같은 상위 수준에서 발생하는 변동을 함께 다루기 위한 방법이다.
이 모형은 고정효과와 랜덤효과를 분리한다. 고정효과는 전체에 공통으로 적용되는 평균 효과를, 랜덤효과는 집단별 절편이나 기울기의 차이를 표현한다. 예를 들어 학생 ⊂ 반 ⊂ 학교처럼 두 수준 이상으로 중첩된 구조에서 각 층위의 변동을 추정할 수 있다.
부분 풀링(partial pooling)은 다단계 모델의 핵심 메커니즘이다. 집단 간 정보를 공유하므로 소표본 집단의 추정치는 전체 평균 쪽으로 수축(shrinkage)되고, 극단적인 추정치나 과적합을 완화할 수 있다.
모형은 랜덤 구조에서 해석이 갈린다
랜덤 절편은 (1 | 집단)처럼 집단별 평균의 차이를 추정한다. (x | 집단)은 랜덤 기울기까지 포함해 예측변수 x의 효과가 집단마다 어떻게 달라지는지도 모델에 담는다.
하위 수준 예측변수와 상위 수준 집단 특성의 관계를 다루려면 교차수준 상호작용을 포함할 수 있다. 정책이나 환경 조건이 하위 수준 효과에 어떤 차이를 만드는지 추정할 때 쓰인다.
랜덤효과의 공분산 구조는 여러 차원의 변동성을 포착하지만, 구조가 지나치게 복잡하면 식별 문제나 단수해(singular fit) 경고가 나타날 수 있다. 이 경우 랜덤 구조를 단순화할 필요가 있다.
예측변수는 전체평균 중심화 또는 집단평균 중심화를 적용하면 절편과 상호작용의 해석이 쉬워지고 수치적 안정성도 높아진다. 범주형 집단 수준 예측변수는 명시적으로 코딩하고, 교차수준 상호작용을 넣을 때는 다중공선성을 점검한다.
lme4와 계층적 베이지안의 선택 기준
lme4는 최대우도 또는 REML을 사용하며 Laplace 근사를 기반으로 혼합모형을 추정한다. 빠른 수렴과 대규모 데이터 처리에 유리하고, 신뢰구간이나 부트스트랩으로 불확실성을 확인할 수 있다.
계층적 베이지안 모델은 사전분포(prior)와 사후분포(posterior)를 사용해 불확실성을 전파한다. MCMC 또는 변분추론으로 추정하며, 신빙구간(credible interval)과 예측 불확실성을 표현할 수 있다.
| 항목 | lme4 (MLE/REML) | 계층적 베이지안 (brms/rstanarm) |
|---|---|---|
| 성능(속도) | 대체로 빠름, 대규모 데이터 적합 | 상대적으로 느림(MCMC), 소규모~중간 규모 적합 |
| 확장성(모형) | 표준 혼합모형 충실 지원 | 복잡한 사전/링크/분포/커스텀 쉽게 확장 |
| 일관성(추론) | 점추정+근사 구간, 부트스트랩 필요 | 사후분포 기반 전면적 불확실성 전파 |
| 안정성(수렴) | 최적화·단수해 이슈 발생 가능 | Rhat/ESS로 수렴 판단, 사전으로 식별성 보조 |
| 운영 편의 | 의존성 가벼움, 배포 용이 | 재현성 우수(사전 포함), 계산 자원 요구 |
데이터 준비부터 보고까지 이어지는 흐름
빈도주의 모형에서는 수렴과 단수해 경고, 잔차와 랜덤효과의 정규성, 교차검증 기반 예측 성능을 확인한다. 베이지안 모형에서는 Rhat, ESS, posterior predictive check가 필수다. 부트스트랩이나 시뮬레이션 기반의 유의성 검토도 빈도주의 분석에서 권장된다.
lme4로 혼합효과모형 적합하기
전제조건은 R ≥ 4.3, lme4 ≥ 1.1-35이다. 유의성 검정에는 lmerTest, 진단에는 performance, 티블 변환에는 broom.mixed를 선택적으로 사용할 수 있다. 아래 예제는 lme4의 내장 sleepstudy 데이터에서 피험자 ⊂ 측정일 구조를 사용한다.
# 환경
install.packages(c("lme4", "lmerTest", "performance", "broom.mixed"), dependencies = TRUE)
library(lme4); library(lmerTest); library(performance); library(broom.mixed)
data("sleepstudy", package = "lme4")
# 중심화/스케일링: 수치적 안정성
sleepstudy$Days_c <- scale(sleepstudy$Days, center = TRUE, scale = TRUE)
# 랜덤 절편+기울기 모형
m1 <- lmer(Reaction ~ Days_c + (Days_c | Subject), data = sleepstudy, REML = TRUE,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 1e5)))
summary(m1)
VarCorr(m1) # 분산 성분
ranef(m1)$Subject[1:5, , drop = FALSE] # 일부 집단 랜덤효과
fixef(m1) # 고정효과
confint(m1, method = "profile") # 신뢰구간(시간 소요)
# 단수해/수렴 점검
check_singularity(m1)
check_model(m1) # 잔차/정규성/이분산성 등 시각 점검
# ICC(군집 간 상관) 계산
vc <- as.data.frame(VarCorr(m1))
var_intercept <- vc$vcov[vc$grp == "Subject" & vc$var1 == "(Intercept)" & is.na(vc$var2)]
var_resid <- sigma(m1)^2
ICC <- var_intercept / (var_intercept + var_resid)
ICC
# 예측: 집단 내(out-of-sample Subject) 주의
pred_in <- predict(m1) # 관측 내 예측
head(pred_in)
# 새로운 집단 예측은 고정효과만 또는 조건부 사전 정보 필요
newdat <- data.frame(Days_c = 0.5, Subject = NA) # 새로운 집단
predict(m1, newdata = newdat, re.form = NA) # 고정효과 기반 예측
단수해가 발생하면 (Days_c | Subject)에서 (1 | Subject)로 랜덤 구조를 축소하는 방안을 검토한다. 고정효과 비교를 위한 모형 선택에는 REML = FALSE가 권장되고, 최종 추정에는 REML = TRUE가 권장된다. 유의성 검정은 lmerTest의 Satterthwaite 자유도 근사 또는 parametric bootstrap으로 수행할 수 있다.
brms에서 사후분포로 불확실성 다루기
brms ≥ 2.20, posterior, bayesplot이 필요하며 백엔드는 rstan 또는 cmdstanr(권장)를 사용할 수 있다. 같은 모형식을 두고 약한 정보 사전을 지정한 예시는 다음과 같다.
# 설치 및 준비
install.packages(c("brms", "bayesplot", "posterior"))
# cmdstanr 권장: install.packages("cmdstanr", repos = c("https://mc-stan.org/r-packages/", getOption("repos")))
library(brms); library(bayesplot)
# 동일한 공식, 약한 정보 사전 예시
priors <- c(
set_prior("normal(0, 5)", class = "b"),
set_prior("student_t(3, 0, 10)", class = "Intercept"),
set_prior("exponential(1)", class = "sd"),
set_prior("exponential(1)", class = "sigma")
)
bm1 <- brm(
formula = Reaction ~ Days_c + (Days_c | Subject),
data = sleepstudy,
family = gaussian(),
prior = priors,
chains = 4, iter = 4000, warmup = 1000, cores = 4,
seed = 2025, backend = "rstan" # or backend="cmdstanr"
)
summary(bm1) # Rhat, ESS 확인
pp_check(bm1) # 사후예측 점검
posterior_interval(bm1, prob = 0.95)
사전분포로는 확산적 Normal/Student-t를 사용할 수 있고, 분산·표준편차에는 half-Student-t 또는 exponential이 권장된다. Rhat≈1.00과 ESS 충분성을 점검하며, 발산(divergence)이 발생하면 스텝사이즈나 적분정확도(adapt_delta)를 조정한다. 모형 비교에는 LOO/WAIC, 보고에는 베이지안 R^2를 사용할 수 있다.
계층 구조가 의사결정에 반영되는 장면
교육 평가에서는 학생 점수 ~ 학생 특성 + (1 + 학생 노력 | 반/학교) 구조로 학교별 성과와 노력의 기울기 차이를 추정하고 성과개선책을 타겟팅할 수 있다. 의료 성과에서는 환자 회복시간 ~ 환자 특성 + 치료 + (1 | 병원) 모형으로 병원 간 이질성을 통제하고 치료효과의 일반화 가능성을 높인다.
마케팅·세일즈에서는 전환율 ~ 채널 + 캠페인 특성 + (1 + 채널 | 지역)으로 지역별 반응 이질성을 반영해 예산을 배분한다. 제조·품질 영역에서는 불량률 ~ 공정 조건 + (1 | 라인/배치)로 배치 간 변동을 분리해 공정 안정화에 활용한다. 온라인 실험의 사용자 ⊂ 세션 ⊂ 지역 구조에서는 군집 상관을 반영해 과신(confidence inflation)을 막을 수 있다.
부분 풀링에 따른 과적합 감소를 가정하면 MAE/MSE 5~20% 개선, 신뢰/신빙구간 폭 축소, 예측 구간의 교차검증 적합도 향상을 기대할 수 있다. 집단 간 이질성을 해석할 수 있어 정책 타겟팅을 정교화하고, 집단 크기·층화를 포함한 데이터 수집 설계의 근거도 마련된다.
복잡도를 늘리기 전에 확인할 점
중심화와 스케일링으로 수치 안정성과 해석 가능성을 확보한 뒤, 최소 충분 구조에서 시작해 랜덤 기울기와 교차수준 상호작용을 추가한다. 교차검증 또는 LOO와 잔차 진단을 함께 사용하면 과적합과 미적합을 일찍 발견할 수 있다.
모형이 복잡해질수록 수렴 문제와 해석 난이도도 커진다. 모델 단순화, 사전 강화, 데이터 확대 사이의 균형이 필요하다. 베이지안 접근은 계산비용이 크지만 불확실성 표현과 사전 지식 통합에 강점이 있고, lme4는 빠른 추정과 실무 배포에 유리하다.