1 Multiple Covariate ANCOVA
여러 covariate \(X_1, X_2, \ldots, X_p\) 를 동시에 통제:
\[ Y_{ij} = \mu + \tau_j + \sum_{q=1}^p \gamma_q (X_{q,ij} - \bar X_q) + \varepsilon_{ij} \]
각 \(\gamma_q\) 의 추정량이 다른 covariate 를 통제한 후의 회귀 계수 (partial regression coefficient).
2 다중공선성 검토
다중 covariate 가 서로 강한 상관 (multicollinearity) 을 가지면: - 각 \(\hat\gamma_q\) 의 분산 ↑. - 회귀 계수의 부호 변동 (sign instability). - 단일 covariate 모형보다 결과 부정확.
진단: - VIF (Variance Inflation Factor): \(VIF_q = 1/(1 - R_q^2)\) (\(R_q^2\) = 다른 covariate 로 \(X_q\) 회귀의 결정계수). VIF > 10 이면 심각. - 상관 행렬: covariate 간 상관 계수 > 0.9 이면 의심. - Condition number: 행렬 \(\mathbf{X}^T \mathbf{X}\) 의 최대/최소 eigenvalue 비율.
해결: 1. Covariate 선택: 가장 정보 많은 것만 선택. 2. 주성분 분석 (PCA): 직교 방향으로 변환. 3. Ridge regression: 정규화로 안정.
3 가설 사례 — 동물 사료 실험
3.1 실험
3 사료 (A, B, C) × 20 마리 동물. \(Y\) = 6 주 후 체중. covariate: - \(X_1\): 초기 체중. - \(X_2\): 사료 섭취량 (자유 식이).
가상 결과:
| Source | \(SS\) | \(df\) | \(F\) | \(p\) |
|---|---|---|---|---|
| 사료 (adjusted) | 50 | 2 | 12.5 | \(<0.001\) |
| \(X_1\) (초기 체중) | 800 | 1 | 200 | \(<0.001\) |
| \(X_2\) (식이량) | 300 | 1 | 75 | \(<0.001\) |
| 잔차 | 220 | 55 | 4 | — |
두 covariate 모두 강한 효과. 사료 효과는 covariate 통제 후 검정.
3.2 Multicollinearity 점검
\(X_1, X_2\) 의 상관 = 0.45. VIF \(\approx 1/(1-0.2) = 1.25\). OK (10 미만).
4 Two Ancillary Variates 의 분석
statsmodels 또는 R lm:
각 covariate 의 partial regression coefficient.
5 Stepwise Selection 의 위험
다중 covariate 중 일부만 선택하는 stepwise (forward, backward) 의 위험:
- Type I error 부풀림: 여러 모델 검토로 false positive.
- 모형 instability: 작은 데이터 변동으로 다른 covariate 선택.
- Coefficient bias: 선택된 covariate 의 계수가 over-estimate.
권장: - Pre-specified covariate: 도메인 지식으로 사전 결정. - All covariates: 모두 포함 (유의 여부 무관). - Cross-validation: 모델 선택의 robust 절차.
6 비직교 Two-Way + Multi-Covariate
복잡 사례: 비균등 셀 + 두 covariate. Type III SS 권장.
7 Python 코드
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
from statsmodels.stats.outliers_influence import variance_inflation_factor
np.random.seed(2026)
treatments = ["A", "B", "C"]
n = 20
treat_eff = {"A": 0, "B": 3, "C": -2}
gamma_X1 = 0.8 # 초기 체중의 회귀 계수
gamma_X2 = 0.5 # 식이량의 회귀 계수
records = []
for t in treatments:
for _ in range(n):
X1 = np.random.normal(50, 5) # 초기 체중
X2 = np.random.normal(100, 10) + 0.4 * X1 # 식이량 (X1 와 약간 상관)
Y = (60 + treat_eff[t] + gamma_X1 * (X1 - 50) + gamma_X2 * (X2 - 100)
+ np.random.normal(0, 2))
records.append({"treatment": t, "X1": X1, "X2": X2, "Y": Y})
data = pd.DataFrame(records)
# Multiple covariate ANCOVA
model = ols("Y ~ C(treatment) + X1 + X2", data=data).fit()
print("=== Multiple Covariate ANCOVA ===")
print(sm.stats.anova_lm(model, typ=2).round(3))
print(model.summary().tables[1])
# VIF check
X = data[["X1", "X2"]].values
vif = [variance_inflation_factor(X, i) for i in range(2)]
print(f"\nVIF: X1 = {vif[0]:.2f}, X2 = {vif[1]:.2f}")
print("=> Multicollinearity 심각 (VIF > 10)" if max(vif) > 10 else "=> OK")
# Correlation
corr = data[["X1", "X2"]].corr()
print(f"\nCorrelation matrix:\n{corr.round(3)}")8 가정과 한계
- 다중공선성: VIF 점검.
- 공변량 효과의 선형성: 각 covariate 가 응답에 선형.
- 회귀 동질성: 모든 처치 그룹이 같은 \(\gamma_q\).
- 공변량 수의 trade-off: 너무 많으면 자유도 손실, 너무 적으면 잡음 못 흡수.
9 응용
| 분야 | 처치 | 다중 공변량 |
|---|---|---|
| 임상 | 약 | baseline + age + sex |
| 농학 | 비료 | 토양 비옥도 + 강수 + 일조 |
| 산업 | 공정 | machine calibration + 온도 + 습도 |
| 교육 | 교수법 | IQ + 사전 시험 + SES |
| ML | 모델 | dataset size + complexity + balance |
10 ML 매핑
ML 모델 평가에서:
Treatment: 모델 (A, B, C)
Covariate 1: dataset size
Covariate 2: dataset complexity
Covariate 3: dataset balance
분석: \[ \text{accuracy}_{ij} = \mu + \tau_j + \gamma_1 \text{size} + \gamma_2 \text{complexity} + \gamma_3 \text{balance} + \varepsilon \]
각 dataset 특성을 통제한 후 모델 효과 검정. systematic comparison.
VIF 점검 필수 — covariate 간 상관 (큰 dataset 이 흔히 더 복잡).
11 본 시리즈
G-MON8-0 개관
G-MON8-1 ANCOVA + RBD
G-MON8-2 CRD/Latin/비직교
G-MON8-3 비직교 + Multi-Covariate ← 현재 글
G-MON8-4 결측과 변환
12 관련 주제
선행 지식
후속 주제
다른 카테고리 연결
- Math — 선형대수 (placeholder) — VIF, condition number
13 더 읽을 거리
- Cochran, W. G., Cox, G. M. (1957). “Experimental Designs” (2nd ed). Wiley.
- Cohen, J., Cohen, P., West, S. G., Aiken, L. S. (2003). “Applied Multiple Regression/Correlation Analysis for the Behavioral Sciences” (3rd ed). Lawrence Erlbaum.
- Belsley, D. A., Kuh, E., Welsch, R. E. (1980). “Regression Diagnostics: Identifying Influential Data and Sources of Collinearity.” Wiley.
- Maxwell, S. E., Delaney, H. D. (2004). “Designing Experiments and Analyzing Data.”