1 정의 (재방문)
요인 \(A\) between-subjects (그룹), 요인 \(B\) within-subjects (시점). 각 그룹에 \(n\) 명, 각 피험자가 \(b\) 시점 측정.
\[ Y_{ijk} = \mu + \alpha_j + \pi_{i(j)} + \beta_k + (\alpha\beta)_{jk} + (\beta\pi)_{ik(j)} + \varepsilon_{ijk} \]
- \(\alpha_j\): 그룹 (fixed).
- \(\pi_{i(j)} \sim N(0, \sigma^2_\pi)\): 그룹 \(j\) 안의 피험자 random.
- \(\beta_k\): 시점 (fixed).
- \((\alpha\beta)_{jk}\): 그룹 × 시점 (fixed).
- \((\beta\pi)_{ik(j)} \sim N(0, \sigma^2_{\beta\pi})\): 시점 × subject within group (random).
- \(\varepsilon\): residual.
농학 기원: 큰 plot 에 비료 (whole plot), 작은 sub-plot 에 종자 품종 (sub plot).
임상 응용: 처치 (between, group 무작위), 시점 (within, 같은 환자 여러 시점).
2 ANOVA 표
| Source | \(df\) | EMS | 검정 분모 |
|---|---|---|---|
| Between-subjects total | \(an-1\) | — | — |
| ┌ Group (\(A\)) | \(a-1\) | \(\sigma^2 + b\sigma^2_\pi + bn\theta_\alpha\) | Subject within group |
| └ Subject within group (\(\pi_{i(j)}\)) | \(a(n-1)\) | \(\sigma^2 + b\sigma^2_\pi\) | — |
| Within-subjects total | \(an(b-1)\) | — | — |
| ┌ Time (\(B\)) | \(b-1\) | \(\sigma^2 + an\theta_\beta\) | \(B \times S\) within group |
| │ \(A \times B\) | \((a-1)(b-1)\) | \(\sigma^2 + n\theta_{\alpha\beta}\) | \(B \times S\) within group |
| └ \(B \times S\) within group | \(a(b-1)(n-1)\) | \(\sigma^2\) | — |
핵심: between 효과 (Group) 의 분모와 within 효과 (Time, A×B) 의 분모가 다르다.
3 검정력 비교
Between 효과 (\(A\), Group): - 분모 자유도 작음 (\(a(n-1)\)). - 분모 분산 큼 (\(\sigma^2 + b \sigma^2_\pi\)). - 검정력 일반 between 보다 약간 ↓.
Within 효과 (\(B\), \(A \times B\)): - 분모 자유도 큼 (\(a(b-1)(n-1)\)). - 분모 분산 작음 (\(\sigma^2\)). - 검정력 일반 within 만큼 강함.
→ 가장 관심 있는 효과를 within 에 배치 권장.
농학에서는 비료 (whole) × 품종 (sub) 일 때 비료 효과보다 품종 효과의 검정력이 높음. 연구자가 품종 효과에 더 관심이면 적절. 비료 효과에 더 관심이면 다른 설계 (RBD) 가 나음.
임상 RCT 에서는 처치 (between) × 시점 (within) — 시점에 따른 처치 차이 (\(A \times B\)) 가 가장 중요한 효과. within 분모를 사용해 검정력 ↑.
split-plot 데이터를 일반 factorial ANOVA 로 분석하면 모든 효과의 분모가 sub-plot error (\(MS_E\)) 가 되어 \(A\) 의 검정이 inflated (분모가 너무 작음 → false positive).
→ 반드시 split-plot 모형 명시 또는 mixed model 로 적절한 random effect 지정.
R: aov(Y ~ A * B + Error(subject_id/A)) 또는 lmer(Y ~ A * B + (1 | subject_id)). Python statsmodels: mixedlm("Y ~ C(A) * C(B)", data, groups=subject_id).fit().
4 임상시험 RCT 분석
4.1 표준 lens
처치 (between) × 시점 (within) 의 split-plot. 임상시험·심리실험·디지털 longitudinal A/B 의 표준 분석.
4.2 핵심 가설
| 가설 | 검정 |
|---|---|
| 처치 효과 차이 | \(F_A\) (between) |
| 시간에 따른 변화 | \(F_B\) (within) |
| 처치 × 시간 = 차별 변화 | \(F_{A \times B}\) (within) |
가장 관심: \(A \times B\) — “처치군이 대조군에 비해 시간이 지날수록 다르게 변화하는가?”. 이것이 진짜 처치 효과의 직접 증거.
4.3 Pre/Post (2 시점) 의 단순 사례
\(b = 2\). \(A \times B\) 검정은 group × time interaction = “그룹별 change score 의 차이”.
이는 ANCOVA 와 비교됨 (G-MAX9). RCT 에서는 ANCOVA 가 검정력 우위 (Lord’s paradox 상관 X).
5 가설 데이터 — 임상 RCT
처치 (Treatment / Control), \(n=15\) 명/그룹, 시점 (1주, 4주, 8주). SBP 측정.
| 1주 | 4주 | 8주 | |
|---|---|---|---|
| Treatment | 145 | 138 | 128 |
| Control | 144 | 142 | 140 |
처치 효과: 시간이 지날수록 차이 ↑. \(A \times B\) interaction 유의 예상.
ANOVA 표 (가상):
| Source | \(SS\) | \(df\) | \(MS\) | \(F\) | \(p\) |
|---|---|---|---|---|---|
| Group | 800 | 1 | 800 | \(800/100 = 8.0\) | 0.008 |
| Subject within group | 2800 | 28 | 100 | — | — |
| Time | 1200 | 2 | 600 | \(600/30 = 20.0\) | \(<0.0001\) |
| Group × Time | 600 | 2 | 300 | \(300/30 = 10.0\) | 0.0003 |
| Time × Subject within group | 1680 | 56 | 30 | — | — |
해석: - Group 효과 유의 — 평균적으로 처치군이 SBP 낮음. - Time 효과 매우 강함 — 시간이 지날수록 SBP 감소 (자연 회복 + 처치 효과 합쳐). - Group × Time 매우 유의 — 처치군이 시간에 따라 더 빠르게 감소.
6 Visualization
SBP
│
│ *(Control, 4주)
│ /
145│- *(Control, 1주)
│ \- /
│ \- / *(Control, 8주)
│ \ / /
│ \/_____/
│ *(Treatment, 1주)
│ |
│ |
│ *(Treatment, 4주)
│ \
│ \
│ *(Treatment, 8주)
│
└───────────────────── Time
1 4 8
두 곡선의 분기 (Group × Time interaction) 가 처치 효과의 직접 증거.
7 Python 코드
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import mixedlm
from statsmodels.stats.anova import AnovaRM
np.random.seed(2026)
n = 15
groups = ["Treatment", "Control"]
times = [1, 4, 8]
# 데이터 생성
cell_means = {
("Treatment", 1): 145, ("Treatment", 4): 138, ("Treatment", 8): 128,
("Control", 1): 144, ("Control", 4): 142, ("Control", 8): 140,
}
records = []
for grp in groups:
for subj in range(n):
pi = np.random.normal(0, 5)
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)
# Split-plot ANOVA (within = time)
aovrm = AnovaRM(data, "Y", "subject", within=["time"], between=["group"]).fit()
print("=== Split-Plot ANOVA ===")
print(aovrm.anova_table)
# Mixed model (recommended)
md = mixedlm("Y ~ C(group) * C(time)", data=data, groups=data["subject"]).fit()
print("\n=== Mixed Model ===")
print(md.summary().tables[1])8 Variant — Multiple Within Factors
Split-plot 의 일반화: 여러 within 요인 + 여러 between 요인.
예: 처치 (between) × 시점 (within) × 측정 위치 (within).
각 within 요인의 분모는 그 자신과 subject within group 의 상호작용.
multilevel model 로 자연스럽게 처리.
9 ANCOVA 와의 결합
split-plot + covariate (baseline measurement):
\[ Y_{ijk} = \mu + \alpha_j + \pi_{i(j)} + \beta_k + (\alpha\beta)_{jk} + \gamma X_{ij} + \varepsilon_{ijk} \]
baseline \(X\) 가 처치 (between) 의 우연 imbalance 를 보정 + 잔차 분산 ↓.
10 가정과 한계
- 그룹 등표본: 균등할 때 가장 단순.
- Sphericity: within 효과에 대한 sphericity. ε 조정 필요.
- 결측 시점: AnovaRM 은 listwise. multilevel 권장.
- Carryover: 시점이 양적 (시간) 이면 자연스러운 progression. 처치 변화 없으면 carryover 관심 X.
- Group × Time interaction 의 사전 가설: 처치 효과의 핵심.
11 표본 크기 산출
split-plot 의 \(A \times B\) interaction 검정력:
\[ n = \frac{(z_{\alpha/2} + z_\beta)^2}{f^2 \cdot a \cdot (1 - \rho)} \]
(근사 — 정확한 산출은 noncentral \(F\).)
| 효과 (\(f\)) | \(\rho = 0.5\), \(a=2\) | \(\rho = 0.7\), \(a=2\) |
|---|---|---|
| 0.10 | 100 | 60 |
| 0.25 | 16 | 10 |
| 0.40 | 7 | 4 |
(검정력 0.80, \(\alpha=0.05\), \(b=3\) 시점.)
12 응용
12.1 임상 RCT (가장 흔함)
처치 (between) × 시점 (within). 표준 분석.
12.2 발달 심리
연령 (within) × 환경 (between). 발달 trajectory 의 환경 영향.
12.3 농학
비료 (whole plot) × 품종 (sub-plot) × 시점 (within). 3 way split-plot.
12.4 산업 — 화학 공정
온도 (whole, batch 단위) × 압력 (sub, 같은 batch 내) × 시점.
12.5 IT longitudinal A/B
변종 (between) × 측정 시점 (within). 같은 사용자 그룹의 시점별 metric 추적.
13 결정 차트 — 분석 선택
데이터 구조 점검
↓
between + within 두 요인?
├── No → Single-factor analysis
└── Yes → split-plot
↓
결측 데이터 있음?
├── Yes → Mixed Model REML 무조건
└── No
↓
Sphericity (within) 만족?
├── Yes (Mauchly p > 0.05) → Univariate ANOVA OK
└── No → ε 조정 또는 Mixed Model
↓
관심 효과:
├── Group main → between F 검정 (분모 = subject within group)
├── Time main → within F 검정 (분모 = T × S within group)
└── G × T interaction → within F (분모 = T × S within group)
14 본 시리즈
G-MAX12-0 개관
G-MAX12-1 2×3 Within 의 7 효과
G-MAX12-2 Split-Plot Design ← 현재 글
G-MAX12-3 Sphericity Extensions
15 ML 매핑
처치 (between, 사용자 group) × 측정 시점 (within, 일별 metric):
- Group A: 100 사용자, 매일 retention 측정.
- Group B: 100 사용자, 매일 retention 측정.
분석: split-plot mixed model.
가장 관심: Group × Day interaction — “처치군의 retention 변화율이 대조군과 다른가?”
이것이 long-term retention 효과의 정수 — Kohavi 의 long-term effect 분석.
16 관련 주제
선행 지식
- G-MAX12-0~1 시리즈
- G-MAX9: ANCOVA — covariate 결합
후속 주제
- G-MAX12-3: Sphericity Extensions
- G-MON4-4 — Split-Plot (Montgomery lens)
- G-MAX15 — Multilevel Models
다른 카테고리 연결
17 더 읽을 거리
- Maxwell, S. E., Delaney, H. D. (2004). “Designing Experiments and Analyzing Data.”
- Hedeker, D., Gibbons, R. D. (2006). “Longitudinal Data Analysis.” Wiley.
- Fitzmaurice, G. M., Laird, N. M., Ware, J. H. (2011). “Applied Longitudinal Analysis” (2nd ed). Wiley.
- Federer, W. T., King, F. (2007). “Variations on Split Plot and Split Block Experiment Designs.” Wiley.