Two-Way Mixed Model 의 오차항 선택 — fixed × random 의 검정 절차

Maxwell Ch.10.2 Two-Way Mixed Model · Error Term Selection

fixed 요인과 random 요인이 함께 있는 mixed model 의 ANOVA 검정 절차를 정리한다. EMS 표 기반 분모 결정, restricted vs unrestricted parameterization 의 차이, 패키지 default 점검, Satterthwaite approximation, 실무 적용까지 단계적으로 다룬다. 다센터 임상시험·교육 multilevel 연구의 정통 분석 절차다.

Experimentation
DOE
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: Two-Way Mixed Model

요인 \(A\) fixed (\(a\) levels), 요인 \(B\) random (\(b\) levels, \(\beta_k \sim N(0, \sigma^2_\beta)\)).

\[ Y_{ijk} = \mu + \alpha_j + \beta_k + (\alpha\beta)_{jk} + \varepsilon_{ijk} \]

\((\alpha\beta)_{jk}\) 의 처리:

  • Unrestricted: \((\alpha\beta)_{jk} \sim N(0, \sigma^2_{\alpha\beta})\) 모든 \(j, k\) 독립.
  • Restricted: \(\sum_j (\alpha\beta)_{jk} = 0\) (각 \(k\) 마다 합 0).

두 parameterization 은 EMS 가 약간 다름. 일반적으로 unrestricted 가 default (R lme4, SAS PROC MIXED).

2 EMS — Unrestricted (일반)

Source EMS
\(A\) (fixed) \(\sigma^2 + n \sigma^2_{\alpha\beta} + nb \theta_\alpha\)
\(B\) (random) \(\sigma^2 + n \sigma^2_{\alpha\beta} + na \sigma^2_\beta\)
\(A \times B\) \(\sigma^2 + n \sigma^2_{\alpha\beta}\)
Error \(\sigma^2\)

검정 분모: - \(A\): \(MS_{AB}\) - \(B\): \(MS_{AB}\) - \(A \times B\): \(MS_E\)

3 EMS — Restricted

Source EMS
\(A\) (fixed) \(\sigma^2 + n \sigma^2_{\alpha\beta} + nb \theta_\alpha\)
\(B\) (random) \(\sigma^2 + na \sigma^2_\beta\) ← 차이
\(A \times B\) \(\sigma^2 + n \sigma^2_{\alpha\beta}\)
Error \(\sigma^2\)

검정 분모: - \(A\): \(MS_{AB}\) - \(B\): \(MS_E\) ← 차이 (unrestricted 에서는 \(MS_{AB}\)) - \(A \times B\): \(MS_E\)

함정: SAS vs SPSS vs R 의 default
  • SAS PROC GLM RANDOM 옵션: unrestricted (Hocking, 1973).
  • SAS PROC MIXED, R lme4::lmer: restricted (Searle, 1971) — 표준 mixed model.
  • SPSS GLM RANDOM: unrestricted.

분석 결과를 보고하거나 재현할 때 어느 parameterization 인지 명시. \(B\) 의 검정 분모가 다른 두 패키지가 충돌하면 이 문제가 원인.

4 가설 데이터 — 임상센터 효과

처치 (\(A\), fixed: 약 A, B, 위약) × 임상센터 (\(B\), random: 5 센터), \(n=4\) 환자/센터/처치.

가설 ANOVA:

Source \(SS\) \(df\) \(MS\) EMS 분모 \(F\)
\(A\) 600 2 300 \(\sigma^2 + 4\sigma^2_{AB} + 20\theta_\alpha\) \(MS_{AB}\) \(300/40 = 7.5\)
\(B\) 200 4 50 unrestricted: \(\sigma^2 + 4\sigma^2_{AB} + 12\sigma^2_\beta\) \(MS_{AB}\) \(50/40 = 1.25\)
restricted: \(\sigma^2 + 12\sigma^2_\beta\) \(MS_E\) \(50/15 = 3.3\)
\(A \times B\) 320 8 40 \(\sigma^2 + 4\sigma^2_{AB}\) \(MS_E\) \(40/15 = 2.7\)
Error 675 45 15 \(\sigma^2\)

\(B\) 의 결과가 두 parameterization 에서 다름. 처치 (\(A\)) 와 상호작용 결과는 동일.

5 분모가 없을 때 — Satterthwaite Approximation

세 요인 mixed (예: \(A\) fixed, \(B, C\) random) 에서는 어느 effect 의 분모가 다른 source 의 MS 와 정확히 매칭하지 않을 수 있다.

해결: Satterthwaite approximation — 여러 MS 의 선형 결합을 분모로 만들고 자유도를 근사.

5.1 일반 형태

분모로 \(a_1 MS_1 + a_2 MS_2 - a_3 MS_3\) 같은 선형 결합이 필요할 때:

