고차 within 의 다변량 분석 개관 — 다요인의 sphericity-free 처리

Maxwell Ch.14 Higher-Order Within Multivariate Overview

여러 within 요인의 ANOVA 를 multivariate 접근으로 분석하는 lens 를 정리한다. D variable 의 multi-dimensional 구성, 각 효과별 multivariate 검정, sphericity 가정의 완전 회피, split-plot 다변량의 응용까지 다룬다. 임상 longitudinal 에서 시점이 많고 공분산 구조가 복잡할 때 univariate ANOVA + ε 조정의 한계를 multivariate (MANOVA) 가 어떻게 보완하는지 단계적으로 설명한다.

Experimentation
DOE
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: Higher-Order Within Multivariate

여러 within 요인의 ANOVA 를 multivariate 접근으로 분석. 각 요인의 main 과 interaction 마다 별도의 multivariate 검정을 수행.

\(a \times b\) within 설계의 분석:

  • \(A\) main: \(a-1\) 차원 D variable (across \(b\) levels 평균) → one-sample \(T^2\).
  • \(B\) main: \(b-1\) 차원 D variable (across \(a\) levels 평균) → one-sample \(T^2\).
  • \(A \times B\): \((a-1)(b-1)\) 차원 D variable (interaction contrast) → one-sample \(T^2\).

각 효과의 검정 분모는 자기 D variable 의 covariance matrix (Hotelling 의 정리).

2 왜 multivariate 인가 (재방문)

2.1 Sphericity 의 함정

univariate within ANOVA + ε 조정 (G-MAX11-3) 은 작동하지만: 1. ε 조정은 sphericity 위반 정도에 의존 — 데이터에 따라 보수적. 2. ε 추정의 자유도 의존성 — 작은 표본에서 부정확. 3. 다요인 within 에서는 각 효과마다 별도 ε.

multivariate 는 sphericity 가정 자체를 회피. 분석이 깔끔.

2.2 검정력 비교

상황 Univariate (with ε) Multivariate
Sphericity 만족, 큰 \(n\) 약간 우위
Sphericity 위반, 큰 \(n\) 약 (ε 조정으로 힘듬) 우위
Sphericity 위반, 작은 \(n\) 약 (자유도 부족)
일반 권장 \(n < 2a\) \(n > 2a\)
직관: 자유도 vs 가정 trade-off

univariate 는 모든 시점 데이터를 한 분산 모형에 합쳐 자유도를 최대화 — sphericity 만족 시 가장 강력. 위반 시 ε 조정으로 자유도 줄어들고 검정력 ↓.

multivariate 는 시점을 별도 차원으로 보고 각자 covariance 추정 — 자유도 적지만 가정 없음. 표본이 충분하면 (n > a) 가정 자유의 이득이 자유도 손실 압도.

이는 통계의 보편적 trade-off: 모형 복잡도 (가정 적음) ↔︎ 자유도 손실. 다요인 within 에서는 multivariate 가 일반적으로 안전.

3 D Variable 의 multi-dimensional 형성

3.1 \(A\) main 의 D variable

각 피험자 \(i\) 에 대해 \(A\) levels 의 차이 (across \(B\) levels 평균):

\[ \bar Y_{ij}^{(A)} = \frac{1}{b} \sum_{k=1}^{b} Y_{ijk}, \quad j = 1, \ldots, a \]

D variable (직교 contrast 적용 가능):

