분할구 다변량 분석과 univariate vs multivariate 결정

Maxwell Ch.14.3 Split-Plot Multivariate · Univariate vs Multivariate

Split-plot design (between × within) 의 within 효과를 multivariate (MANOVA) 로 분석 하는 절차와 univariate ANOVA 접근의 통합 비교. 임상 longitudinal RCT 의 표준 분석 framework, multilevel model 과의 동치성, 결정 차트, 실무 적용까지 정리한다. 본 시리즈 의 마지막으로, multivariate within 분석의 실무 결정 가이드를 제공한다.

Experimentation
DOE
저자

Kwangmin Kim

공개

2026년 05월 08일

1 Split-Plot Multivariate 분석

정의: Split-Plot Multivariate

요인 \(A\) between (그룹), 요인 \(B\) within (시점). \(B\)\(b\) 시점을 multivariate response 로 보고:

\[ \mathbf{Y}_i = (Y_{i1}, Y_{i2}, \ldots, Y_{ib})^T \]

각 그룹의 \(\bar{\mathbf{Y}}_g\) 비교를 위해 MANOVA. sphericity 가정 회피.

2 검정 절차

2.1 Step 1 — D variable 변환

각 피험자의 \(b\) 시점 vector 를 \(b-1\) 차원 D variable 로:

\[ D_{ij} = \sum_k c_j^{(k)} Y_{ik}, \quad j = 1, \ldots, b-1 \]

직교 contrast (예: 시점이 양적이면 직교 다항식, 명목이면 Helmert).

2.2 Step 2 — 각 효과의 검정

효과 통계량 비고
\(A\) main (between) one-way ANOVA on \(\bar Y_i\) (across time 평균) 일반 between ANOVA
\(B\) main (within) one-sample \(T^2\) on \(\bar{\mathbf{D}}\) (across groups 합쳐) within multivariate
\(A \times B\) MANOVA on \(\mathbf{D}\) with group as predictor between × within

2.3 Step 3 — 통계량 선택

Wilks’ Λ 또는 Pillai’s V 권장 (G-MAX13-2 참조).

  • Wilks: 표준.
  • Pillai: robust (작은 표본에 안전).
  • Hotelling-Lawley: 큰 표본 OK.
  • Roy’s: 단일 dominant 차원 사전 가설 시.

3 Univariate vs Multivariate 결정 (재방문)

측면 Univariate (with ε) Multivariate (MANOVA)
Sphericity 필요 (또는 ε) 불필요
표본 요구 작아도 OK \(n > b\)
자유도 작음 (ε 조정 후) 자유도 적음 (단순 \(b-1\))
검정력 (구형성 OK) 높음 낮음
검정력 (구형성 위반) 떨어짐 유지
분포 가정 정규성, 등분산 다변량 정규성, covariance 균등
결측 처리 listwise 또는 multilevel listwise
직관: 두 접근의 trade-off (재정리)

Univariate 는 “모든 시점이 한 underlying 분산 구조 를 공유” 라고 가정해 자유도를 모두 합쳐 사용. 가정 만족 시 검정력 ↑.

Multivariate 는 “시점이 서로 다른 차원” 으로 보고 각자 별도 검정. 가정 적지만 자유도 손실.

구형성 이 두 접근의 분기점. ε 조정은 절충 — univariate 의 자유도를 줄여 sphericity 위반에 대응.

실무 권장: multilevel model (REML) — 두 접근의 통합 + 결측 처리.

4 결정 차트

Within-subjects 데이터 분석 시작
    ↓
표본 충분 (n > b)?
├── No → Univariate 만 (multivariate 불가능)
└── Yes
    ↓
Sphericity 검정 (Mauchly)
├── 구형성 OK (p > 0.05) → Univariate ANOVA (ε 조정 불필요)
└── 구형성 위반 (p < 0.05)
    ↓
    표본 크기 충분?
    ├── n > 2b → Multivariate (MANOVA / Hotelling)
    └── n ≤ 2b → Univariate + ε 조정 (multivariate 검정력 약)
    ↓
결측 데이터?
├── No → Multivariate 또는 Univariate
└── Yes → Multilevel (REML) 권장

5 실무 RCT 분석의 표준

가장 일반적 표준: Multilevel model with REML (G-MAX15).

5.1 R 코드

# R lme4
lmer(Y ~ group * time + (1 | subject), data = ...)

# 또는 nlme + AR(1)
lme(Y ~ group * time, random = ~1 | subject,
    correlation = corAR1(form = ~time | subject), data = ...)

# Unstructured covariance (multivariate 와 동치)
lme(Y ~ group * time, random = ~1 | subject,
    correlation = corSymm(form = ~1 | subject), weights = varIdent(form = ~1 | time))

