1 불균형 데이터의 어려움
ANOVA EMS 는 균등 데이터에서만 정확한 분해. 불균형이면 EMS 의 계수가 데이터 의존적이고, 검정 분모가 명확히 정의되지 않음.
예: 학교 1 에 3 학급 (각 5 학생), 학교 2 에 5 학급 (각 4 학생), 학교 3 에 4 학급 (각 6 학생).
ANOVA EMS 식의 \(n\), \(b\) 가 일정하지 않음. 평균 계수를 사용한 근사 EMS: - \(\bar n = 5\), \(\bar b = 4\).
이 근사가 부정확. 분산 성분 추정 부정확.
해결: ML/REML 의 likelihood 기반 추정.
2 ML/REML 의 해결
각 분산 성분을 likelihood 최대화로 추정. 데이터의 균등성에 의존하지 않음.
\[ \log L_{\text{REML}}(\sigma^2_3, \sigma^2_2, \sigma^2_1) \]
REML 은 fixed effect 의 자유도 손실을 보정하므로 분산 성분이 비편향.
3 가설 데이터 — 불균형 nested
\(a = 3\) 학교, 학급 수 \(b_s \in \{3, 5, 4\}\), 각 학급 학생 수 \(n_{s, c}\) 도 변동.
| 학교 | 학급 수 | 학생 수 (총) |
|---|---|---|
| 1 | 3 | 15 |
| 2 | 5 | 20 |
| 3 | 4 | 18 |
총 \(N = 53\).
3.1 REML 추정 결과
Variance components (REML):
sigma_e^2 = 19.5
sigma_class^2 = 15.2
sigma_school^2 = 22.8
ANOVA approach 는 이 데이터에서 정확한 EMS 식을 만들 수 없어 추정 부정확.
4 Python 코드
import numpy as np
import pandas as pd
from statsmodels.formula.api import mixedlm
np.random.seed(2026)
school_class_count = {0: 3, 1: 5, 2: 4}
school_eff = np.random.normal(0, 5, 3)
records = []
for s, n_classes in school_class_count.items():
for c in range(n_classes):
class_eff = np.random.normal(0, 4)
n_students = np.random.choice([4, 5, 6])
for st in range(n_students):
y = (50 + school_eff[s] + class_eff
+ np.random.normal(0, np.sqrt(19)))
records.append({"school": s, "class": f"s{s}_c{c}", "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().to_dict()}")
print(f"Students per class:")
print(data.groupby(["school", "class"]).size())
# Mixed model with REML
md = mixedlm("Y ~ 1", data=data, groups=data["school"],
re_formula="~1",
vc_formula={"class": "0 + C(class)"}).fit()
print("\n=== Mixed Model REML (3-level nested) ===")
print(md.summary().tables[0])
print(md.summary().tables[1])5 ANOVA vs ML 비교
| 측면 | ANOVA Approach | ML/REML |
|---|---|---|
| 균등 데이터 | 같은 결과 | 같은 결과 |
| 불균형 데이터 | 부정확 | 정확 |
| 결측 데이터 | 어려움 | 자동 처리 |
| 공변량 | ad hoc | 자연스러움 |
| 계산 | 단순 | 수렴 문제 가능 |
| 음수 분산 추정 | 가능 | 가능 (rare) |
6 결측 데이터 자동 처리
ML 추정은 marginal likelihood 를 통해 결측 자동 처리.
각 cluster 의 likelihood: \[ L_i(\boldsymbol{\theta}) = \int f(\mathbf{Y}_i^{\text{obs}}, \mathbf{u}_i | \boldsymbol{\theta}) \, du_i \]
\(\mathbf{Y}_i^{\text{obs}}\) = 관측된 부분만. 결측 부분은 자동 무시.
조건: MAR (missing at random) — 결측이 관측 변수에만 의존.
ANOVA listwise 는 한 측정 결측 시 전체 cluster 제거. ML 은 부분 정보 활용.
7 음의 분산 추정 처리
REML 추정에서도 작은 표본 + 진짜 분산이 0 에 가까우면 음의 추정 가능. 옵션:
- 0 으로 truncate: 단순.
- 모형 단순화: random slope 제거 등.
- Bayesian (prior 유도).
R lme4 는 자동 0 truncate. SAS PROC MIXED 는 옵션 선택.
8 수렴 문제
복잡한 random structure (random slope + UN covariance + level 3+) 에서 ML 추정이 수렴 실패.
증상: - “Singular fit” 경고. - 분산 성분 0 또는 매우 큰 값. - standard error 이상.
해결: 1. 모형 단순화: random slope 제거, CS 또는 AR(1) 사용. 2. 표본 크기 증가: cluster 수 ↑. 3. Bayesian (MCMC): prior 로 안정. 4. 시작점 변경: 다른 initial value.
9 Level-별 Covariate 통합
ANOVA 와 달리 multilevel 은 각 level 의 covariate 를 자연스럽게 추가:
md = mixedlm(
"Y ~ X_student + X_class + X_school", # 각 level 의 covariate
data=data,
groups=data["school"],
vc_formula={"class": "0 + C(class)"}
).fit()각 covariate 의 fixed effect 추정. ANCOVA 의 multilevel 일반화.
10 가정과 한계
- 수렴 문제: 작은 cluster 수 (level 3 의 학교 수가 적음).
- 분포 가정: random effect 정규성.
- 계산 비용: 큰 데이터에서 ML 추정이 느림.
- MAR 가정: 결측 처리에서.
- Boundary test: variance component = 0 검정 부적합.
11 응용
11.1 1. 임상 다센터 (불균형)
센터마다 다른 환자 수 (큰 센터는 100 명, 작은 센터는 20 명).
ANOVA listwise 부적합. multilevel REML 권장.
11.2 2. 교육 (학교 크기 차이)
학교마다 학급 수 다름, 학급마다 학생 수 다름. 자연스러운 불균형.
multilevel 표준.
11.3 3. 농학 (농장 크기)
농장마다 plot 수 다름.
11.4 4. ML 다도메인 평가
각 도메인의 dataset 수 다름.
12 ML 매핑
ML 모델 평가에서 각 dataset 의 cross-validation fold 수가 다를 때:
Dataset 1: 10-fold CV
Dataset 2: 5-fold CV (작은 데이터)
Dataset 3: 20-fold CV (큰 데이터)
ANOVA 는 fold 수가 일정해야. multilevel REML 은 fold 수 변동 OK.
각 dataset 의 random intercept + fold 의 nested random effect.
13 본 시리즈
G-MAX16-0 개관
G-MAX16-1 Nested ANOVA Approach
G-MAX16-2 ML Approach + Unbalanced ← 현재 글
G-MAX16-3 Level-별 Predictor + Random Slope
14 관련 주제
선행 지식
후속 주제
다른 카테고리 연결
15 더 읽을 거리
- Pinheiro, J. C., Bates, D. M. (2000). “Mixed-Effects Models in S and S-PLUS.” Springer.
- Bates, D., Mächler, M., Bolker, B., Walker, S. (2015). “Fitting linear mixed-effects models using lme4.” Journal of Statistical Software 67(1).
- Demidenko, E. (2013). “Mixed Models: Theory and Applications with R” (2nd ed). Wiley.
- Hedeker, D., Gibbons, R. D. (2006). “Longitudinal Data Analysis.” Wiley.
- McCulloch, C. E., Searle, S. R. (2001). “Generalized, Linear, and Mixed Models.” Wiley.