다중 수준 모델링으로 교차수준 효과와 임의 기울기 해석하기
다중 수준 모델링에서 교차수준 상호작용과 Random Slopes를 설계하고 AIC, BIC, LRT로 모형을 비교하는 방법
2026-08-14 · 최초 발행 2024-04-29
군집 안의 상관과 집단별 차이를 한 모형에 담기
조직, 학교, 병원처럼 관측치가 상위 집단에 묶여 있는 데이터는 일반 회귀모형만으로 해석하기 어렵다. 같은 집단에 속한 관측치는 서로 닮아 있을 수 있고, 개인 수준 변수의 영향도 집단마다 달라질 수 있다.
다중 수준 모델링(Multilevel Modeling, Hierarchical Linear Modeling)은 이 구조를 회귀모형 안에서 다룬다. 레벨-1의 개인 효과와 레벨-2의 집단 효과를 분리하면서 결합해, 군집 간 이질성과 군집 내 상관을 동시에 반영한다.
교차수준 상호작용(Cross-Level Interaction)은 레벨-1 예측변수의 기울기가 레벨-2 특성에 따라 달라지는 경우를 뜻한다. 학생의 공부시간이 성취도에 미치는 영향이 학급 평균 SES에 따라 달라지는 상황이 한 예다.
Random Slopes는 이 레벨-1 기울기를 집단별 임의효과로 둔다. 집단마다 다른 기울기를 허용해 측정되지 않은 집단 특성의 이질성을 흡수하고, 모형의 예측력과 표현력을 높일 수 있다.
AIC와 BIC는 최대우도 기반의 정보준거다. AIC = 2k − 2ln(L), BIC = ln(n)k − 2ln(L)로 계산하며, 과적합 억제와 예측 성능·해석 가능성 사이의 균형을 판단하는 데 쓴다.
모형 명세에서 먼저 결정할 것
전형적인 2수준 선형모형은 다음처럼 쓴다.
- 레벨-1: y_ij = β0j + β1j x_ij + e_ij
- 레벨-2: β0j = γ00 + u0j, β1j = γ10 + u1j
이 구조에서는 random intercept와 random slope의 공분산도 포함할 수 있다. 고정효과를 비교할 때는 ML을 사용하고, 고정효과가 같은 모형에서 분산성분을 비교할 때는 REML을 권장한다. 소표본이나 경계문제가 있으면 부트스트랩 또는 베이지안 대안을 고려한다.
중심화가 바꾸는 효과의 의미
그룹평균 중심화(CWC)는 레벨-1 예측변수에서 해당 집단의 평균을 뺀다. 이 방식은 순수한 집단 내 기울기를 추정하기 쉽고, 교차수준 상호작용을 해석할 때도 명확하다.
전역평균 중심화(GMC)는 전체 자료 평균을 기준으로 값을 변환한다. 교차수준 효과를 단순하게 해석할 수 있지만, 레벨-1과 레벨-2 효과를 분리해 읽을 때는 주의가 필요하다.
기울기 변동과 공분산 구조
(1 + x | group)은 절편과 기울기의 임의효과, 그리고 둘 사이의 상관을 허용한다. 표본 크기 제약으로 수렴이 불안정하다면 (1 + x || group)으로 상관을 0으로 고정할 수 있다.
기울기 분산이 유의하면 교차수준 상호작용을 검토할 후보가 된다. 반대로 분산이 거의 0이거나 singular fit이 발생하면 모형 단순화 또는 정규화를 검토한다.
정보준거와 우도비검정의 역할
AIC는 예측 성능을 지향하고, BIC는 더 단순한 모형을 선호한다. 관측치 수가 커질수록 BIC의 패널티도 강해진다.
LRT는 중첩된 모형을 비교하는 데 쓴다. 고정효과 비교는 ML에서 수행하고, 임의효과 비교는 REML에서 수행하는 방식을 권장한다. 경계문제가 있으면 파라메트릭 부트스트랩을 사용한다.
교육·마케팅·의료 데이터에서의 적용
교육 데이터에서는 학생 수준 공부시간 x를 CWC로 중심화하고, 학급 평균 SES z를 GMC로 변환한 뒤 y ~ x*z + (1 + x | class)를 적합할 수 있다. AIC, BIC, LRT로 후보 모형을 비교하면 학급 SES가 공부시간의 효과를 강화하거나 약화하는지 확인할 수 있고, 학급별 지도 전략으로 연결할 수 있다.
마케팅에서는 할인율 x와 지점 경쟁 강도 z를 사용해 y ~ x*z + (1 + x | store)를 구성한다. 예산과 지점 특성에 따른 가격 탄력성 차이를 추정해, 지점별 탄력성 분포와 캠페인 타깃팅, ROI 개선을 검토한다.
의료 데이터에서는 환자 치료 강도 x, 병원 프로토콜 성숙도 z를 바탕으로 y ~ x*z + (1 + x | hospital)을 적합할 수 있다. 병원 간 기울기 이질성을 반영하면서 프로토콜 성숙도가 치료 효과를 조절하는지 검증하고, 자원 배분과 임상 경로 최적화에 활용한다.
예측과 해석에서 얻는 변화
군집 구조와 표본 크기에 따라 RMSE는 515% 개선 가능성이 있고, MAE는 310% 개선 가능성이 있다. 군집 간 상관을 반영하면 신뢰구간 커버리지의 정합성이 개선되며, LRT 기반 임의효과 검증의 정확도도 높아진다.
모형은 레벨 내 효과와 레벨 간 효과를 분리해 해석하게 해 준다. 정책과 운영 의사결정으로 연결할 수 있는 구조적 통찰을 제공하며, 군집별 맞춤 전략 수립과 과적합·모형 복잡도 관리에도 도움이 된다.
AIC와 BIC를 선택하는 기준
| 지표 | AIC | BIC |
|---|---|---|
| 성능 | 예측 성능 최우선, 과적합 억제 약함 | 단순성 우선, 과적합 억제 강함 |
| 확장성 | 고차원에서도 유연, 변수 다수 허용 | 표본 수 증가 시 패널티 강화, 변수 축소 경향 |
| 일관성 | 진정 모형 선택 일관성 낮음 | 진정 모형 선택 일관성 높음(이론적 성질) |
| 안정성 | 표본 변동에 민감 | 표본 증가 시 선택 안정화 |
| 운영 편의 | 예측 과제·프로덕션 적합 | 설명 과제·정책 보고 적합 |
후보군을 AIC로 좁힌 뒤, 최종 해석과 보고에서는 BIC 및 진단 결과를 함께 고려하는 절충도 가능하다. AIC는 운영 예측 파이프라인 성과를 우선할 때, BIC는 보고·정책 목적의 단순하고 견고한 모형을 택할 때 적합하다.
적합부터 검증까지 이어지는 흐름
수렴 경고, Hessian, 분산성분의 0 경계값, 임의효과 상관이 1 또는 −1에 가까운지를 확인한다. 잔차에서는 정규성·등분산성·독립성을 점검하고 영향점도 검토한다. 필요하면 강건 분산, 샌드위치 추정량, 베이지안 모형을 대안으로 검토할 수 있다.
R에서 적합과 비교 수행하기
환경은 R ≥ 4.3, lme4 ≥ 1.1-35, performance ≥ 0.11을 전제로 한다. data는 관측치별 행을 가지며, y는 연속형, x는 레벨-1 변수, z는 레벨-2 변수, group은 군집 ID다.
# 패키지
library(lme4)
library(performance)
# 중심화: CWC(그룹평균)와 GMC(전체평균)
df <- data
df$x_cwc <- with(df, x - ave(x, group, FUN=mean))
df$z_gmc <- scale(df$z, scale=FALSE)
# 모형: Cross-Level Interaction + Random Slope
m1 <- lmer(y ~ x_cwc * z_gmc + (1 + x_cwc | group), data=df, REML=FALSE)
# 대안 모형: 상호작용 제거
m0 <- lmer(y ~ x_cwc + z_gmc + (1 + x_cwc | group), data=df, REML=FALSE)
# AIC/BIC 비교
AIC(m0, m1); BIC(m0, m1)
# 우도비검정(LRT)
anova(m0, m1) # ML 기준 고정효과 비교 적합
# 진단: 수렴·특이 적합
check_model(m1) # 그래픽 진단
isSingular(m1, tol=1e-4)
# 수렴 문제 대응: 공분산 단순화(||)와 옵티마이저 변경
m1_simpler <- lmer(y ~ x_cwc * z_gmc + (1 + x_cwc || group),
data=df, REML=FALSE,
control=lmerControl(optimizer="bobyqa"))
고정효과 비교에는 REML=FALSE를 설정한다. 임의효과 구조를 비교할 때는 REML과 파라메트릭 부트스트랩을 권장한다. singular fit이 발생하면 랜덤 효과 상관 제거(||), 기울기 제거, 스케일링, 초기값 조정 순으로 적용한다.
Python에서 mixedlm으로 확인하는 방법
환경은 Python ≥ 3.10, statsmodels ≥ 0.14, pandas ≥ 1.5, numpy ≥ 1.24이며, 데이터 스키마는 R 예시와 같다.
import pandas as pd
import numpy as np
import statsmodels.formula.api as smf
df = data.copy()
df['x_cwc'] = df['x'] - df.groupby('group')['x'].transform('mean')
df['z_gmc'] = df['z'] - df['z'].mean()
# Random slope + Cross-level interaction
m1 = smf.mixedlm("y ~ x_cwc * z_gmc", df, groups=df["group"],
re_formula="~x_cwc").fit(method="lbfgs")
m0 = smf.mixedlm("y ~ x_cwc + z_gmc", df, groups=df["group"],
re_formula="~x_cwc").fit(method="lbfgs")
# AIC/BIC
print(m0.aic, m1.aic, m0.bic, m1.bic)
# LRT
lr_stat = 2*(m1.llf - m0.llf)
df_diff = m1.df_modelwc - m0.df_modelwc
from scipy.stats import chi2
pval = chi2.sf(lr_stat, df_diff)
print(lr_stat, df_diff, pval)
# 수렴 이슈 대응: 메서드·옵션 변경
m1_alt = smf.mixedlm("y ~ x_cwc * z_gmc", df, groups=df["group"],
re_formula="~x_cwc").fit(method="nm", maxiter=1000)
statsmodels의 BIC는 관측치 수를 n으로 사용한다. 다층 구조에서는 n의 정의가 결과에 영향을 줄 수 있으므로 민감도 분석을 권장한다. 수렴하지 않으면 method를 변경(lbfgs, cg, nm)하고, 스케일링과 임의효과 단순화를 적용한다.
복잡도와 안정성 사이의 운영 판단
변수 스케일링과 중심화는 수렴 안정성과 해석성을 높이지만, 사후 해석에서는 원척도로 변환해야 한다. Random Slope는 이질성과 예측 성능을 반영하는 대신 파라미터를 늘려 수렴 실패와 특이 적합 위험을 키울 수 있다.
검정 절차도 구분해야 한다. 고정효과는 ML 기반 LRT와 다중비교 보정을 병행하고, 임의효과는 REML과 부트스트랩을 사용하며 경계문제를 주의한다. 중심화 전략, 공분산 구조, 수렴·특이 적합 진단을 모형 설계와 운영 과정에 함께 포함해야 계층 데이터에서 예측과 해석 목적에 맞는 판단을 할 수 있다.