5.2 장점

  • 결측 데이터 자동 처리 (listwise 손실 ↓).
  • 공분산 구조 자유 (CS, AR(1), UN, …).
  • AIC/BIC 로 모형 비교.
  • 시점 random slope 가능 (개인별 trajectory).
  • Cross-classified 또는 다층 nested 확장 가능.

5.3 단점

  • 추정 수렴 문제 (작은 표본).
  • 결과 해석이 복잡 (random effect 분산 등).
  • LRT 에서 fixed effect 비교는 ML 필요.

6 가설 데이터 — 임상 RCT

6.1 데이터 구조

처치 (Treatment / Control) × 시점 (1주, 4주, 8주, 12주). \(n = 20\) 명/그룹. 응답 = SBP.

6.2 가상 평균

1주 4주 8주 12주
Treatment 145 138 130 125
Control 144 142 140 138

처치군은 점차 강한 SBP 강하. 대조군은 거의 변동 없음. 효과가 시간에 따라 ↑.

6.3 분석 결과 비교 (가상)

검정 Univariate (GG) Multivariate (Wilks) Multilevel (REML)
Group F(1,38) = 5.5, p = .024 β = -2.5, SE = 1.1, p = .03
Time F(2.4, 91) = 22.0, p < .001 Λ = 0.55, F(3, 36) = 9.8, p < .001 linear: β = -1.5, p < .001
G × T F(2.4, 91) = 8.5, p < .001 Λ = 0.62, F(3, 36) = 7.2, p < .001 β = 0.8, SE = 0.2, p < .001

세 분석 모두 동일한 결론. 결측 처리 효율로 multilevel 권장.

6.4 시각화

SBP
 │
 │  *(Control, 4주)
 │ /
145│-       *(Control, 1주)
 │  \-     /
 │   \-   /     *(Control, 12주)
 │    \  /     /
 │     \/_____/
 │     *(Treatment, 1주)
 │     |
 │     |
 │     *(Treatment, 4주)
 │      \
 │       \   *(Treatment, 8주)
 │        \  /
 │         \/
 │         *(Treatment, 12주)
 └─────────────────────  Time
   1   4   8   12

두 곡선의 분기 (Group × Time interaction) 가 처치 효과의 직접 증거.

7 Python 코드 — Split-Plot Multivariate

import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import mixedlm
from statsmodels.multivariate.manova import MANOVA
from scipy import stats

np.random.seed(2026)
n = 20
groups = ["Treatment", "Control"]
times = [1, 4, 8, 12]
cell_means = {
    ("Treatment", 1): 145, ("Treatment", 4): 138,
    ("Treatment", 8): 130, ("Treatment", 12): 125,
    ("Control",   1): 144, ("Control",   4): 142,
    ("Control",   8): 140, ("Control",   12): 138
}

records = []
for grp in groups:
    for subj in range(n):
        pi = np.random.normal(0, 6)
        for t in times:
            y = cell_means[(grp, t)] + pi + np.random.normal(0, 4)
            records.append({"group": grp, "subject": f"{grp}_{subj}",
                           "time": t, "Y": y})

data = pd.DataFrame(records)

# 1) Multilevel model (recommended) — random intercept
md = mixedlm("Y ~ C(group) * time", data=data, groups=data["subject"]).fit()
print("=== Multilevel Model (Random Intercept) ===")
print(md.summary().tables[1])

# 2) Random intercept + slope (개인별 변화율 차이)
md_slope = mixedlm("Y ~ C(group) * time", data=data,
                   groups=data["subject"], re_formula="~time").fit()
print("\n=== Multilevel Model (Random Slope) ===")
print(md_slope.summary().tables[1])
print(f"AIC (intercept only): {md.aic:.1f}")
print(f"AIC (intercept + slope): {md_slope.aic:.1f}")

# 3) MANOVA (multivariate within-within)
wide = data.pivot_table(index=["subject", "group"], columns="time",
                        values="Y").reset_index()
wide.columns = ["subject", "group"] + [f"t{c}" for c in wide.columns[2:]]
manova = MANOVA.from_formula("t1 + t4 + t8 + t12 ~ group", data=wide)
print("\n=== MANOVA (Wilks Λ) ===")
print(manova.mv_test())

# 4) Univariate ANOVA + GG correction (수동)
from statsmodels.stats.anova import AnovaRM
aovrm = AnovaRM(data, "Y", "subject", within=["time"], between=["group"]).fit()
print("\n=== Univariate Split-Plot ANOVA ===")
print(aovrm.anova_table)

8 Variant — Multiple Within Factors

Split-plot 의 일반화: 여러 within 요인 + 여러 between 요인.

예: 처치 (between) × 시점 (within) × 측정 위치 (within).

각 within 요인의 분모는 그 자신과 subject within group 의 상호작용. multivariate 분석 시 각 within 효과 별도 D variable.

9 가정과 한계

