ANCOVA 모형과 회귀 동질성 가정 — 모형 비교 lens 의 정수

Maxwell Ch.9.1 ANCOVA Linear Model · Homogeneity of Regression

ANCOVA 의 선형 모형, 모형 비교 (Full vs Restricted) 를 통한 처치 효과 SS 정의, 회귀 동질성 (homogeneity of regression slopes) 가정의 검정·시각적 점검 절차를 정리한다. 가정 위반 시 alternative analysis 의 진입점도 다룬다.

Experimentation
DOE
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: ANCOVA 의 선형 모형

처치 그룹 \(j = 1, \ldots, a\), 그룹 내 피험자 \(i = 1, \ldots, n\) 에 대해

\[ Y_{ij} = \mu + \alpha_j + \beta(X_{ij} - \bar X) + \varepsilon_{ij} \]

제약: \(\sum_j \alpha_j = 0\), \(\varepsilon \sim N(0, \sigma^2)\) iid.

가정: 1. 선형성: \(X\)\(Y\) 의 관계가 선형. 2. 회귀 동질성: 모든 그룹이 같은 기울기 \(\beta\) 를 가진다. 3. 공변량의 처치 전 측정: \(X\) 가 처치에 영향받지 않음. 4. 정규성·등분산: \(\varepsilon\) 의 표준 가정. 5. 공변량 측정 무오차: \(X\) 가 신뢰성 있게 측정됨 (위반 시 attenuation bias).

2 모형 비교 — 처치 효과 검정

ANCOVA 의 처치 효과 \(\alpha_j\) 의 통계적 유의성 검정은 두 모형의 SSE 차이.

모형 자유도
Full (ANCOVA) \(Y = \mu + \alpha_j + \beta(X - \bar X) + \varepsilon\) \(N - a - 1\)
Restricted (Reg only) \(Y = \mu + \beta(X - \bar X) + \varepsilon\) \(N - 2\)

\[ SS_{\text{treatment} | X} = E_{\text{Restricted}} - E_{\text{Full}} \]

자유도 \(a - 1\). \(F\) 통계량: \[ F = \frac{SS_{\text{treatment} | X} / (a-1)}{MS_W^{\text{ANCOVA}}} \]

이는 “공변량 \(X\) 를 통제한 후의 처치 효과” 를 검정한다.

3 회귀 동질성 검정

회귀 동질성 = 모든 그룹의 \(\beta\) 가 같다는 가정. 검정은 모형 비교:

모형 자유도
동질성 ANCOVA \(Y = \mu + \alpha_j + \beta(X - \bar X) + \varepsilon\) \(N - a - 1\)
이질성 ANCOVA \(Y = \mu + \alpha_j + \beta_j(X - \bar X) + \varepsilon\) \(N - 2a\)

\[ SS_{\text{slope difference}} = E_{\text{동질}} - E_{\text{이질}} \]

자유도 \(a - 1\). \(F\) 통계량: \[ F_{\text{slope}} = \frac{SS_{\text{slope difference}} / (a-1)}{MS_W^{\text{이질}}} \]

비유의 (\(p > 0.05\)) 면 동질성 가정을 받아들이고 ANCOVA 진행. 유의면 alternative analysis (G-MAX9-3).

함정: 회귀 동질성 검정의 두 가지 한계
  1. 검정력 부족: 자유도가 \(a-1\) 의 작은 효과 — 비유의가 “동질성 보장” 이 아닐 수 있음.
  2. 사후 검정: 동질성 검정 후 ANCOVA 진행은 multistep 절차로 Type I error 가 부풀려짐.

권장: 시각적 점검 (그룹별 scatterplot + 회귀선) 을 항상 동반. 기울기가 명백히 다르면 검정 결과와 무관하게 alternative 사용.

4 가설 데이터 — 3 그룹 ANCOVA

처치: 약 A, 약 B, 위약. 각 \(n = 10\). 공변량 \(X\) = baseline SBP, 응답 \(Y\) = 6 주 후 SBP.

그룹 \(\bar X_j\) \(\bar Y_j\)
A 165 145
B 158 152
Control 162 160

전체 \(\bar X = 161.7\), \(\bar Y = 152.3\). 모집된 회귀 기울기 \(\hat\beta = 0.5\) (가설).

4.1 Step 1 — ANOVA (X 무시)

\[ SS_{\text{treatment}}^{\text{ANOVA}} = n \sum_j (\bar Y_j - \bar Y)^2 \] \[ = 10[(145-152.3)^2 + (152-152.3)^2 + (160-152.3)^2] \] \[ = 10[53.3 + 0.09 + 59.3] = 1126.7 \]

4.2 Step 2 — ANCOVA

\(\bar Y_j^{\text{adj}} = \bar Y_j - \hat\beta(\bar X_j - \bar X)\):

그룹 adj
A \(145 - 0.5 \times 3.3 = 143.4\)
B \(152 - 0.5 \times (-3.7) = 153.9\)
Control \(160 - 0.5 \times 0.3 = 159.9\)

\(\bar Y^{\text{adj}} = 152.4\) (≈ grand mean).

\[ SS_{\text{treatment} | X} = n \sum_j (\bar Y_j^{\text{adj}} - \bar Y)^2 \] \[ = 10[(143.4-152.3)^2 + (153.9-152.3)^2 + (159.9-152.3)^2] \] \[ = 10[79.2 + 2.6 + 57.8] = 1396 \]

