1 정의
데이터가 여러 단계 nested 되어 있고 (예: 학교 → 학급 → 학생 → 시점), 각 단계마다 고정 또는 random 효과를 가진 multilevel framework.
3-level nested:
\[ Y_{ijk} = \beta_0 + u_{0j} + u_{0k(j)} + \varepsilon_{ijk} \]
- \(j\): level 3 (학교).
- \(k(j)\): level 2 (학급 within 학교).
- \(i\): level 1 (학생 within 학급 within 학교).
random effects: - \(u_{0j} \sim N(0, \sigma^2_3)\): 학교 random. - \(u_{0k(j)} \sim N(0, \sigma^2_2)\): 학급 random within 학교. - \(\varepsilon_{ijk} \sim N(0, \sigma^2_1)\): 학생 잔차.
2 다층 nested 의 일반화
2.1 4-Level Nested
학교 → 학급 → 학생 → 시점:
\[ Y_{ijkl} = \beta_0 + \alpha_l^{\text{school}} + \beta_{kl}^{\text{class}} + \gamma_{jkl}^{\text{student}} + \varepsilon_{ijkl} \]
각 level 마다 random intercept. 분산 성분 4 개.
2.2 Cross-Classified vs Pure Nested
- Pure Nested: 한 단위가 한 상위 단위에만 속함 (학생 → 한 학급 → 한 학교).
- Cross-Classified: 한 단위가 여러 분류에 속함 (학생 × 과목 — 한 학생이 여러 과목 수강).
본 챕터는 pure nested. Cross-classified 는 다른 framework 필요.
학급은 학교 안에서만 존재. 학교를 떠나면 같은 학급이 다른 학교에 다시 등장하지 않는다. 이것이 nesting. Cross-classified 는 한 단위 (학생) 가 여러 분류 (과목) 를 동시에 가진다.
A/B test 의 사용자 × 처치는 cross-classified (각 사용자가 모든 처치를 받지는 않지만, 같은 사용자가 다른 처치 셀에 들어갈 가능성이 있는 디자인). 사용자 within 그룹 (예: 사용자 1, 2, 3 이 그룹 1; 사용자 4, 5, 6 이 그룹 2) 은 nested.
이 구분이 중요한 이유는 통계 모형이 다르기 때문. nested 는 hierarchical structure 함수, cross-classified 는 양방향 random effects.
3 왜 Hierarchical Mixed Nested 인가
3.1 단계별 분산 분해
각 nested level 의 분산을 명시적으로 추정. 어디서 변동이 오는지 분해:
\[ \text{Total Var} = \sigma^2_3 + \sigma^2_2 + \sigma^2_1 \]
학교, 학급, 학생 각각의 기여도.
3.2 Level-별 예측 변수
각 level 마다 다른 covariate 가 있을 수 있다.
- Level 1 (학생): 학생 IQ, SES (사회경제적 지위), 출석률, 성별.
- Level 2 (학급): 교사 경력, 학급 크기, 교수법.
- Level 3 (학교): 학교 자원, 사립/공립, 도시/시골.
각 level 의 예측 변수가 자기 level 의 분산을 설명.
3.3 Random Slope 확장
학생의 시간 trajectory slope 가 학급 → 학교에 따라 다름.
각 level 의 slope 의 random 변동.
3.4 Cross-Level Interaction
상위 level 의 변수가 하위 level 의 효과를 modulate.
예: 학교 자원 × 학생 SES → “자원 많은 학교에서 SES 효과가 어떻게 다른가?”
이는 사회과학의 핵심 가설 에 직접 매핑.
4 ANOVA Approach vs ML Approach
| 측면 | ANOVA (전통) | ML / REML |
|---|---|---|
| 균등 데이터 | 정확 | 정확 |
| 비균등 데이터 | 부정확 (EMS 식 어긋남) | 정확 |
| 결측 처리 | 어려움 | 자동 (MAR 가정) |
| 공변량 통합 | ad hoc | 자연스러움 |
| 음의 분산 추정 | 가능 | 가능 (rare) |
| 계산 | 단순 | 수렴 문제 가능 |
| 권장 | 균등·교육 | 일반 |
4.1 ANOVA 의 정통 절차 (균등 데이터)
각 level 의 EMS 작성:
| Source | \(df\) | EMS |
|---|---|---|
| 학교 | \(a-1\) | \(\sigma^2_1 + n \sigma^2_2 + nb \sigma^2_3\) |
| 학급(학교) | \(a(b-1)\) | \(\sigma^2_1 + n \sigma^2_2\) |
| 잔차 | \(ab(n-1)\) | \(\sigma^2_1\) |
분산 성분 추정: \[ \hat\sigma^2_1 = MS_E \] \[ \hat\sigma^2_2 = (MS_{B(A)} - MS_E) / n \] \[ \hat\sigma^2_3 = (MS_A - MS_{B(A)}) / (nb) \]
검정 분모: - 학교 검정 → \(MS_{B(A)}\). - 학급(학교) 검정 → \(MS_E\).
4.2 ML/REML 의 일반 절차
likelihood maximization 으로 \(\boldsymbol{\beta}\) (fixed) 와 \((\sigma^2_1, \sigma^2_2, \sigma^2_3)\) (variance components) 동시 추정.
REML 은 fixed effect 의 자유도 손실을 보정 → 분산 성분 비편향.
5 ICC 의 multilevel 정의
같은 cluster 내 두 관측의 상관:
| ICC | 정의 | 의미 |
|---|---|---|
| ICC at school | \(\sigma^2_3 / (\sigma^2_3 + \sigma^2_2 + \sigma^2_1)\) | 같은 학교 두 학생 |
| ICC at class | \((\sigma^2_3 + \sigma^2_2) / (\sigma^2_3 + \sigma^2_2 + \sigma^2_1)\) | 같은 학급 두 학생 |
5.1 ICC 의 실무적 의미
ICC 가 큰 데이터는 cluster 효과가 강함:
- ICC = 0: cluster 효과 없음. 단순 OLS OK.
- ICC = 0.1: 약 cluster 효과. 일반적.
- ICC = 0.3: 강 cluster 효과. multilevel 필수.
- ICC = 0.7+: 매우 강. cluster 가 거의 모든 정보.
5.2 Design Effect
ICC 가 OLS 의 표준오차에 미치는 영향:
\[ \text{Design Effect (DEFF)} = 1 + (m - 1) \cdot \text{ICC} \]
\(m\) = 평균 cluster 크기. DEFF > 1 이면 OLS 표준오차가 underestimate.
ICC = 0.2, \(m = 20\) 의 데이터에 OLS: \[ \text{DEFF} = 1 + 19 \times 0.2 = 4.8 \]
실제 표준오차가 OLS 의 \(\sqrt{4.8} \approx 2.2\) 배. p-value 가 4 배 작게 나옴 (가짜 양성 4 배 증가).
multilevel 모형 또는 cluster-robust SE 가 필수.
6 가설 사례 — 교육 데이터
6.1 데이터 구조
- 학교 5 개 (random sample of 전국 학교).
- 각 학교 6 학급 (학교 내 random sample).
- 각 학급 25 학생.
- \(Y\): 영어 점수.
- \(X_1\) (학생 SES, level 1).
- \(X_2\) (교사 경력, level 2).
- \(X_3\) (학교 자원, level 3).
총 \(N = 5 \times 6 \times 25 = 750\) 학생.
6.2 Null Model (먼저)
\[ Y_{ijk} = \beta_0 + u_{0j} + u_{0k(j)} + \varepsilon_{ijk} \]
분산 분해: - \(\sigma^2_1\) (학생) = 80 - \(\sigma^2_2\) (학급) = 30 - \(\sigma^2_3\) (학교) = 25
ICC at school = \(25/135 = 0.185\). ICC at class = \(55/135 = 0.41\).
→ 학급 cluster 효과 강함. 학교 효과도 무시 못 함.
6.3 Level-별 변수 추가
Y_ijk = β_0 + γ_1 X_1,ijk + γ_2 X_2,k(j) + γ_3 X_3,j
+ δ X_1,ijk × X_3,j (cross-level interaction)
+ u_0j + u_0k(j) + u_1k(j) X_1,ijk
+ ε_ijk
해석: - \(\gamma_1\): 학생 SES 의 평균 효과. - \(\gamma_2\): 학급의 교사 경력 효과. - \(\gamma_3\): 학교 자원 효과. - \(\delta\): SES × 학교 자원 — “자원 많은 학교에서 SES 효과가 어떻게 다른가?” - \(u_{1k(j)}\): 학급마다 다른 SES slope.
7 Ch.16 의 4 단계
G-MAX16-0 개관 (현재 글)
G-MAX16-1 Nested Design + ANOVA Approach
G-MAX16-2 ML Approach + Unbalanced Design
G-MAX16-3 Level-2 Predictor + Level-1 Predictor + Random Slope
8 응용
| 분야 | Level 1 | Level 2 | Level 3 |
|---|---|---|---|
| 교육 | 학생 | 학급 | 학교 |
| 임상 다센터 | 환자 시점 | 환자 | 센터 |
| 메타분석 | 환자 | 연구 | 메타분석 |
| 공중보건 | 개인 | 지역 | 국가 |
| IT longitudinal | 측정 시점 | 사용자 | 세그먼트 |
| 농학 (다농장) | plot | 농장 | 지역 |
| 종교 사회학 | 신자 | 교회 | 교파 |
9 Python 코드 — 3-Level Nested
import numpy as np
import pandas as pd
from statsmodels.formula.api import mixedlm
np.random.seed(2026)
# 가상 데이터: 학교 5 → 학급 6 → 학생 25
n_schools = 5
n_classes = 6
n_students = 25
records = []
sigma_school = np.sqrt(25)
sigma_class = np.sqrt(30)
sigma_student = np.sqrt(80)
for s in range(n_schools):
school_eff = np.random.normal(0, sigma_school)
school_resource = np.random.uniform(40, 100) # level 3 covariate
for c in range(n_classes):
class_eff = np.random.normal(0, sigma_class)
teacher_exp = np.random.uniform(2, 30) # level 2 covariate
for st in range(n_students):
ses = np.random.normal(50, 10) # level 1 covariate
# 응답 모형
y = (60
+ 0.3 * ses # SES 의 main effect
+ 0.2 * teacher_exp # 교사 경력
+ 0.1 * school_resource # 학교 자원
+ 0.005 * ses * school_resource # cross-level interaction
+ school_eff + class_eff
+ np.random.normal(0, sigma_student))
records.append({
"school": s, "class": f"{s}_{c}", "student": st,
"SES": ses, "teacher_exp": teacher_exp,
"school_resource": school_resource,
"Y": y
})
data = pd.DataFrame(records)
print(f"Total observations: {len(data)}")
print(f"Schools: {data['school'].nunique()}")
print(f"Classes per school: {data.groupby('school')['class'].nunique().mean()}")
# Null model — variance decomposition
md_null = mixedlm("Y ~ 1", data=data, groups=data["school"],
vc_formula={"class": "0 + C(class)"}).fit()
print("\n=== Null Model (variance decomposition) ===")
print(md_null.summary().tables[0])
# Full model with all covariates
md_full = mixedlm(
"Y ~ SES + teacher_exp + school_resource + SES:school_resource",
data=data, groups=data["school"],
vc_formula={"class": "0 + C(class)"}
).fit()
print("\n=== Full Model ===")
print(md_full.summary().tables[1])
# ICC 계산 (null model 기반)
sigma_school_hat = md_null.cov_re.iloc[0, 0]
sigma_class_hat = md_null.vcomp[0] # 또는 다른 attribute
sigma_e_hat = md_null.scale
total = sigma_school_hat + sigma_class_hat + sigma_e_hat
print(f"\n=== Variance components ===")
print(f" σ²_school = {sigma_school_hat:.2f}")
print(f" σ²_class = {sigma_class_hat:.2f}")
print(f" σ²_residual = {sigma_e_hat:.2f}")
print(f"\n=== ICC ===")
print(f" ICC at school = {sigma_school_hat / total:.3f}")
print(f" ICC at class = {(sigma_school_hat + sigma_class_hat) / total:.3f}")10 검정력 분석 — Multilevel
multilevel 의 검정력은 OLS 와 다름. cluster 수, cluster 크기, ICC 의 함수.
| 변수 | 검정력 영향 |
|---|---|
| Level 3 cluster 수 (학교) | level 3 효과 검정력 |
| Level 2 cluster 수 (학급) | level 2 효과 검정력 |
| Level 1 표본 (학생/학급) | level 1 효과 검정력 |
| ICC | 클수록 cluster 검정력 ↑, level 1 검정력 ↓ |
R simr, Python statsmodels simulation 으로 검정력 계산.
연구 자원이 한정. 학교 더 많이 vs 학교 적고 학급 많이 vs 학생만 많이?
- 학교 효과 검정 관심 → 학교 수 늘리기 (Level 3 표본).
- 학급 효과 검정 관심 → 학급 수 늘리기 (Level 2).
- 학생 수준 효과 → 학생 수 늘리기.
ICC 가 큰 cluster 효과는 cluster 수가 결정적. 학생만 늘려도 학교 효과 추정은 거의 개선 안 됨.
이는 multilevel 검정력 분석의 핵심 — cluster 수가 중요.
11 가정과 한계
11.1 Random Effect 의 정규성
각 level 의 random effect 가 정규. 위반 시 robust 추정 (Bayesian 또는 GEE).
큰 cluster 수 (예: 학교 50+) 에서 robust. 작은 (5~10) 에서는 신뢰구간 약.
11.2 Conditional Independence
Random effect 주어진 후 잔차 독립.
같은 학생의 다른 측정이 다른 source 의 의존이면 (예: time series 자기상관) 추가 모형.
11.3 수렴 문제
복잡한 random structure (4-level + random slope + interaction) 는 추정 수렴 어려움. 모형 단순화 또는 Bayesian (MCMC) 권장.
11.4 Boundary Test
variance component = 0 검정은 standard \(\chi^2\) 부적합. mixture distribution 사용.
R RLRsim, Python simulation-based 검정.
12 Phase G 의 마무리 — Maxwell 시리즈 종료
G-MAX2~5: ANOVA 기초 (Phase A)
G-MAX6: Trend Analysis
G-MAX7: Two-Way Factorial
G-MAX8: Higher-Order Factorial
G-MAX9: ANCOVA
G-MAX10: Random/Nested
G-MAX11~12: Within-Subjects (univariate)
G-MAX13~14: Within-Subjects (multivariate)
G-MAX15: Multilevel
G-MAX16: Hierarchical Nested ← 마지막
↓
Phase H (통계 모델링), G-MON Series (정통 DOE)
13 관련 주제
선행 지식
후속 주제
- G-MAX16-1: Nested ANOVA Approach
- G-MAX16-2: ML Approach + Unbalanced
- G-MAX16-3: Level-별 Predictor + Random Slope
다른 카테고리 연결
14 더 읽을 거리
- Raudenbush, S. W., Bryk, A. S. (2002). “Hierarchical Linear Models: Applications and Data Analysis Methods” (2nd ed). Sage — 다층 모형의 표준 reference.
- Goldstein, H. (2011). “Multilevel Statistical Models” (4th ed). Wiley.
- Snijders, T. A. B., Bosker, R. J. (2012). “Multilevel Analysis: An Introduction to Basic and Advanced Multilevel Modeling” (2nd ed). Sage.
- Pinheiro, J. C., Bates, D. M. (2000). “Mixed-Effects Models in S and S-PLUS.” Springer — R 의 nlme 패키지 reference.
- Bates, D., Mächler, M., Bolker, B., Walker, S. (2015). “Fitting linear mixed-effects models using lme4.” Journal of Statistical Software 67(1) — lme4 의 표준 논문.
- Hedeker, D., Gibbons, R. D. (2006). “Longitudinal Data Analysis.” Wiley — 임상 longitudinal 의 표준.