1 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 |
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 보고 권장
세 결과를 모두 보고:
- Multilevel REML (권장 default).
- Univariate ANOVA + GG ε.
- 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² 의 표준.