(가설 데이터 — baseline 보정 후 처치 효과가 더 크게 잡힌다.)

ANCOVA 의 \(MS_W\) 는 ANOVA 보다 작다 (공변량 통제로 분산 감소). 두 효과가 결합되어 ANCOVA 의 \(F\) 가 ANOVA 보다 크다.

5 회귀 동질성 시각적 점검

Y │
  │  *(A, slope=0.5)
  │ *
  │*
  │
  │     o(B, slope=0.6)
  │    o
  │   o
  │
  │       △(C, slope=0.4)
  │      △
  │     △
  │
  └─────────────────── X

세 회귀선의 기울기가 비슷하면 동질성 OK. 명백히 다르면 ANCOVA 부적절.

6 Python 코드

import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols

# 가상 데이터: 3 그룹 ANCOVA
np.random.seed(2026)
groups = ["A", "B", "Control"]
n_per_group = 10
beta_true = 0.5
mu_X = {"A": 165, "B": 158, "Control": 162}
mu_Y_unadjusted = {"A": 145, "B": 152, "Control": 160}

records = []
for g in groups:
    X = np.random.normal(mu_X[g], 5, n_per_group)
    Y = mu_Y_unadjusted[g] + beta_true * (X - mu_X[g]) + np.random.normal(0, 3, n_per_group)
    for x, y in zip(X, Y):
        records.append({"group": g, "X": x, "Y": y})
data = pd.DataFrame(records)

# Step 1 — ANOVA only (X 무시)
anova_model = ols("Y ~ C(group, Sum)", data=data).fit()
print("=== ANOVA (X ignored) ===")
print(sm.stats.anova_lm(anova_model, typ=2).round(3))

# Step 2 — ANCOVA (baseline 통제)
ancova_model = ols("Y ~ C(group, Sum) + X", data=data).fit()
print("\n=== ANCOVA ===")
print(sm.stats.anova_lm(ancova_model, typ=2).round(3))
print(f"\nbeta estimate: {ancova_model.params['X']:.3f} (true = {beta_true})")

# Step 3 — Homogeneity of regression test
ancova_full_model = ols("Y ~ C(group, Sum) * X", data=data).fit()
print("\n=== Homogeneity test (slopes equal across groups?) ===")
hom_anova = sm.stats.anova_lm(ancova_full_model, typ=2)
print(hom_anova.round(3))
slope_int_row = hom_anova.loc["C(group, Sum):X"]
print(f"\nSlope difference F = {slope_int_row['F']:.2f}, p = {slope_int_row['PR(>F)']:.4f}")
if slope_int_row['PR(>F)'] > 0.05:
    print("  → 동질성 가정 OK. ANCOVA 결과 신뢰 가능.")
else:
    print("  → 동질성 위반. alternative analysis (G-MAX9-3) 진행.")

# Adjusted means
mean_X_overall = data["X"].mean()
adj_means = {}
for g in groups:
    sub = data[data["group"] == g]
    adj = sub["Y"].mean() - ancova_model.params["X"] * (sub["X"].mean() - mean_X_overall)
    adj_means[g] = adj
print(f"\nAdjusted means: {adj_means}")
print(f"Unadjusted means: {data.groupby('group')['Y'].mean().to_dict()}")

기대 출력:

=== ANOVA (X ignored) ===
                       sum_sq    df       F  PR(>F)
C(group, Sum)         ~1100   2.0   ~30   ~0.000
Residual               ~500  27.0    ...

=== ANCOVA ===
                       sum_sq    df        F  PR(>F)
C(group, Sum)         ~1300   2.0  ~70.0   ~0.000  (← 더 큰 F!)
X                      ~250   1.0  ~25.0    0.000
Residual               ~250  26.0     ...

=== Homogeneity test ===
slope_int F ≈ 0.5, p ≈ 0.6 → 동질성 OK

7 가정 위반의 결과

7.1 회귀 동질성 위반

처치 효과가 baseline 에 따라 달라진다 (HTE). ANCOVA 의 단일 \(\hat\alpha_j\) 추정은 잘못된 평균. 대안: - Johnson-Neyman 절차: 처치 효과가 유의한 baseline 범위를 식별. - Baseline 별 separate analysis: baseline 을 분위수로 나눠 ANCOVA 적용. - Quantile regression: baseline 의 분위별 효과 추정.

7.2 공변량 측정 오차

\(X\) 에 측정 오차가 있으면 회귀 계수 \(\hat\beta\) 가 attenuated (0 쪽으로 편향). 처치 효과 추정도 영향. 대안: - Errors-in-variables regression (Total Least Squares). - Latent variable model\(X\) 의 측정 변수 여러 개로 latent 추정.

7.3 처치 후 측정 공변량

처치가 \(X\) 에 영향을 미쳤다면 공변량 통제는 처치 효과의 일부를 제거. post-treatment adjustment bias. 절대 피해야 함.

8 가정과 한계 — 종합

  • 선형성: 비선형이면 다항식 또는 변환.
  • 공변량의 처치 전 측정: 필수.
  • 회귀 동질성: 검정 + 시각적 점검.
  • 공변량 측정 무오차 (또는 작음): 측정 오차가 크면 attenuation.
  • 공변량과 처치의 독립: 무작위 배정 RCT 에서 자동, 관찰 연구에서는 selection bias.

9 관련 주제

선행 지식

후속 주제

다른 카테고리 연결

Subscribe

Enjoy this blog? Get notified of new posts by email: