1 정의
요인 \(B\) 의 levels 가 요인 \(A\) 의 각 level 마다 다르게 정의되는 설계. 즉 \(B\) 가 \(A\) 안에 nested.
\[ Y_{ijk} = \mu + \alpha_j + \beta_{k(j)} + \varepsilon_{ijk} \]
- \(j = 1, \ldots, a\): \(A\) 의 levels (보통 fixed 또는 random).
- \(k(j) = 1, \ldots, b\): \(A = j\) 안의 \(B\) levels (보통 random).
- \(i = 1, \ldots, n\): cell 내 관측.
- \(\beta_{k(j)} \sim N(0, \sigma^2_{B(A)})\).
Cross-classified 와의 차이: \(B\) 의 같은 label 이 다른 \(A\) levels 에서 같은 모집단 단위가 아니다.
2 Cross-Classified vs Nested
2.1 Cross-Classified (예: 학생 × 과목)
- 학생 1 이 수학·과학·영어 모두 수강.
- 같은 학생 1 이 모든 과목에 등장 (cross-classified).
- 모형: \(Y = \mu + \alpha_{\text{과목}} + \beta_{\text{학생}} + (\alpha\beta) + \varepsilon\) (twoway 일반).
2.2 Nested (예: 학급 within 학교)
- 학교 1 의 학급 1, 2, 3.
- 학교 2 의 학급 1, 2, 3 (다른 학급, 같은 label 이지만 같은 entity 아님).
- 학교 1 의 학급 1 ≠ 학교 2 의 학급 1.
- 모형: \(Y = \mu + \alpha_{\text{학교}} + \beta_{\text{학급(학교)}} + \varepsilon\).
학급은 학교 안에서만 존재. 학교를 떠나면 같은 학급이 다른 학교에 다시 등장하지 않는다. 이것이 nesting.
Cross-classified 는 한 단위 (학생) 가 여러 분류 (과목) 를 동시에 가진다.
A/B test 의 사용자 × 처치는 cross-classified (각 사용자가 모든 처치를 받지는 않지만, 같은 사용자가 다른 처치 셀에 들어갈 가능성이 있는 design). 사용자 within 그룹 (예: 사용자 1, 2, 3 이 그룹 1; 사용자 4, 5, 6 이 그룹 2) 은 nested.
이 구분이 중요한 이유는 통계 모형이 다르기 때문. nested 는 hierarchical structure 함수, cross-classified 는 양방향 random effects.
2.3 데이터 자체에 의한 식별
데이터에서 nested 인지 cross-classified 인지 확인:
3 EMS — \(A\) fixed, \(B(A)\) random
\(a\) 개 fixed levels, 각 \(A\) 안에 \(b\) 개 random levels, 각 cell \(n\) 관측.
| Source | \(df\) | EMS |
|---|---|---|
| \(A\) (fixed) | \(a-1\) | \(\sigma^2 + n \sigma^2_{B(A)} + nb \theta_\alpha\) |
| \(B(A)\) (random) | \(a(b-1)\) | \(\sigma^2 + n \sigma^2_{B(A)}\) |
| Error | \(ab(n-1)\) | \(\sigma^2\) |
검정 분모: - \(A\): \(MS_{B(A)}\) - \(B(A)\): \(MS_E\)
4 EMS — 둘 다 random
\(A, B\) 모두 random effect:
| Source | EMS |
|---|---|
| \(A\) | \(\sigma^2 + n \sigma^2_{B(A)} + nb \sigma^2_A\) |
| \(B(A)\) | \(\sigma^2 + n \sigma^2_{B(A)}\) |
| Error | \(\sigma^2\) |
검정 분모는 동일.
5 분산 성분 추정
EMS 식에서 역으로 풀면:
\[ \hat\sigma^2 = MS_E \] \[ \hat\sigma^2_{B(A)} = (MS_{B(A)} - MS_E) / n \] \[ \hat\sigma^2_A = (MS_A - MS_{B(A)}) / (nb) \quad (A \text{ random 인 경우}) \]
(음수가 나오면 0 으로 set — variance component 의 음수 추정은 작은 표본의 통계적 이상이지 실제 음의 분산이 아님.)
6 ICC (Intraclass Correlation)
같은 \(B(A)\) level (예: 같은 학급) 의 두 관측의 상관:
\[ \text{ICC}_{\text{학급}} = \frac{\sigma^2_{B(A)}}{\sigma^2_A + \sigma^2_{B(A)} + \sigma^2} \]
(cluster level 의 ICC. 같은 학교 내 두 학생이라면 분자가 \(\sigma^2_A + \sigma^2_{B(A)}\) 에 가까워질 수도 있음 — 정의가 multiple.)
6.1 Multilevel ICC 의 두 정의
3-level nested:
| 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)\) | 같은 학급 두 학생 |
6.2 ICC 의 실무 의미
ICC 가 0.2 라는 것은 같은 학급 내 두 학생의 점수 분산이 학생 간 전체 분산의 20% 라는 것. 단일 OLS 는 데이터를 독립 가정하므로 표준오차가 잘못 계산된다 (실제보다 작게).
이는 design effect 로 표현되는 비효율성이고, 다단계 데이터에서 multilevel model 또는 cluster-robust SE 를 써야 하는 이유이다.
6.3 Design Effect
\[ \text{DEFF} = 1 + (m - 1) \cdot \text{ICC} \]
\(m\) = 평균 cluster 크기.
ICC = 0.1, \(m = 30\) → DEFF \(= 1 + 29 \times 0.1 = 3.9\). OLS 표준오차가 실제보다 \(\sqrt{3.9} \approx 2\) 배 작게 나옴.
\(p\) 값도 4 배 작음 (가짜 양성 4 배 증가).
7 가설 데이터 — 학교 내 학급 내 학생
\(a = 3\) 학교 (random), \(b = 4\) 학급/학교 (random), \(n = 5\) 학생/학급.
| Source | \(SS\) | \(df\) | \(MS\) | \(F\) |
|---|---|---|---|---|
| 학교 (\(A\)) | 1200 | 2 | 600 | \(600/100 = 6.0\) (\(MS_{B(A)}\)) |
| 학급 (학교) | 900 | 9 | 100 | \(100/20 = 5.0\) (\(MS_E\)) |
| Error (학생) | 960 | 48 | 20 | — |
분산 성분: - \(\hat\sigma^2 = 20\) - \(\hat\sigma^2_{B(A)} = (100-20)/5 = 16\) - \(\hat\sigma^2_A = (600-100)/(5 \times 4) = 25\)
ICC: - 학교 level: \(25 / (25 + 16 + 20) = 0.41\) - 학급 level: \((25 + 16) / (25 + 16 + 20) = 0.67\)
해석: 학교 간 차이가 큼 (전체 분산의 41%). 학급 간 차이도 강 (학교 + 학급 = 67%). 학생 간 차이는 33%.
이런 데이터는 multilevel model 이 필수 — 단일 OLS 는 표준오차 부정확.
8 깊은 nesting — 3+ 단계
학교 → 학급 → 학생 → 시점:
\[ Y_{ijkl} = \mu + \alpha_{\text{school}, l} + \beta_{\text{class}(l), k} + \gamma_{\text{student}(lk), j} + \varepsilon_{ijkl} \]
각 단계마다 분산 성분, ICC 정의 가능.
| Level | 분산 성분 | ICC (cumulative) |
|---|---|---|
| Level 4 (학교) | \(\sigma^2_4\) | \(\sigma^2_4 / \text{total}\) |
| Level 3 (학급) | \(\sigma^2_3\) | \((\sigma^2_4 + \sigma^2_3) / \text{total}\) |
| Level 2 (학생) | \(\sigma^2_2\) | \((\sigma^2_4 + \sigma^2_3 + \sigma^2_2) / \text{total}\) |
| Level 1 (시점, residual) | \(\sigma^2_1\) | — |
3+ 단계 nested 는 multilevel model 의 직접 표현.
9 ANOVA Approach 의 한계
균등 데이터에서 ANOVA EMS 가 정확. 그러나:
- 비균등 데이터: 학교마다 다른 학급 수, 학급마다 다른 학생 수. EMS 식 어긋남.
- 결측 처리: 한 학생 결측이라도 단계별 균등 깨짐.
- 공변량 통합 어려움: 각 level 마다 다른 covariate 추가가 ad hoc.
- Level-별 예측 변수: ANOVA 분해에 직접 통합 안 됨.
→ 일반 권장: ML/REML approach (G-MAX16-2).
10 Python 코드 — 3-Level Nested
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols, mixedlm
# 학교 within 학급 within 학생 데이터
np.random.seed(2026)
n_schools = 3
n_classes = 4
n_students = 5
records = []
school_eff = np.random.normal(0, 5, n_schools)
class_eff = {(s, c): np.random.normal(0, 4) for s in range(n_schools) for c in range(n_classes)}
for s in range(n_schools):
for c in range(n_classes):
for st in range(n_students):
y = 100 + school_eff[s] + class_eff[(s, c)] + np.random.normal(0, np.sqrt(20))
records.append({"school": s, "class": f"{s}_{c}", "student": st, "Y": y})
data = pd.DataFrame(records)
# Method 1: aov-style with explicit nesting
nested_model = ols("Y ~ C(school) + C(school):C(class)", data=data).fit()
print("=== Nested ANOVA ===")
print(sm.stats.anova_lm(nested_model, typ=2).round(3))
# Method 2: mixed model with REML
md = mixedlm("Y ~ 1", data=data, groups=data["school"],
vc_formula={"class": "0 + C(class)"}).fit()
print("\n=== Mixed Model (REML) ===")
print(md.summary())
# 분산 성분 추정 (ANOVA-based)
anova = sm.stats.anova_lm(nested_model, typ=2)
ms_school = anova.loc["C(school)", "mean_sq"]
ms_class = anova.loc["C(school):C(class)", "mean_sq"]
ms_e = anova.loc["Residual", "mean_sq"]
n_per_class = n_students
n_per_school = n_classes * n_students
sigma_e = ms_e
sigma_class = (ms_class - ms_e) / n_per_class
sigma_school = (ms_school - ms_class) / n_per_school
print(f"\n=== Variance Components (ANOVA-based) ===")
print(f" σ²_e (학생) = {sigma_e:.3f}")
print(f" σ²_class = {sigma_class:.3f}")
print(f" σ²_school = {sigma_school:.3f}")
# ICC 계산
total = sigma_school + sigma_class + sigma_e
print(f"\n=== ICC ===")
print(f" ICC at school = {sigma_school / total:.3f}")
print(f" ICC at class = {(sigma_school + sigma_class) / total:.3f}")11 Multilevel Model 으로의 자연스러운 확장
ANOVA-based 추정의 한계: - 비균등 데이터에 부정확. - 결측 어려움. - 공변량 ad hoc.
Multilevel model (mixed effects) 가 ANOVA nested 의 일반화 + 모든 한계 해결:
\[ Y_{ijk} = \mathbf{x}_{ijk}^T \boldsymbol{\beta} + u_{0,k(j)} + u_{0,j} + \varepsilon_{ijk} \]
각 level 마다 random intercept (또는 slope) 명시적 모형.
R lme4, Python statsmodels.mixedlm 자동 처리.
ANOVA nested 는 multilevel 의 special case (균등 + 결측 없음 + 단순 모형). 실무 표준은 multilevel.
12 가정과 한계
- Random effect 의 정규성·균등: 위반 시 robust 또는 bootstrap.
- Nesting 분류의 정확성: cross-classified 와 혼동하지 않을 것.
- 분산 성분 음수 추정: ANOVA-based 의 단점. REML 권장.
- Multilevel 확장: 3+ 단계는 mixed model 자동 처리 (lme4, mixedlm).
- Cluster 수의 충분: random effect robust 추정에 \(\ge 20\sim30\) cluster.
13 응용
| 분야 | Level 3 | Level 2 | Level 1 |
|---|---|---|---|
| 교육 | 학교 | 학급 | 학생 |
| 임상 다센터 | 센터 | 환자 | 시점 |
| 메타분석 | 메타분석 | 연구 | 환자 |
| 농학 다농장 | 지역 | 농장 | plot |
| IT longitudinal | 세그먼트 | 사용자 | 시점 |
각 level 마다 적절한 covariate 추가 가능 (multilevel 의 강점).
14 MAX Ch.10 시리즈 정리
G-MAX10-0 Random/Nested 개관
G-MAX10-1 Fixed vs Random + EMS
G-MAX10-2 Two-Way Mixed + Error Term Selection
G-MAX10-3 Nested Design + Variance Components ← 현재 글
│
▼
G-MAX11~12 (Within-Subjects), G-MAX15 (Multilevel — 통합)
15 관련 주제
선행 지식
후속 주제
- G-MAX11-0 — Within-Subjects Univariate
- G-MAX15-0 — Multilevel Models
- G-MAX16-0 — Hierarchical Mixed Nested
다른 카테고리 연결
16 더 읽을 거리
- Searle, S. R., Casella, G., McCulloch, C. E. (2006). “Variance Components.” Wiley.
- Snijders, T. A. B., Bosker, R. J. (2012). “Multilevel Analysis: An Introduction to Basic and Advanced Multilevel Modeling” (2nd ed). Sage.
- Raudenbush, S. W., Bryk, A. S. (2002). “Hierarchical Linear Models” (2nd ed). Sage.
- Pinheiro, J. C., Bates, D. M. (2000). “Mixed-Effects Models in S and S-PLUS.” Springer.