요인설계와 블로킹, 교락 관리로 제약 속 실험 최적화하기

요인설계, 블로킹, 교락 구조와 D-Optimal 설계를 통해 제약 조건 아래에서 실험 정보량과 운영 효율을 함께 확보하는 방법을 정리한다.

2026-08-14 · 최초 발행 2024-04-29

실험 수보다 먼저 정해야 할 것

제품이나 공정을 개선하는 실험에서는 실행 횟수 자체보다, 제한된 실행으로 어떤 효과를 분리해 추정할 수 있는지가 더 중요하다. Design of Experiments(DOE)는 이 문제를 다루는 방법론이다.

요인설계는 주효과와 교호작용을 함께 읽기 위한 기본 구조이며, 블로킹은 일자·배치·장비·로트처럼 통제하기 어려운 변동을 다룬다. 설계 제약 때문에 효과가 얽히는 교락은 해상도로 관리하고, 표준 요인설계를 적용하기 어려운 후보 공간에서는 D-Optimal 설계를 사용할 수 있다.

모든 조합을 보거나, 필요한 조합만 고르거나

Factorial Design은 여러 요인의 조합을 체계적으로 배치해 주효과와 교호작용을 동시에 추정한다. Full factorial은 완전한 정보를 제공하지만, 요인이 늘어날수록 실험 수가 빠르게 증가한다.

Fractional factorial은 일부 조합만 택해 실행 수를 줄이는 방식이다. 이때 Resolution을 기준으로 교락 효과를 통제한다. 목표 효과를 얼마나 분리해야 하는지에 따라 설계의 해상도를 선택해야 한다.

블록은 잡음을 분리하는 구조다

일자, 배치, 장비, 로트처럼 통제할 수 없는 외생 변동은 블록 요인으로 묶을 수 있다. 블록 내에서 무작위화하면 편향을 줄이고 오차 분산을 낮출 수 있다.

다만 블록은 관심 효과와 독립적으로 유지되어야 한다. 블록과 처리 효과가 교락되지 않도록 설계 단계에서 행렬 구조를 정해야 한다.

교락이 허용하는 해석의 범위

Confounding은 설계 제약 때문에 특정 효과가 같은 선형결합, 즉 별칭(alias)으로 얽히는 현상이다. 이 경우 일부 효과는 분리해 추정할 수 없다.

해상도는 교락 수준을 표현한다.

  • Resolution III: 주효과와 2차 교호작용이 교락된다.
  • Resolution IV: 주효과와 2차 교호작용은 분리되지만, 2차 교호작용끼리는 교락된다.
  • Resolution V: 2차 교호작용끼리도 분리된다.

목표로 삼는 효과에 맞춰 해상도를 정하고, 실행 전에 alias map을 확인해야 한다.

제약이 큰 후보 공간에서는 D-Optimal

D-Optimal 설계는 주어진 후보 공간과 제약 아래에서 X'X 행렬의 행렬식(det)을 최대화해 모수 추정의 정보량을 높인다. 직교성을 확보하기 어려운 환경에서 특히 유용하다.

연속형과 범주형 요인이 섞여 있거나, 공정상 실행할 수 없는 조합이 있고, 비용 가중치까지 반영해야 하는 경우에는 표준 요인설계의 대안이 된다. 대신 직교성이 낮아질 수 있고 표준적인 해석은 어려워질 수 있으므로 조건수와 레버리지 같은 진단이 필요하다.

설계는 모델과 운영 제약을 함께 반영한다

실험 전에 주효과, 2차 교호작용, 곡면을 위한 제곱항까지 모델에 넣을지를 정한다. 모델이 복잡해질수록 필요한 실험 수와 다중공선성 위험도 함께 커진다. 정규성·등분산·독립성 가정도 검토하고, 필요하다면 Box-Cox 같은 변환을 고려한다.

블록을 쓴다면 블록 크기를 균형 있게 두고 블록 안에서 무작위화한다. 반복(replication)과 반복측정(repeat)은 구분해야 하며, 순수 오차를 추정하려면 진짜 반복이 필요하다.

스크리닝 단계에는 부분 요인 설계인 2^(k−p)를 활용할 수 있다. 이후 최적 후보를 찾는 과정은 추가 실험으로 보완한다. D-Optimal 설계는 후보 집합 정의, 제약 필터링, 목표 모델 지정, 교환 알고리즘 기반 D-기준 최적화의 흐름으로 적용하며 비용과 가중치도 반영할 수 있다.

