1 정의
요인 \(A\) 가 \(v\) 수준, 요인 \(B, C\) 가 각 2 수준. 셀 수 \(4v\).
산업 사례: 처치 종류 (4 가지) × 온도 (저/고) × 압력 (저/고).
2 효과 분해
| Effect | \(df\) |
|---|---|
| \(A\) | \(v - 1\) |
| \(B\) | 1 |
| \(C\) | 1 |
| \(A \times B\) | \(v - 1\) |
| \(A \times C\) | \(v - 1\) |
| \(B \times C\) | 1 |
| \(A \times B \times C\) | \(v - 1\) |
| Error | \(4v(n-1)\) |
총 효과 자유도: \(v - 1 + 1 + 1 + (v-1) + (v-1) + 1 + (v-1) = 4v - 1\). ✓
3 \(A\) 가 양적이면 직교 다항식 분해
\(v = 4\) 등간격 양적 요인 \(A\):
- \(A_L\) (linear): 자유도 1
- \(A_Q\) (quadratic): 자유도 1
- \(A_C\) (cubic): 자유도 1
각 \(A \times B, A \times C, A \times B \times C\) 도 다항식으로 분해. 총 자유도 보존.
\(A\) 가 양적이면: - \(A_L\) 강함: 선형 효과 (단조 증가/감소). - \(A_Q\) 강함: 곡률 (역 U 자, U 자). - \(A_C\) 강함: 비단조 (S 자).
\(A \times B_L\): \(A\) 의 선형 추세가 \(B\) 에 따라 다른가? \(A \times B_Q\): \(A\) 의 곡률이 \(B\) 에 따라 다른가?
각 1 자유도 contrast 가 의미 있는 가설을 검정.
4 ANOVA — 가설 데이터
\(v = 3\) 처치 (A, B, C), \(B\) = 온도 (low/high), \(C\) = 압력 (low/high). 각 셀 \(n = 5\).
| Source | \(df\) | \(F\) | \(p\) |
|---|---|---|---|
| \(A\) | 2 | 25 | \(<0.001\) |
| \(B\) | 1 | 12 | 0.001 |
| \(C\) | 1 | 8 | 0.005 |
| \(A \times B\) | 2 | 4 | 0.024 |
| \(A \times C\) | 2 | 1.5 | 0.235 |
| \(B \times C\) | 1 | 0.8 | 0.376 |
| \(A \times B \times C\) | 2 | 0.5 | 0.610 |
| Error | 48 | — | — |
해석: - 주효과 모두 유의. - \(A \times B\) 약한 상호작용. - 다른 상호작용 비유의.
5 \(v = 4\) 의 trend 분해 — 가설
\(A\) = dose (1, 2, 4, 8 mg, log 등간격). \(\log_2 A \in \{0, 1, 2, 3\}\) 등간격.
직교 다항식: - Linear: \((-3, -1, +1, +3)\). - Quadratic: \((+1, -1, -1, +1)\). - Cubic: \((-1, +3, -3, +1)\).
각 contrast 의 SS 와 \(F\).
| 효과 | \(F\) | \(p\) |
|---|---|---|
| \(A_L\) | 80 | \(<0.001\) — 강한 선형 |
| \(A_Q\) | 5 | 0.03 — 약한 곡률 |
| \(A_C\) | 0.5 | 0.5 — 비유의 |
| \(B\) | … | … |
해석: \(A\) (dose) 가 양적이고 응답이 거의 선형 증가 (작은 곡률).
6 Python 코드
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
np.random.seed(2026)
n = 5
v = 3
A_levels = [0, 1, 2]
B_levels = [0, 1]
C_levels = [0, 1]
records = []
for a in A_levels:
for b in B_levels:
for c in C_levels:
mu = 50 + 3*a - 1 + 2*(2*b-1) + 1*(2*c-1) + 0.5*a*(2*b-1)
for _ in range(n):
records.append({"A": a, "B": b, "C": c, "Y": np.random.normal(mu, 2)})
data = pd.DataFrame(records)
model = ols("Y ~ C(A) * C(B) * C(C)", data=data).fit()
print(sm.stats.anova_lm(model, typ=2).round(3))
# Trend decomposition (양적 A)
data["A_lin"] = data["A"] - 1 # -1, 0, 1
data["A_quad"] = (data["A"] - 1)**2 - 2/3
model_trend = ols(
"Y ~ A_lin + A_quad + C(B) + C(C) + A_lin:C(B) + A_quad:C(B)",
data=data
).fit()
print("\n=== Trend decomposition ===")
print(sm.stats.anova_lm(model_trend, typ=2).round(3))7 응용
| 분야 | \(A\) (\(v\) 수준) | \(B, C\) |
|---|---|---|
| 화학 | 처치 종류 (3~5) | 온도, 압력 |
| 농학 | 비료 종류 (4) | 관개 (있음/없음), 시기 |
| 약리 | dose (4 수준) | 환자 type, 측정 시점 |
| 식품 | 레시피 (4) | 보관 온도, 시간 |
| ML | optimizer (3~4) | learning rate (저/고), batch size |
8 가정과 한계
- 셀 등표본.
- \(A\) 가 양적이면 직교 다항식 분해 권장.
- 고차 상호작용: 보통 작음.
- 자유도 부족: 작은 \(v\) (\(v = 2\)) 면 일반 \(2^3\) factorial.
9 본 시리즈
G-MON4-0 개관
G-MON4-1 Asymmetrical + Confounded
G-MON4-2 Construction Balanced
G-MON4-3 v×2² Analysis ← 현재 글
G-MON4-4 Split-Plot Analysis
10 관련 주제
선행 지식
후속 주제
다른 카테고리 연결
11 더 읽을 거리
- Cochran, W. G., Cox, G. M. (1957). “Experimental Designs” (2nd ed). Wiley.
- Box, G. E. P., Hunter, J. S., Hunter, W. G. (2005). “Statistics for Experimenters.”
- Das, M. N., Giri, N. C. (1986). “Design and Analysis of Experiments” (2nd ed).
- Montgomery, D. C. (2017). “Design and Analysis of Experiments” (9th ed). Wiley.