\[ F^* = \frac{MS_{\text{numerator}}}{a_1 MS_1 + a_2 MS_2 - a_3 MS_3} \]

자유도: \[ df_{\text{denom}} = \frac{(a_1 MS_1 + a_2 MS_2 - a_3 MS_3)^2}{(a_1 MS_1)^2 / df_1 + (a_2 MS_2)^2 / df_2 + (a_3 MS_3)^2 / df_3} \]

(Welch-Satterthwaite 공식의 일반화.)

이 approximation 의 정확도는: - 분모의 항이 적을수록 정확. - 각 항의 자유도가 클수록 정확.

REML 기반 mixed model (R lme4, SAS PROC MIXED) 이 자동 처리.

6 분산 성분 추정 — REML 우위

직관: 작은 표본에서 REML 이 ANOVA-based 보다 정확

ANOVA-based 추정 (EMS 식의 차이) 는 균등 데이터에서 정확. 비균등 또는 결측 시 부정확.

REML 은 likelihood 기반 — 비균등·결측을 자동 처리. 분산 성분 비편향.

권장: - 균등 데이터 + 큰 표본 → ANOVA-based OK. - 일반 → REML default.

6.1 분산 성분의 추정 절차

  1. ANOVA 표 계산.
  2. EMS 식에 따라 분산 성분 산출: \[ \hat\sigma^2 = MS_E \] \[ \hat\sigma^2_{\alpha\beta} = (MS_{AB} - MS_E) / n \] \[ \hat\sigma^2_\beta = (MS_B - MS_{AB}) / na \quad (\text{unrestricted}) \]
  3. 음수 추정 시 0 으로 truncate.

REML 자동 처리 (R lme4, statsmodels mixedlm).

7 검정력 — Mixed Model 의 특이성

함정: Mixed Model 의 \(A\) 검정력 약

Two-way mixed 의 \(A\) (fixed) 검정 분모는 \(MS_{AB}\) — 자유도 \((a-1)(b-1)\) 만.

\(b\) 가 작으면 (예: 5 센터 → 자유도 8) \(A\) 검정력 매우 약.

해결: - \(b\) ↑: 더 많은 random level 추가 (더 많은 센터). - \(a\) ↑: 자유도 ↑.

이는 multilevel 의 일반 원리: random factor 의 cluster 수가 fixed effect 검정력의 핵심.

7.1 표본 크기 고려

  • \(b = 5\), \(n = 4\): \(A\) 검정 자유도 8. 검정력 약.
  • \(b = 10\), \(n = 4\): 자유도 18. 중간.
  • \(b = 20\), \(n = 4\): 자유도 38. 좋음.

multilevel 연구 설계의 핵심: cluster 수 (\(b\)) 를 충분히 (≥ 20~30) 확보.

8 Python 코드 — Mixed Model

import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols, mixedlm

np.random.seed(2026)
n = 4
A_levels = ["DrugA", "DrugB", "Placebo"]
B_levels = list(range(5))

records = []
A_eff = {"DrugA": -10, "DrugB": -5, "Placebo": 0}
B_eff = np.random.normal(0, np.sqrt(3), 5)
AB_eff = np.random.normal(0, np.sqrt(6), (3, 5))

for ai, a in enumerate(A_levels):
    for bi, b in enumerate(B_levels):
        for _ in range(n):
            y = (100 + A_eff[a] + B_eff[bi] + AB_eff[ai, bi]
                 + np.random.normal(0, np.sqrt(15)))
            records.append({"A": a, "B": b, "Y": y})
data = pd.DataFrame(records)

# Standard fixed-effects ANOVA (incorrect for mixed)
fixed_model = ols("Y ~ C(A) * C(B)", data=data).fit()
anova = sm.stats.anova_lm(fixed_model, typ=2)
ms_a = anova.loc["C(A)", "mean_sq"]
ms_b = anova.loc["C(B)", "mean_sq"]
ms_ab = anova.loc["C(A):C(B)", "mean_sq"]
ms_e = anova.loc["Residual", "mean_sq"]

# Mixed model 분모 적용
from scipy import stats as sps
print("=== Mixed Model F tests (manual) ===")

# A: F = MS_A / MS_AB, df=(2, 8)
F_A = ms_a / ms_ab
p_A = 1 - sps.f.cdf(F_A, anova.loc["C(A)", "df"], anova.loc["C(A):C(B)", "df"])
print(f"A: F = {F_A:.2f}, df = ({anova.loc['C(A)','df']:.0f}, "
      f"{anova.loc['C(A):C(B)','df']:.0f}), p = {p_A:.4f}")

# B (unrestricted): F = MS_B / MS_AB
F_B_unrest = ms_b / ms_ab
p_B_unrest = 1 - sps.f.cdf(F_B_unrest, anova.loc["C(B)", "df"], anova.loc["C(A):C(B)", "df"])
print(f"B (unrestricted): F = {F_B_unrest:.2f}, p = {p_B_unrest:.4f}")

