1 정의
비직교 설계 (\(n_{jk}\) 가 셀별로 다른 factorial) 에서 효과 \(A\) 의 SS 는 어느 모형에 \(A\) 를 추가하는지에 따라 달라진다.
| 유형 | 정의 | 모형 비교 |
|---|---|---|
| Type I (sequential) | 모형에 효과를 사전 지정 순서 로 추가. SS 는 누적적. | \(A\) 추가 직전 vs 직후 |
| Type II (hierarchical) | 같은 차수 또는 더 낮은 차수의 효과를 모두 포함 후 그 항을 추가. 상호작용은 그 부모 주효과를 모두 포함한 모형에서. | \(\{B\}\) vs \(\{A, B\}\) for \(A\); \(\{A, B\}\) vs \(\{A, B, A \times B\}\) for \(A \times B\) |
| Type III (marginal) | 다른 모든 항을 모형에 포함한 후 그 항만 제거 / 추가. | \(\{A, B, A \times B\} \setminus \{A\}\) vs \(\{A, B, A \times B\}\) |
등표본 직교 설계에서는 세 유형이 동일한 SS 를 산출한다. 비직교에서만 차이가 발생.
2 왜 비직교에서 SS 가 갈라지는가
직교 설계 (등표본) 에서 marginal 평균은 주효과만의 정보를, 셀 평균은 주효과 + 상호작용을 순수하게 담는다. 셀이 직교라 SS 가 가산된다.
비직교 (불균등 표본) 에서는 marginal 평균이 셀 표본 비율에 따라 가중되어 다른 효과의 정보를 일부 흡수한다. 결과적으로 효과 \(A\) 의 SS 가 효과 \(B\), \(A \times B\) 와 어떻게 관계 지어지는가를 명시해야 SS 가 정의된다.
\(2 \times 2\) 에서 셀 표본이 \((20, 5, 5, 20)\) 이라 하자. Drug Present 행의 marginal 평균 \(= (20 \times 168 + 5 \times 186) / 25 = 171.6\). Drug Absent 행 marginal \(= (5 \times 188 + 20 \times 190) / 25 = 189.6\). 차이 \(= 18\).
만약 셀이 \((5, 20, 20, 5)\) 였다면 marginal 차이가 다르게 나왔을 것이다 — 같은 셀 평균 (효과) 인데도 표본 분포가 marginal 을 흔든다. 이 때문에 “주효과” 의 정의가 모호해진다 — Type I/II/III 는 이 모호함을 다른 방식으로 해소한다.
3 Type I — Sequential SS
정의: 모형에 효과를 사전 지정 순서로 추가하고, 각 단계의 잔차 SS 차이를 그 효과의 SS 로 한다.
순서: A → B → A×B
SS_A = E(없음) - E(A)
SS_B = E(A) - E(A, B)
SS_{A×B} = E(A, B) - E(A, B, A×B)
문제: 순서에 따라 결과가 다르다. \(A\) 와 \(B\) 가 상관 (비직교) 일 때 \(A\) 를 먼저 넣으면 SS_A 가 크고 SS_B 가 작아지고, 반대 순서면 그 반대.
언제 사용? 사전에 명확한 인과·논리 순서가 있을 때 (예: covariate 를 먼저 통제하고 처치 효과를 본다 — ANCOVA 의 정신). R 의 anova() 기본값이지만, factorial 분석에는 일반적으로 부적절.
4 Type II — Hierarchical SS
정의: 효과 \(X\) 의 SS 는 “자기와 같은 차수 이하의 모든 효과를 포함한 모형 vs 거기에 \(X\) 를 추가한 모형” 의 잔차 SS 차이.
SS_A = E(B) - E(A, B)
SS_B = E(A) - E(A, B)
SS_{A×B} = E(A, B) - E(A, B, A×B)
특징: - 주효과 SS 는 다른 주효과를 통제한 결과 (서로 marginal). - 상호작용 SS 는 두 주효과를 통제한 결과. - 상위 차수의 상호작용을 무시하고 주효과 SS 를 정의 — “marginal modeling principle” (Nelder, 1977).
언제 사용? 상호작용이 0 이라는 가정이 합리적일 때. 상호작용이 큰 데이터에서는 주효과 검정이 잘못된 결과를 줄 수 있다.
5 Type III — Marginal SS
정의: 효과 \(X\) 의 SS 는 “전체 모형 vs \(X\) 만 빠진 모형” 의 잔차 SS 차이.
SS_A = E(B, A×B) - E(A, B, A×B)
SS_B = E(A, A×B) - E(A, B, A×B)
SS_{A×B} = E(A, B) - E(A, B, A×B)
특징: - 모든 효과가 다른 모든 효과를 통제한 후의 partial SS. - 셀 평균에 동등 가중치를 주는 “unweighted means analysis” 와 동치. - 비직교에서도 “주효과 = marginal mean 의 차이” 라는 원래 의미를 보존.
언제 사용? 일반 권장. 특히 셀 표본 차이가 무작위·편의에 의한 것일 때 (모집단 비율 반영 아님). SAS, SPSS, statsmodels 의 default.
Type III 는 “다른 모든 항을 통제” 한 partial SS 이다. 주효과의 의미가 “marginal of other factors held at zero (effect coding) or at the average (sum-to-zero coding)” 인데, 이는 효과 부호화 (contrast coding) 에 의존한다. Sum-to-zero (effect) coding 이어야 unweighted means 와 일치한다. Treatment (dummy) coding 으로 Type III 를 계산하면 결과가 이상해진다 (cell mean intercept 의 영향).
→ R 에서 contrasts(x) <- contr.sum, statsmodels 에서 C(x, Sum) 로 명시.
6 세 유형의 비교 — 가상 비직교 데이터
\(2 \times 2\) 설계, 셀 표본 \((20, 5, 5, 20)\), 셀 평균 \((168, 186, 188, 190)\), \(MS_W = 62.5\).
| 효과 | Type I (A 먼저) | Type I (B 먼저) | Type II | Type III |
|---|---|---|---|---|
| \(A\) (Drug) | 720.0 | 540.5 | 540.5 | 540.5 |
| \(B\) (BF) | 320.5 | 500.0 | 320.5 | 320.5 |
| \(A \times B\) | 195.0 | 195.0 | 195.0 | 195.0 |
(가상 수치 — 정확한 값은 데이터 분포에 의존. Type I 의 두 순서가 다른 결과를 주는 점, Type II/III 가 상호작용 통제 여부에서 갈라지는 점을 보여 주는 예.)
특징: - Type I 은 순서 의존적. - Type II 와 III 는 상호작용 SS 가 동일하지만 주효과 SS 의 정의가 다르다 (Type II 는 상호작용 무시, Type III 는 통제). - Type III 가 가장 보수적 (가장 강한 통제).
7 Unweighted Means Analysis
비직교 설계에서 marginal 평균을 셀 표본으로 가중하지 않고 단순 평균하는 방법.
\[ \bar Y_{\cdot k}^{(U)} = \frac{1}{a} \sum_j \bar Y_{jk} \]
이 marginal 평균의 차이가 unweighted main effect 이며 Type III SS 와 일치한다.
표본이 모집단을 대표하지 않으면 (예: 셀 1 에 표본 20, 셀 2 에 표본 5 인 이유가 모집단 비율이 4:1 이라서가 아니라 모집단 비율은 1:1 인데 모집까지의 우연으로 발생) weighted marginal 은 거짓 비율을 강요한다. Unweighted 는 셀별 효과를 동등 취급해 “이 처치 조합 자체의 효과는 무엇인가” 를 묻는다.
반면 모집단 비율이 진짜 4:1 이고 우리가 그 비율 그대로 일반화하려면 weighted (Type I) 가 맞을 수 있다. 일반 권장이 Type III 인 이유는 (1) 표본이 모집단 비율 반영하는 경우가 드물고, (2) Type III 가 실험 설계 의도 (“처치 효과 자체” 를 보고자 함) 와 가장 가깝기 때문이다.
8 R 과 Python 의 default 차이
| 도구 | 함수 | 기본 SS 유형 | Type III 옵션 |
|---|---|---|---|
| R | anova() |
Type I | car::Anova(model, type=3) + contr.sum |
| R | aov() |
Type I | 상동 |
| Python statsmodels | anova_lm |
Type I (typ=1) |
typ=3 + C(x, Sum) 코딩 |
| SAS | PROC GLM |
Type III | default |
| SPSS | Univariate ANOVA |
Type III | default |
비직교 설계의 ANOVA 표를 인용하거나 재현할 때 어느 유형인지 반드시 명시 한다. “ANOVA 결과가 다르다” 의 흔한 원인이 SS 유형 불일치이다.
9 Python 코드
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
from patsy.contrasts import Sum
# 비직교 데이터 — 셀 표본이 다름
np.random.seed(42)
cells = {
("yes", "yes"): (168, 8, 20), # mean, sd, n
("yes", "no"): (186, 8, 5),
("no", "yes"): (188, 8, 5),
("no", "no"): (190, 8, 20),
}
records = []
for (drug, bf), (mean, sd, n) in cells.items():
sbp = np.random.normal(mean, sd, n).round(0)
for v in sbp:
records.append({"drug": drug, "bf": bf, "sbp": v})
data = pd.DataFrame(records)
# Cell summary
print("Cell sizes & means:")
print(data.groupby(["drug", "bf"])["sbp"].agg(["count", "mean", "std"]).round(2))
# Type III 를 위한 sum-to-zero coding
model = ols("sbp ~ C(drug, Sum) * C(bf, Sum)", data=data).fit()
# 세 유형 비교
print("\n=== Type I SS (sequential, drug first) ===")
print(sm.stats.anova_lm(model, typ=1).round(2))
print("\n=== Type II SS (hierarchical) ===")
print(sm.stats.anova_lm(model, typ=2).round(2))
print("\n=== Type III SS (marginal) ===")
print(sm.stats.anova_lm(model, typ=3).round(2))
# Type I 순서 변경
model_b_first = ols("sbp ~ C(bf, Sum) * C(drug, Sum)", data=data).fit()
print("\n=== Type I SS (sequential, bf first) ===")
print(sm.stats.anova_lm(model_b_first, typ=1).round(2))기대 결과 — 비직교 설계에서 Type I 이 순서에 따라 다르고, Type II/III 가 비슷하지만 다른 값을 가진다. 직교 (등표본) 설계로 바꾸면 세 유형이 모두 일치한다.
10 결정 절차
설계가 직교 (등표본) 인가?
├── Yes → 세 유형 모두 동일. 어느 것을 써도 무방.
└── No → 셀 표본이 모집단 비율을 반영하는가?
├── Yes (드물게) → Type I 또는 weighted
└── No → Type III (default 권장)
└── 단, 상호작용이 0 이라는 사전 가정이 강하면 Type II
Type I 과 Type III 의 결과가 크게 다르면 비직교성이 심각한 것이다. 이 경우 단순히 한 유형의 결과를 채택하기보다, 셀 표본 불균등의 원인 을 검토한다 (랜덤 손실? selection bias? 모집단 비율?). 원인에 따라 적절한 SS 유형이 달라진다.
11 결측 셀 (empty cell)
표본이 0 인 셀이 있으면 일부 효과가 식별 불가능 (non-identifiable). 분석 옵션:
- 결측 셀을 모형에서 제외 후 partial factorial 로 분석 (자유도 손실).
- NULL hypothesis 를 cell 평균 단위로 재정의 하고 가능한 가설만 검정.
- 새 데이터 수집 으로 균형 회복.
자동 ANOVA 표는 결측 셀을 만나면 NaN 또는 오류를 낸다. 사전에 셀 표본 점검 필수.
12 가정과 한계 — 종합
- 비직교 설계 = 셀 표본 불균등: 직교 설계는 표본 균등으로 만든다.
- 상호작용 가정: Type II 는 “상호작용 = 0” 가정에 의존, Type III 는 가정 없음.
- Coding 일관성: Type III 는 sum-to-zero (effect) coding 필수. treatment coding 결과는 무의미.
- 검정력 손실: 비직교 설계는 직교 대비 검정력이 낮다. 가능한 한 균형 설계를 유지하는 것이 우선.
13 관련 주제
선행 지식
후속 주제
- G-MAX7-4: 효과 크기·검정력
- G-MAX9 — ANCOVA (작성 예정) — covariate 통제의 비직교 형태
다른 카테고리 연결
- Causal Inference — 교란 — partial SS 의 인과 lens 해석
- Statistics — SLR BLUE — 최소제곱과 partial SS 의 회귀 표현