아니오아니오아니오요구사항 정의목표 반응·효과·예산요인·수준·제약 수립제약·예산 제약 큼?Factorial/부분 요인 설계 선택D-Optimal 후보 집합생성·필터링블록 필요?블록 구조 설계블록 무작위화완전 무작위화파일럿 실행·품질 점검진단 통과? (X'X계수/조건수/잔차)모델 축소·실험수 증대·제약재설정 실험실행·분석(ANOVA/회귀)효과 확인·추가개선(반복/확장)

X'X가 특이하거나 조건수가 과대하면 모델 차수를 줄이고, 실험 수를 늘리거나 후보의 다양성을 넓힌다. 블록과 처리가 교락되면 블록을 재정의하거나 블록 수를 줄이고 크기를 조정한다. 이례치나 비정상 잔차가 나타나면 변환, 강건 회귀, 재실험으로 확인한다.

설계 방식이 바꾸는 운영 조건

설계 유형 성능(추정 효율) 확장성(요인↑ 시 실험수) 일관성(편향/해상도) 안정성(잡음·블록 대응) 운영 편의(제약 대응)
Full Factorial 매우 높음, 완전 정보 매우 나쁨, 지수 증가 매우 높음, 교락 없음 중간, 블로킹 필요 낮음, 제약 반영 어려움
Fractional (Res. IV/V) 높음, 목표 효과 중심 좋음, 대폭 절감 중~높음, 일부 교락 중간, 설계 의존 중간, 일부 제약 가능
Randomized Block 효과 추정 + 분산 감소 중간, 블록 크기 제약 높음(블록-처리 분리 시) 높음, 외생 변동 완화 중간, 스케줄 반영 용이
D-Optimal 높음(제약 하 최적) 좋음, 유연한 크기 중~높음(직교성 저하 가능) 중간, 진단 필요 매우 높음, 제약·가중치 반영

제약의 형태에 따라 달라지는 적용 방식

제조 공정의 초기 스크리닝에서는 7개 요인에 Resolution IV 부분 요인 2^(7−3)=16회 설계를 적용할 수 있다. 교락표를 통해 주효과와 2차 교호작용을 분리하고, 2개 시프트를 블록으로 두어 블록 내 무작위화로 배치 효과를 제거한다. 상위 요인을 확인한 뒤에는 중심점과 곡면을 보강한다.

온라인 서비스 다변량 실험에서는 UI 요인 5개에 부분 요인 설계를 적용하고 요일·트래픽 세그먼트를 블록으로 둘 수 있다. 시간 추세와의 교락을 줄이면서 상호작용 후보만 추적 분석하고, 2주 단위 반복으로 계절성 리스크를 분산한다.

화학 제형에서는 염·용매 농도 합계 ≤ 100%와 독성 상한 같은 제약 때문에 전체 공간의 full factorial이 어려울 수 있다. 후보 집합을 먼저 필터링한 뒤 D-Optimal로 18회 설계를 구성하고 비용 가중치를 반영한다. 잔차를 진단한 후 로버스트 조건을 도출한다.

반도체 공정의 미세창처럼 테스트 비용이 높아 실험 수가 제한될 때는 Resolution V 부분 요인 설계로 2차 교호작용을 분리할 수 있다. 웨이퍼 로트를 블록으로 두고, 장비 캘리브레이션 전후 비교는 반복으로 분리 추정한다.

실험 수를 줄이면서 지켜야 할 해석 품질

Fractional과 D-Optimal 설계를 쓰면 실험 수를 4080% 줄일 수 있다. 예를 들어 3^4=81회 설계를 D-Optimal 2024회로 대체할 수 있다.

블로킹은 오차 분산을 20~50% 줄여 동일한 예산에서 검정력을 높이는 방법이다. 중심점을 포함하면 비선형 탐지력도 개선된다. 제약을 설계에 반영하면 실행 불가 조합을 제거해 실패율을 낮출 수 있고, 교락 관리는 잘못된 인과 해석을 막는 장치가 된다.

무작위화와 블로킹은 대체 관계가 아니다. 무작위화는 편향 완화에, 블로킹은 분산 감소에 초점이 있다. 블록의 존재가 분명하면 블로킹을 우선하고, 그 밖의 요인에는 무작위화를 적용한다.

해상도가 높아질수록 분리 추정은 강화되지만 실험 수도 증가한다. 스크리닝과 확증을 나누는 전략은 이 비용을 조절하는 방법이다. 직교성은 해석을 쉽게 하고 분산을 줄이지만, 제약 반영은 실행 가능성을 높인다. 제약이 클수록 D-Optimal과 레버리지·분산팽창계수 같은 진단지표를 함께 사용한다.

R에서 D-Optimal 설계 만들기

전제조건은 R 4.3+, AlgDesign 1.2.1이며, 주효과와 2차 교호작용 모델에서 A+B ≤ 1 제약 하 12회 설계를 만드는 예시다.

# install.packages("AlgDesign")
library(AlgDesign)

# 1) 후보 집합 생성 (연속 2개, 범주 1개 예시)
A <- seq(-1, 1, by = 0.5)
B <- seq(-1, 1, by = 0.5)
C <- c(-1, 1)  # two-level categorical
candidates <- expand.grid(A = A, B = B, C = C)

# 2) 공정 제약 적용: A + B <= 1 (및 A >= -0.5 예시)
candidates <- subset(candidates, A + B <= 1 & A >= -0.5)

# 3) 모델 지정: 주효과 + 2차 교호작용
form <- ~ A + B + C + A:B + A:C + B:C

# 4) D-Optimal 설계 (교환 알고리즘)
set.seed(2025)
opt <- optFederov(formula = form,
                  data = candidates,
                  nTrials = 12,       # 실험 수
                  approximate = FALSE)

# 5) 결과 확인
design <- opt$design
det_info <- det(t(model.matrix(form, design)) %*% model.matrix(form, design))
kappa_X   <- kappa(model.matrix(form, design))

print(design)      # 설계 점
cat("det(X'X):", round(det_info, 3), "\n")
cat("cond(X):", round(kappa_X, 2), "\n")

# 권장 진단:
# - det(X'X)가 지나치게 작거나 cond(X) > 30~50: 설계 안정성 낮음
#   -> 실험수 증가, 후보 다양화, 모델 차수 축소, 중심점 추가 검토

범주형 요인은 명시적인 레벨로 후보를 만들고, 연속형 요인의 그리드 간격은 공정 해상도와 측정 오차를 고려해 정한다. 블록이 필요하면 블록별 균형 표본을 확보한 뒤 블록 내 무작위화를 적용한다. D-Optimal 설계로 각 블록에 같은 구조를 배분하거나, 블록을 공변량으로 모델에 포함할 수 있다.

실험설계요인설계블로킹교락D-Optimal