\[ D_{i,j}^{(A)} = \sum_{j' = 1}^{a} c_{j'}^{(j)} \bar Y_{i,j'}^{(A)}, \quad j = 1, \ldots, a-1 \]

여기서 \(c^{(j)}\) 는 직교 contrast (예: 직교 다항식 또는 BIB 패턴).

\(\mathbf{D}_i^{(A)} \in \mathbb{R}^{a-1}\).

3.2 \(B\) main 의 D variable

비슷하게 across \(A\) levels 평균: \[ \bar Y_{ik}^{(B)} = \frac{1}{a} \sum_{j=1}^{a} Y_{ijk}, \quad k = 1, \ldots, b \]

\[ D_{i,k}^{(B)} = \sum_{k'} c_{k'}^{(k)} \bar Y_{i,k'}^{(B)}, \quad k = 1, \ldots, b-1 \]

3.3 \(A \times B\) 의 D variable

직교 contrast 의 곱 (Kronecker product):

\[ D_{i,jk}^{(AB)} = \sum_{j', k'} c_{j'}^{(j)} c_{k'}^{(k)} Y_{i,j',k'} \]

\((a-1)(b-1)\) 차원.

각 차원이 (선형 × 선형, 선형 × 이차, …) 같은 직교 분해 단위.

3.4 중요한 성질 — D variable 의 직교성

\(A\) main 의 D 는 across \(B\) 평균이라 \(B\) 의 효과가 cancel. 마찬가지로 \(B\) main 의 D 는 \(A\) 의 효과가 cancel. \(A \times B\) 의 D 는 두 main effect 모두 cancel.

따라서 세 D variable 의 효과가 서로 독립 (orthogonal). 각 검정이 다른 효과에 영향받지 않는다.

4 검정 절차

각 효과마다 자기 D variable 로 Hotelling \(T^2\) (one-sample) 또는 MANOVA (between-groups 포함 시).

효과 D 차원 검정
\(A\) main \(a-1\) one-sample \(T^2\) on \(\mathbf{D}^{(A)}\)
\(B\) main \(b-1\) one-sample \(T^2\) on \(\mathbf{D}^{(B)}\)
\(A \times B\) \((a-1)(b-1)\) one-sample \(T^2\) on \(\mathbf{D}^{(AB)}\)

자유도 1 효과 (예: \(a=2\)\(A\)) 는 paired \(t\)-test 와 동치.

4.1 Hotelling \(T^2\)

\[ T^2 = n \, \bar{\mathbf{D}}^T \mathbf{S}_D^{-1} \bar{\mathbf{D}} \]

\(F\) 변환: \[ F = \frac{n - p}{p (n - 1)} T^2 \sim F(p, n-p) \]

\(p\) = D 차원.

4.2 Wilks Λ (MANOVA, 그룹 비교 시)

between-subjects 그룹 (예: 처치) × within (시점) 의 split-plot 다변량 (\(G\)-MAX14-3):

\[ \Lambda = \frac{|\mathbf{E}|}{|\mathbf{H} + \mathbf{E}|} \]

\(\mathbf{H}\) = hypothesis matrix (그룹 효과), \(\mathbf{E}\) = error matrix.

5 각 효과별 단계적 분석

5.1 Step 1 — Total \(T^2\) (omnibus)

모든 효과 (\(A\), \(B\), \(A\times B\)) 의 결합 \(T^2\). 자유도 \(a \cdot b - 1\).

유의면 follow-up 진행.

5.2 Step 2 — 각 main effect 검정

\(A\) main 의 \(T^2\) (\(a-1\) 차원), \(B\) main (\(b-1\) 차원).

각각 다른 D variable 로 검정.

5.3 Step 3 — Interaction 검정

\(A \times B\)\(T^2\) (\((a-1)(b-1)\) 차원).

유의면 simple interaction effect (각 level 에서 다른 요인의 효과) 분석으로 진행.

5.4 Step 4 — Univariate Follow-up (선택)

각 D 차원의 univariate paired \(t\)-test: - 직교 다항식 사용 시 — “선형 추세는 강함, 이차는 약함” 같은 구체 결론. - 명목 contrast 사용 시 — “level 1 vs level 2 는 다름, level 3 vs level 4 는 같음”.

multivariate 통합 검정 + univariate 차원별 검정의 결합 사용.

6 가정과 한계

6.1 Multivariate 정규성

각 D variable 의 다변량 정규.

검정: Mardia’s test, Henze-Zirkler test. 큰 표본에서 robust.

6.2 표본 충분

$n > $ 가장 큰 D 차원. 작은 표본 + 큰 차원 → covariance matrix 추정 부정확.

\(a, b\) \(A \times B\) 차원 권장 \(n\)
2, 3 2 \(\ge 10\)
3, 3 4 \(\ge 15\)
3, 4 6 \(\ge 20\)
4, 4 9 \(\ge 25\)

6.3 결측 데이터

multivariate 는 listwise — 한 시점 결측이면 그 피험자 전체 제거. 큰 손실.

대안: multilevel model (REML) 로 결측 자동 처리.

6.4 그룹 간 covariance 균등 (split-plot)

between-subjects 그룹 (G-MAX14-3) 분석 시 그룹 간 covariance 가 같다는 가정. Box’s M test 로 검정.

7 가설 사례 — 학습 시간 × 학습 형식

7.1 데이터

요인: - \(A\) = 학습 형식 (반복, 검색). - \(B\) = 학습 시점 (1, 2, 3 시간 후 측정).

피험자: 각 학생이 모든 4 셀 측정 (within design). \(n = 15\) 학생.

7.2 셀 평균 (가상)

1h 2h 3h
반복 5 7 8
검색 6 10 13

7.3 D variables 계산

7.3.1 A main (across B 평균)

\(\bar Y^{(A)}_{i,\text{반복}} = (Y_{i,\text{반복},1} + Y_{i,\text{반복},2} + Y_{i,\text{반복},3}) / 3\)

\(\bar Y^{(A)}_{i,\text{검색}} = (Y_{i,\text{검색},1} + Y_{i,\text{검색},2} + Y_{i,\text{검색},3}) / 3\)

\(D_i^{(A)} = \bar Y^{(A)}_{i,\text{검색}} - \bar Y^{(A)}_{i,\text{반복}}\)

가상 \(\bar D^{(A)} = (9.7 - 6.7) = 3.0\).

이는 자유도 1 → paired \(t\)-test.

7.3.2 B main (across A 평균)

\(\bar Y^{(B)}_{i,k} = (Y_{i,\text{반복},k} + Y_{i,\text{검색},k}) / 2\)

D variables: - \(D_{i,1}^{(B)} = \bar Y^{(B)}_{i,2h} - \bar Y^{(B)}_{i,1h}\) - \(D_{i,2}^{(B)} = \bar Y^{(B)}_{i,3h} - \bar Y^{(B)}_{i,1h}\)

\(\bar D^{(B)} = (3.0, 5.0)\). Hotelling \(T^2\) 검정.

7.3.3 A × B interaction

직교 contrast 곱: - \(A\) contrast: \((\text{반복: } -1, \text{검색: } +1)\) - \(B\) linear: \((1h: -1, 2h: 0, 3h: +1)\) - \(B\) quadratic: \((1h: +1, 2h: -2, 3h: +1)\)

\(D_i^{(AB, \text{lin})} = \sum_{j,k} c^A_j c^{B,\text{lin}}_k Y_{ijk}\) \(= -(-1) Y_{i,\text{반복},1h} + 0 + (-1)(+1) Y_{i,\text{반복},3h} + (+1)(-1) Y_{i,\text{검색},1h} + 0 + (+1)(+1) Y_{i,\text{검색},3h}\) \(= Y_{i,\text{반복},1h} - Y_{i,\text{반복},3h} - Y_{i,\text{검색},1h} + Y_{i,\text{검색},3h}\)

가상 평균: \(5 - 8 - 6 + 13 = 4\).

\(D_i^{(AB, \text{quad})}\): 비슷하게 계산. 가상 평균 ≈ 0.

Hotelling \(T^2\) on \((\bar D^{(AB,\text{lin})}, \bar D^{(AB,\text{quad})}) = (4, 0)\).

검정 결과: \(A\), \(B\), \(A \times B\) 모두 강하게 유의. 검색 학습이 시간이 지날수록 더 큰 효과 (interaction 의 linear 차원이 dominant).

8 Python 코드

import numpy as np
import pandas as pd
from scipy import stats

np.random.seed(2026)
n = 15
A_levels = ["반복", "검색"]
B_levels = [1, 2, 3]
records = []
cell_means = {("반복",1):5, ("반복",2):7, ("반복",3):8,
              ("검색",1):6, ("검색",2):10, ("검색",3):13}

for subj in range(n):
    pi = np.random.normal(0, 4)
    for a in A_levels:
        for b in B_levels:
            y = cell_means[(a, b)] + pi + np.random.normal(0, 1.5)
            records.append({"subject": subj, "A": a, "B": b, "Y": y})
data = pd.DataFrame(records)

# Wide format
wide = data.pivot_table(index="subject", columns=["A", "B"], values="Y")

# 1) A main effect
A_means = data.groupby(["subject", "A"])["Y"].mean().unstack()
D_A = A_means["검색"] - A_means["반복"]
t_A, p_A = stats.ttest_1samp(D_A, 0)
print(f"=== A main (검색 vs 반복) ===")
print(f"  D̄_A = {D_A.mean():.3f}")
print(f"  t({n-1}) = {t_A:.2f}, p = {p_A:.4f}")

# 2) B main effect (multivariate, 2 차원)
B_means = data.groupby(["subject", "B"])["Y"].mean().unstack()
D_B = pd.DataFrame({
    "B2-B1": B_means[2] - B_means[1],
    "B3-B1": B_means[3] - B_means[1],
})
D_bar_B = D_B.mean().values
S_D_B = D_B.cov().values
T2_B = n * D_bar_B @ np.linalg.inv(S_D_B) @ D_bar_B
F_B = (n - 2) / (2 * (n - 1)) * T2_B
p_B = 1 - stats.f.cdf(F_B, 2, n - 2)
print(f"\n=== B main (시점 1, 2, 3) ===")
print(f"  D̄_B = {D_bar_B}")
print(f"  T² = {T2_B:.2f}, F({2},{n-2}) = {F_B:.2f}, p = {p_B:.4f}")

# 3) A × B interaction (direct contrast)
# c^A = (-1, +1), c^B = orthogonal polynomials
c_A = {"반복": -1, "검색": +1}
c_B_lin = {1: -1, 2: 0, 3: +1}
c_B_quad = {1: +1, 2: -2, 3: +1}

D_AB_lin = []
D_AB_quad = []
for subj in range(n):
    sub = data[data["subject"] == subj]
    cell_dict = {(row["A"], row["B"]): row["Y"] for _, row in sub.iterrows()}
    d_lin = sum(c_A[a] * c_B_lin[b] * cell_dict[(a, b)]
                for a in A_levels for b in B_levels)
    d_quad = sum(c_A[a] * c_B_quad[b] * cell_dict[(a, b)]
                 for a in A_levels for b in B_levels)
    D_AB_lin.append(d_lin)
    D_AB_quad.append(d_quad)

D_AB = np.column_stack([D_AB_lin, D_AB_quad])
D_AB_bar = D_AB.mean(axis=0)
S_AB = np.cov(D_AB, rowvar=False)
T2_AB = n * D_AB_bar @ np.linalg.inv(S_AB) @ D_AB_bar
F_AB = (n - 2) / (2 * (n - 1)) * T2_AB
p_AB = 1 - stats.f.cdf(F_AB, 2, n - 2)
print(f"\n=== A × B interaction ===")
print(f"  D̄_AB = {D_AB_bar}")
print(f"  T² = {T2_AB:.2f}, F = {F_AB:.2f}, p = {p_AB:.4f}")

# 차원별 univariate
t_lin, p_lin = stats.ttest_1samp(D_AB_lin, 0)
t_quad, p_quad = stats.ttest_1samp(D_AB_quad, 0)
print(f"  AB-linear: t = {t_lin:.2f}, p = {p_lin:.4f}")
print(f"  AB-quadratic: t = {t_quad:.2f}, p = {p_quad:.4f}")

9 Univariate vs Multivariate 결정 (재방문)

상황 권장
시점 간 상관 일정 (CS), 작은 \(n\) Univariate ANOVA + ε 조정
시점 간 상관 감쇠 (AR(1)), 큰 \(n\) Multivariate 또는 multilevel + AR(1)
결측 시점 있음 Multilevel (REML)
시점이 양적 변수 Multilevel + 시간 slope (random)
일반 권장 (간단) Univariate + GG ε
일반 권장 (정확) Multilevel REML

multivariate 가 multilevel 의 특수 사례 (UN covariance) 라 multilevel 이 통합적.

10 Ch.14 의 4 단계

G-MAX14-0  개관 (현재 글)
G-MAX14-1  2×2 Within D Variable Formation
G-MAX14-2  a×b Design Extension
G-MAX14-3  Split-Plot Multivariate + Decision
    ↓
G-MAX15 (Multilevel — 통합 framework)

11 응용

분야 시나리오
임상 RCT 처치 (between) × 시점 (within) × 측정 위치 (within)
심리학 학습 시간 × 형식 × 동기 (모두 within)
농학 비료 (between) × 시점 (within) × 측정 위치 (within)
IT longitudinal 사용자 그룹 × UI × 시점
운동학 처치 (within) × 측정 위치 (within) — 같은 사람의 다른 근육

12 다변량 vs Multilevel 의 통합 시각

직관: 두 framework 의 동치성

multivariate (MANOVA on D variables) 와 multilevel (REML with UN covariance) 는 균등 완전 데이터에서 같은 결과.

차이: - MANOVA: 시점을 명시적 vector 로 모형. 결측 시 listwise. - Multilevel: 시점을 long format 으로 모형 (one row per measurement). 결측 자동.

학계 표준은 multilevel — 결측 처리 우위 + 비균등 데이터에 강. 정통 DOE 의 multivariate 는 균등 데이터에 simple.

본 시리즈는 두 lens 를 모두 다룸 (G-MAX13~14: multivariate; G-MAX15~16: multilevel). 실무에서는 후자가 일반적.

13 관련 주제

선행 지식

후속 주제

다른 카테고리 연결

14 더 읽을 거리

  • Tabachnick, B. G., Fidell, L. S. (2019). “Using Multivariate Statistics” (7th ed). Pearson — multivariate 의 표준 textbook.
  • Hand, D. J., Taylor, C. C. (1987). “Multivariate Analysis of Variance and Repeated Measures.” Chapman & Hall — repeated measures 의 multivariate 정통.
  • Maxwell, S. E., Delaney, H. D. (2004). “Designing Experiments and Analyzing Data: A Model Comparison Perspective” (2nd ed). Lawrence Erlbaum — Ch.14 의 본 시리즈 source.
  • Stevens, J. P. (2009). “Applied Multivariate Statistics for the Social Sciences” (5th ed). Routledge.

Subscribe

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