ML Approach 와 불균형 nested 데이터

Maxwell Ch.16.2 ML Approach · Unbalanced Design

Nested 데이터가 불균형 (학교마다 다른 학급 수, 학급마다 다른 학생 수) 인 경우의 ML/REML 추정 절차. ANOVA approach 가 부정확한 상황에서 mixed model 의 우위, 결측 데이터 자동 처리, level-별 covariate 통합, 음의 분산 추정 처리, 수렴 문제까지 정리한다.

Experimentation
DOE
저자

Kwangmin Kim

공개

2026년 05월 08일

1 불균형 데이터의 어려움

ANOVA EMS 는 균등 데이터에서만 정확한 분해. 불균형이면 EMS 의 계수가 데이터 의존적이고, 검정 분모가 명확히 정의되지 않음.

함정: 불균형에서 ANOVA 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 의 결측 처리

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 에 가까우면 음의 추정 가능. 옵션:

  1. 0 으로 truncate: 단순.
  2. 모형 단순화: random slope 제거 등.
  3. Bayesian (prior 유도).

R lme4 는 자동 0 truncate. SAS PROC MIXED 는 옵션 선택.

8 수렴 문제

함정: 작은 cluster 수에서 수렴 어려움

복잡한 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 의 불균형 cross-validation

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.

md = mixedlm("acc ~ C(model)", data, groups="dataset",
             vc_formula={"fold": "0 + C(fold)"}).fit()

각 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.

Subscribe

Enjoy this blog? Get notified of new posts by email: