1 정의
\(2^k\) 의 \(1/2^p\) 분수만 실행. 셀 수 \(2^{k-p}\).
\(p\) 개의 defining relations (확인 contrasts) 가 fraction 을 결정. 각 effect 는 다른 \(2^p - 1\) 개 effect 와 alias.
2 동기
\(2^7 = 128\) 셀은 산업적으로 부담. \(2^{7-3} = 16\) 으로 1/8 fraction 만 실행. 단 일부 효과가 alias 되어 분리 추정 불가능.
핵심 가정: 고차 상호작용 ≈ 0 (실무에서 흔함). 이 가정 하에 alias 된 효과는 사실 저차 효과의 추정.
산업 실험의 경험: - 주효과 (자유도 1) 의 약 20% 가 유의. - 이원 상호작용의 약 10% 가 유의. - 삼원 이상은 거의 무시 (1% 미만 유의).
이를 effect sparsity 가정. 큰 효과는 많지 않다.
이 가정 하에 fractional factorial 이 정당. 고차 상호작용을 무시하므로 alias 된 효과는 저차 효과의 추정.
이는 ML 의 sparse model (lasso, ridge) 의 정수 — 작은 모수만 0 이 아님.
3 Defining Relation
\(2^{7-3}\) 의 defining relation 예:
\[ I = ABCE = BCDF = ACDG \]
\(I\) = identity (always +1). 곱 (GF(2) 산술): \[ I = ABCE \cdot BCDF = AC E F D = ACDEF \cdot 1 \]
(자세한 계산은 GF(2) 의 \(A^2 = I\) 활용.)
4 Alias 구조
각 effect 는 자기와 defining relations 의 곱과 alias.
예 (\(I = ABCE\)): - \(A\) alias \(BCE\) (\(A \cdot ABCE = BCE\)). - \(B\) alias \(ACE\). - \(AB\) alias \(CE\).
\(2^{7-3}\) 의 모든 alias 는 \(2^3 - 1 = 7\) 개. 각 effect 가 7 개 다른 effect 와 alias.
\(2^{k-p}\) 의 alias 구조는 \(p = 3\) 부터 매우 복잡 (\(2^p = 8\) alias 그룹). 손으로 계산하지 않고 통계 패키지 사용.
R FrF2, DoE.base. Python pyDOE2.fracfact.
각 패키지가 자동으로 alias 표 생성.
5 Resolution
Resolution = defining relation 중 가장 짧은 effect 의 길이.
| Resolution | 의미 |
|---|---|
| III | 주효과가 이원 상호작용과 alias (보통 부족) |
| IV | 주효과가 삼원 상호작용과 alias, 이원이 이원과 alias (실무 표준) |
| V | 주효과가 사원과 alias, 이원이 삼원과 alias (가장 좋음) |
Resolution V 권장. 이원 상호작용까지 추정 가능.
5.1 Resolution III 의 한계
주효과가 이원 상호작용과 alias. 이원 상호작용 무시 가정 하에 사용. PB design 은 보통 III.
5.2 Resolution IV 의 trade-off
주효과는 삼원과 alias (안전), 이원은 이원과 alias (혼동).
이원 상호작용을 분리 추정 못 함. screening 단계에서 사용.
5.3 Resolution V 의 우위
주효과 + 이원 상호작용 모두 추정 가능. 큰 표본에 권장.
6 Resolution V \(2^{5-1}\) Design
\(I = ABCDE\) (defining relation 길이 5).
16 cells. 각 effect 의 alias:
- 주효과: \(A\) alias \(BCDE\) (4-way, 무시 가능).
- 이원: \(AB\) alias \(CDE\) (3-way, 무시 가능).
→ 모든 주효과 + 이원 상호작용 추정 가능.
7 가설 데이터 — \(2^{5-1}\)
5 요인 (\(A\)~\(E\)), 16 cells, \(n = 4\). 응답 = 산업 수율.
ANOVA (가상):
| Effect | \(SS\) | \(df\) | \(F\) |
|---|---|---|---|
| \(A\) | 200 | 1 | 50 |
| \(B\) | 80 | 1 | 20 |
| \(C\) | 40 | 1 | 10 |
| \(D\) | 30 | 1 | 7.5 |
| \(E\) | 20 | 1 | 5 |
| \(AB\) | 50 | 1 | 12.5 |
| \(AC\) | 10 | 1 | 2.5 |
| …10 이원 상호작용 | 10 | ||
| Error | 240 | 60 | \(4\) |
Resolution V 덕에 모든 주효과 + 이원 상호작용 분리 추정. 4 원 이상은 무시.
8 Python 코드
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
# pyDOE2 의 fractional factorial
try:
from pyDOE2 import fracfact
# 2^(5-1) Resolution V: I = ABCDE
design = fracfact("a b c d abcd")
print("=== 2^(5-1) Resolution V design ===")
print(design[:8])
print(f"shape: {design.shape}")
except ImportError:
print("pyDOE2 not installed. pip install pyDOE2")
# 직접 16 cells 생성 (full 2^4 + e = abcd column)
np.random.seed(2026)
A = np.array([(-1)**i for i in range(16)]) # alternating
B = np.array([(-1)**(i // 2) for i in range(16)])
C = np.array([(-1)**(i // 4) for i in range(16)])
D = np.array([(-1)**(i // 8) for i in range(16)])
E = A * B * C * D # ABCDE = I → E = ABCD
print(f"\nE = ABCD pattern: {E[:8]}")
# 가상 응답
n = 4
records = []
beta = {"A": 5, "B": 3, "C": 2, "D": 1.5, "E": 1, "AB": 2.5}
for i in range(16):
a, b, c, d, e = A[i], B[i], C[i], D[i], E[i]
for _ in range(n):
y = (10 + beta["A"] * a + beta["B"] * b + beta["C"] * c
+ beta["D"] * d + beta["E"] * e + beta["AB"] * a * b
+ np.random.normal(0, 2))
records.append({"A": a, "B": b, "C": c, "D": d, "E": e, "Y": y})
data = pd.DataFrame(records)
model = ols("Y ~ A * B * C * D * E", data=data).fit()
# alias 된 고차는 자동 drop
anova = sm.stats.anova_lm(model, typ=2)
print("\n=== 2^(5-1) ANOVA ===")
print(anova.round(3).head(20))9 분석 절차
Step 1: Defining relation 선택
- 원하는 resolution 확보.
- 이원 상호작용 추정 필요 → Resolution V.
- 주효과만 → Resolution III.
Step 2: Cells 생성
- defining relation 의 부호로 fraction.
Step 3: 각 셀에 처치 무작위 배정
- 잡음 평균화.
Step 4: 분석
- 각 effect 의 alias 인지 확인 후 추정.
- 큰 alias chain 의 effect 는 모두 같이 분석.
Step 5: Foldover (선택)
- 부호 뒤집은 fraction 추가 → resolution ↑.
10 ML 매핑
\(k = 5\sim10\) hyperparameter screening 에 fractional factorial:
| Hyperparameter | Levels |
|---|---|
| learning rate | low, high |
| weight decay | low, high |
| batch size | small, large |
| optimizer | Adam, SGD |
| dropout | 0, 0.5 |
\(2^5 = 32\) 대신 \(2^{5-2} = 8\) 또는 \(2^{5-1} = 16\) runs. 각 hyperparameter 의 main effect 와 일부 상호작용 확인 → 다음 단계 grid 좁힘.
이는 ML 의 random search 의 systematic 대안. 정보 효율 ↑.
11 Foldover 의 활용
Resolution III → Resolution IV:
원래 \(2^{k-p}\) Resolution III + 모든 부호 뒤집은 \(2^{k-p}\) → 통합 \(2^{k-p+1}\).
| 원래 | Foldover 후 |
|---|---|
| 8 cells, Res III | 16 cells, Res IV |
| 16 cells, Res III | 32 cells, Res IV |
cell 수 2 배. 정보 효율 ↑.
12 Augmented Design
PB 또는 fractional 의 결과로 큰 효과 식별 → 큰 효과만 다음 단계에 포함.
단계적 실험: 1. Screening (PB 또는 Res III): 10+ factor 중 큰 효과 5 개 식별. 2. Fractional (Res IV/V): 5 factor 의 이원 상호작용 검정. 3. Response Surface (G-MON7): 최적 영역 검출. 4. Confirmation: 추정 최적점에서 최종 검증.
이는 산업 실험의 표준 sequential strategy.
13 가정과 한계
- 고차 상호작용 = 0 가정: 위반 시 fractional 결과 부정확.
- Resolution 선택: 자원 제약과 정밀도 trade-off.
- Alias 의 자각: 어느 effect 가 어느 alias 인지 명시.
- Sequential strategy 권장: 한 번에 모든 답을 얻으려 하지 말 것.
14 본 시리즈 마무리
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 + Maximum
G-MON3-6 Analysis + Fractional Factorial ← 현재 글 (Ch.3 마지막)
↓
G-MON4 (Asymmetrical / Split-Plot)
15 관련 주제
선행 지식
후속 주제
- G-MON4 — Asymmetrical / Split-Plot (작성 예정)
- G-MON7 — Response Surface (RSM)
다른 카테고리 연결
16 더 읽을 거리
- 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 — fractional factorial 의 종합.
- Montgomery, D. C. (2017). “Design and Analysis of Experiments” (9th ed). Wiley.
- Mukerjee, R., Wu, C. F. J. (2006). “A Modern Theory of Factorial Designs.” Springer.
- Box, G. E. P., Meyer, R. D. (1986). “An analysis for unreplicated fractional factorials.” Technometrics 28(1): 11-18 — 작은 표본에서의 분석.