9.1 Split-Plot Multivariate 의 가정

  • 그룹 등표본: 균등할 때 가장 단순.
  • 그룹 간 covariance 균등 (Box’s M test).
  • 결측 시점: AnovaRM/MANOVA 는 listwise. multilevel 권장.
  • 다변량 정규성: 큰 표본 robust.

9.2 작은 표본의 한계

\(n < b\) 그룹 당 → multivariate 불가능 (singular covariance matrix). univariate 만 가능.

9.3 Carryover (within crossover)

within crossover 의 carryover 는 sphericity 위반의 한 원인. counterbalancing 또는 washout 으로 통제.

10 Maxwell Ch.13~14 시리즈 정리

G-MAX13-0~3  Within-Subjects Multivariate (단일 within)
    │
    ▼
G-MAX14-0  Higher-Order Within Multivariate 개관
G-MAX14-1  2×2 Within D Variable Formation
G-MAX14-2  a×b Design Extension
G-MAX14-3  Split-Plot Multivariate + Decision  ← 현재 글 (Ch.14 마지막)
    │
    ▼
G-MAX15  Multilevel Models — 통합 framework
G-MAX16  Hierarchical Mixed Nested

11 통합 권장 — 실무 결정 가이드

결정 가이드 — 어느 분석을 쓸까

가장 일반적:

1. 결측 데이터 있음? → Multilevel (REML) 무조건.
2. 결측 없고 시점 양적? → Multilevel + 시간 slope.
3. 결측 없고 시점 명목? → MANOVA 또는 Multilevel.
4. 작은 표본 (n < 2b)? → Univariate + ε 조정.
5. 사전 가설 명확? → Trend analysis (G-MAX6).

기본 default: Multilevel REML. R lme4::lmer, Python statsmodels.mixedlm.

ANOVA 시각: 학술 출판 또는 표준 보고가 ANOVA 선호하면 univariate (with GG) 도 함께 보고. 두 결과가 일치하면 안정적.

Multivariate 단독 사용: 결측 없는 균등 데이터의 학술 reproduction. 또는 sphericity 극심 위반 + 큰 \(n\).

12 응용 사례

12.1 1. 임상 RCT (가장 흔함)

처치군 (between) × 시점 (within). 자세한 절차는 G-MAX12-2 + 본 챕터.

12.2 2. 발달 심리학

연령 (within, 양적) × 환경 (between). 발달 trajectory 의 환경 영향.

12.3 3. 운동학 — Crossover

처치 (within) × 운동 강도 (within). 같은 사람이 모든 처치·강도 조합.

12.4 4. ML longitudinal

같은 모델의 epoch (within) × architecture (between). 학습 curve 의 architecture 영향.

13 보고 권장

세 결과를 모두 보고:

  1. Multilevel REML (권장 default).
  2. Univariate ANOVA + GG ε.
  3. Multivariate (Wilks Λ) (큰 표본 시).

세 결과가 일치하면 결론 안정. 다르면 sphericity 위반 정도와 표본 크기 검토.

14 효과 크기

각 효과의 효과 크기 (multilevel):

  • Cohen’s \(f^2 = R^2_{\text{added}} / (1 - R^2_{\text{model}})\).
  • Marginal \(R^2\): fixed effects 의 설명량.
  • Conditional \(R^2\): fixed + random effects 의 설명량.

R MuMIn::r.squaredGLMM, Python 수동 계산.

15 가정과 한계

  • 결측 메커니즘: MAR 가정. MNAR 시 sensitivity analysis.
  • 다변량 정규성: 큰 표본 robust.
  • 그룹 간 covariance 균등 (split-plot multivariate). Box’s M.
  • 수렴 문제: 복잡 random structure 에서 multilevel 부적합.
  • Sample size: multivariate 가 \(n > b\) 요구.

16 관련 주제

선행 지식

후속 주제

  • G-MAX15 — Multilevel Models (통합)
  • G-MAX16 — Hierarchical Nested

다른 카테고리 연결

17 더 읽을 거리

  • Maxwell, S. E., Delaney, H. D. (2004). “Designing Experiments and Analyzing Data: A Model Comparison Perspective” (2nd ed). Lawrence Erlbaum.
  • Hedeker, D., Gibbons, R. D. (2006). “Longitudinal Data Analysis.” Wiley — 임상 longitudinal 의 표준.
  • Pinheiro, J. C., Bates, D. M. (2000). “Mixed-Effects Models in S and S-PLUS.” Springer.
  • Fitzmaurice, G. M., Laird, N. M., Ware, J. H. (2011). “Applied Longitudinal Analysis” (2nd ed). Wiley — 의학 longitudinal 의 종합.
  • Demidenko, E. (2013). “Mixed Models: Theory and Applications with R” (2nd ed). Wiley.
  • Nakagawa, S., Schielzeth, H. (2013). “A general and simple method for obtaining R² from generalized linear mixed-effects models.” Methods in Ecology and Evolution 4(2): 133-142 — multilevel R² 의 표준.

Subscribe

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