1 정의
\(k\) 요인 각 3 수준 (low, mid, high). 총 \(3^k\) 셀. 각 요인 자유도 2.
코딩: \(\{-1, 0, +1\}\) 또는 \(\{0, 1, 2\}\) (GF(3) 처리).
효과 분해: - 양적 요인이면 선형·이차 직교 다항식 (G-MAX6-2). - 명목 요인이면 GF(3) 그룹화 (G-MON3-2).
2 왜 3 수준인가
\(2^k\) 의 한계: 양적 요인의 비선형성 (이차) 을 못 잡음. 2 수준은 선형 추세만 추정.
\(3^k\) 의 이점: - 각 요인의 선형·이차 효과 동시 추정. - Response surface 분석의 기초 (G-MON7). - ML 의 hyperparameter 의 최적값 (역 U 자) 검출.
단점: 셀 수 폭증 (\(3^k = 3, 9, 27, 81, 243, ...\)).
2 수준: low/high 의 직선 추정만.
3 수준: low/mid/high 의 곡선 추정. 최적이 mid 근처면 mid 의 응답이 가장 좋음 → 이차 곡률 검출.
ML 의 learning rate 같은 hyperparameter: - 2 수준 (1e-4 vs 1e-2): 어느 쪽이 좋은지만. - 3 수준 (1e-4, 1e-3, 1e-2): 최적이 1e-3 근처인지 확인 가능.
3 수준이 양적 요인의 최적화에 필수.
3 효과 분해 — \(3^2 = 9\)
\(A, B\) 각 3 수준. 효과 자유도 8:
- \(A\) 주효과: 자유도 2 (linear \(A_L\) + quadratic \(A_Q\)).
- \(B\) 주효과: 자유도 2 (\(B_L + B_Q\)).
- \(A \times B\) 상호작용: 자유도 4 = \(A_L \times B_L + A_L \times B_Q + A_Q \times B_L + A_Q \times B_Q\).
4 직교 다항식 코딩
\(x \in \{-1, 0, 1\}\) 으로 코딩하면:
- Linear: \(x\).
- Quadratic: \(x^2 - 2/3\) (centered, 직교).
또는 정수 형태: - Linear: \((-1, 0, +1)\) - Quadratic: \((+1, -2, +1)\)
직교성 검증: \(\sum_x \text{lin}(x) \cdot \text{quad}(x) = -1 \cdot 1 + 0 \cdot (-2) + 1 \cdot 1 = 0\). ✓
5 가설 데이터 — \(3^2\)
요인 \(A\) = 농도 (low, mid, high), \(B\) = 시간 (1h, 2h, 3h). \(n = 5\).
가상 셀 평균:
| \(B\) low | \(B\) mid | \(B\) high | |
|---|---|---|---|
| \(A\) low | 30 | 35 | 38 |
| \(A\) mid | 40 | 50 | 53 |
| \(A\) high | 45 | 60 | 65 |
(농도와 시간 모두 증가에 따라 응답 ↑, 비선형 패턴.)
5.1 분석
\(A\) 의 trend: - \(A_L\) 강함 (선형 증가). - \(A_Q\) 약함 (거의 선형).
\(B\) 의 trend: - \(B_L\) 강함. - \(B_Q\) 약함 (mid 근처 곡률 약).
\(A \times B\): - \(A_L \times B_L\) 약간 (시너지). - 다른 interaction 작음.
해석: 두 요인 모두 선형 효과 dominant. 약한 시너지.
6 직교 분해의 SS
각 1 자유도 contrast: \[ SS_{\psi} = \frac{n \, \hat\psi^2}{\sum c^2} \]
\(\sum c^2\): - Linear (3 수준): \(1 + 0 + 1 = 2\). - Quadratic (3 수준): \(1 + 4 + 1 = 6\).
각 contrast 별로 \(F\) 검정.
7 Python 코드
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
np.random.seed(2026)
levels = [-1, 0, 1]
n = 5
cell_means = {
(-1,-1):30, (-1,0):35, (-1,1):38,
( 0,-1):40, ( 0,0):50, ( 0,1):53,
( 1,-1):45, ( 1,0):60, ( 1,1):65,
}
records = []
for (a, b), mu in cell_means.items():
for _ in range(n):
records.append({"A": a, "B": b, "Y": np.random.normal(mu, 3)})
data = pd.DataFrame(records)
# Standard ANOVA (factorial)
model = ols("Y ~ C(A) * C(B)", data=data).fit()
anova = sm.stats.anova_lm(model, typ=2)
print("=== 3^2 ANOVA (factorial) ===")
print(anova.round(3))
# Trend decomposition (orthogonal polynomials)
data["A_lin"] = data["A"]
data["A_quad"] = data["A"]**2 - 2/3
data["B_lin"] = data["B"]
data["B_quad"] = data["B"]**2 - 2/3
model_trend = ols(
"Y ~ A_lin + A_quad + B_lin + B_quad + A_lin:B_lin + A_lin:B_quad + A_quad:B_lin + A_quad:B_quad",
data=data
).fit()
print("\n=== Trend decomposition ===")
print(sm.stats.anova_lm(model_trend, typ=2).round(3))
# 각 contrast 의 effect size
print("\n=== Effects ===")
for col in ["A_lin", "A_quad", "B_lin", "B_quad",
"A_lin:B_lin", "A_lin:B_quad", "A_quad:B_lin", "A_quad:B_quad"]:
if col in model_trend.params.index:
print(f" {col}: β = {model_trend.params[col]:+.3f}")8 \(3^k\) 의 셀 수와 fractional 필요
| \(k\) | \(3^k\) | 효과 수 |
|---|---|---|
| 2 | 9 | 8 (4 그룹) |
| 3 | 27 | 26 (13 그룹) |
| 4 | 81 | 80 (40 그룹) |
| 5 | 243 | 242 (121 그룹) |
\(k \ge 4\) 부터 fractional factorial 필수.
9 \(3^{k-p}\) Fractional Factorial
\(3^k\) 의 1/3, 1/9 fraction: - \(p = 1\): \(3^{k-1}\) runs. - \(p = 2\): \(3^{k-2}\) runs.
각 효과가 다른 효과와 alias. 자세는 Wu-Hamada (2009).
10 \(3 \times 3\) vs \(2 \times 4\) 비교
| 측면 | \(3^2\) | \(2^k\) (4 cells) |
|---|---|---|
| 셀 수 | 9 | 4 |
| 양적 요인 | 선형 + 이차 가능 | 선형만 |
| 명목 요인 | 가능 | 가능 |
| 검정력 | 작음 (자유도 분배) | 큼 |
| 적합 | 비선형성 검출 | 단순 비교 |
3 수준은 비선형성 검출에 필수, 2 수준은 단순 비교에 효율적.
11 Mixed Levels
\(2^a \times 3^b\) 같은 mixed:
- 일부 양적 요인 (3 수준).
- 일부 명목 또는 binary (2 수준).
예: 2 광고 디자인 × 3 색 × 3 가격 = \(2 \times 3 \times 3 = 18\) runs.
분석은 일반 factorial.
12 가정과 한계
- 셀 수 ↑: 큰 \(k\) 에 fractional.
- 양적 요인 권장: 명목 3 수준은 GF(3) 그룹화로 대체.
- 수준의 등간격: 비등간격은 직교 다항식 재계산 (G-MAX6-3).
- 곡률 검출의 자유도: 자유도 1 → 검정력 약. \(n\) 충분 필요.
13 응용
13.1 1. 화학 공정
\(3^3 = 27\) 화학 공정 실험. 온도·pH·농도 각 3 수준. 비선형 곡률 검출.
13.2 2. ML hyperparameter
learning rate 의 3 수준 (1e-4, 1e-3, 1e-2): - 선형 효과: lr 이 클수록 좋은가? - 이차 효과: 중간이 최적인가?
3 수준이 단조 vs 곡률 구분 가능.
13.3 3. 농학
비료 농도 (low, mid, high) × 관개 (low, mid, high). 최적 조합 검색.
13.4 4. 식품
설탕·소금·버터 농도 각 3 수준. 맛 평가의 곡률 검출.
14 ML 매핑
ML hyperparameter 의 \(3^k\) factorial 은 RSM (G-MON7) 의 시작점.
3^3 = 27 runs.
factor: lr, dropout, weight_decay (각 3 수준).
분석: - 선형 효과로 가장 영향력 큰 hyperparameter 식별. - 이차 효과로 최적 영역 검출. - \(A \times B\) interaction 으로 hyperparameter 간 시너지.
다음 단계: CCD (G-MON7-4) 로 정밀 RSM. 또는 Bayesian optimization 으로 자동화.
15 본 시리즈
G-MON3-0 Factorial 개관
G-MON3-1 2^k Factorial
G-MON3-2 Finite Fields + Grouping
G-MON3-3 Confounding
G-MON3-4 3^k Factorial ← 현재 글
G-MON3-5 General Construction
G-MON3-6 Fractional Factorial
16 관련 주제
선행 지식
후속 주제
- G-MON3-5: General Construction
- G-MON3-6: Fractional Factorial
- G-MON7 — Response Surface (RSM)
17 더 읽을 거리
- Box, G. E. P., Hunter, W. G., Hunter, J. S. (2005). “Statistics for Experimenters.”
- Wu, C. F. J., Hamada, M. S. (2009). “Experiments: Planning, Analysis, and Optimization” (2nd ed). Wiley.
- Montgomery, D. C. (2017). “Design and Analysis of Experiments” (9th ed). Wiley.
- Kempthorne, O. (1952). “The Design and Analysis of Experiments.” Wiley.