# B (restricted): F = MS_B / MS_E
F_B_rest = ms_b / ms_e
p_B_rest = 1 - sps.f.cdf(F_B_rest, anova.loc["C(B)", "df"], anova.loc["Residual", "df"])
print(f"B (restricted):   F = {F_B_rest:.2f}, p = {p_B_rest:.4f}")

# A:B: F = MS_AB / MS_E
F_AB = ms_ab / ms_e
p_AB = 1 - sps.f.cdf(F_AB, anova.loc["C(A):C(B)", "df"], anova.loc["Residual", "df"])
print(f"A:B: F = {F_AB:.2f}, p = {p_AB:.4f}")

# REML via mixedlm
print("\n=== REML mixed model (statsmodels) ===")
md = mixedlm("Y ~ C(A)", data=data, groups=data["B"], re_formula="~C(A)").fit()
print(md.summary())

# 분산 성분 추정
print("\n=== Variance components ===")
print(f"  σ²       = {md.scale:.3f}")
print(f"  σ²_β     = {md.cov_re.iloc[0, 0]:.3f}")

9 Random Slope Mixed

Mixed 의 일반화: random slope (각 random group 마다 다른 회귀 계수).

md = mixedlm("Y ~ time", data=data, groups=data["subject"],
             re_formula="~time").fit()  # random intercept + slope

이는 multilevel growth curve 의 정수 (G-MAX15-3).

10 실무 절차 — Mixed Model 분석

Step 1: 데이터 구조 파악
  - 어느 요인이 fixed? Random?
  - 균등 vs 비균등?
  - 결측?

Step 2: Mixed model fit (REML default)
  - R: lmer(Y ~ A + (1 | B), data = ...)
  - Python: mixedlm("Y ~ A", data, groups="B").fit()

Step 3: Fixed effect 검정
  - REML model 에서 Wald 또는 LRT (ML 로 refit 필요).

Step 4: Random effect 검정
  - LRT for σ² > 0 (boundary issue).
  - simulation-based 검정 (R `RLRsim`).

Step 5: 분산 성분 보고
  - 각 random source 의 σ², ICC.

Step 6: Random effect 의 BLUP (개인별 추정)
  - random_effects attribute.

11 가정과 한계

11.1 Random Effect 의 정규성

작은 \(b\) (\(\le 5\)) 에서 신뢰구간 약. 큰 \(b\) (\(\ge 20\)) 에서 robust.

11.2 Restricted vs Unrestricted

패키지 default 점검 필수. 결과 보고 시 명시.

11.3 균등 데이터

ANOVA 표 기반 검정의 전제. 비균등은 REML.

11.4 상호작용의 random 처리

fixed × random 의 상호작용은 자동 random. 일부 패키지에서는 명시 필요.

12 응용

12.1 1. 다센터 임상시험

처치 (fixed) × 센터 (random). 표준 분석.

12.2 2. 교육 다학교 연구

교수법 (fixed) × 학교 (random). 학교 random sample 의 일반화.

12.3 3. 농학 다농장 비교

비료 (fixed) × 농장 (random).

12.4 4. ML 다도메인 평가

architecture (fixed) × dataset (random). cross-domain 일반화 평가.

13 ML 매핑

매핑: 다도메인 ML 의 mixed model

ML 모델을 여러 데이터셋에 평가:

Fixed: model architecture (3 가지)
Random: dataset (random sample of domains)

각 dataset 마다 다른 baseline 정확도 → random effect.

분석: \[ \text{Accuracy}_{ij} = \mu + \alpha_{\text{model}, j} + \beta_{\text{dataset}, i} + \varepsilon \]

처치 효과 (어느 모델이 좋은가) 검정 분모: \(MS_{\text{model} \times \text{dataset}}\).

이는 ML 의 cross-domain 일반화 평가의 통계적 형식. dataset 가 많을수록 결론 일반화 ↑.

14 본 챕터의 다음 단계

G-MAX10-0  Random/Nested 개관
G-MAX10-1  Fixed vs Random + EMS
G-MAX10-2  Two-way Mixed + Error Term  ← 현재 글
    │
    ▼
G-MAX10-3  Nested Design + Variance Components

15 관련 주제

선행 지식

후속 주제

다른 카테고리 연결

16 더 읽을 거리

  • Searle, S. R., Casella, G., McCulloch, C. E. (2006). “Variance Components.” Wiley.
  • Hocking, R. R. (1973). “A discussion of the two-way mixed model.” American Statistician 27(4): 148-152 — restricted vs unrestricted.
  • 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).
  • Maxwell, S. E., Delaney, H. D. (2004). “Designing Experiments and Analyzing Data: A Model Comparison Perspective” (2nd ed). Lawrence Erlbaum.

Subscribe

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