ANOVA 를 모형 비교로 — Ch.3 overview

Maxwell Ch.3: data = fit + residual 의 선언과 모형 비교 프레임워크

분산분석 (ANOVA) 을 모형 비교 (model comparison) 관점으로 재구성한 Maxwell Ch.3 의 흐름을 정리한다. 일반선형모형의 도입, 단일·두 그룹·일반 그룹 상황의 점진적 확장, F 검정의 도출, 효과 크기 측정과 가정 진단까지의 전체 골격을 압축 소개한다.

Experimentation
Fundamentals
저자

Kwangmin Kim

공개

2026년 05월 08일

1 도입 — ANOVA 를 다시 본다

대부분의 통계 입문 교재는 ANOVA 를 분산을 비교하는 검정 으로 소개한다. F 통계량이 “그룹 간 분산 / 그룹 내 분산” 형태이기 때문이다. 그러나 Maxwell & Delaney (2004, Ch.3) 의 시각은 다르다.

“ANOVA 의 기본 목적은 자료에 적합한 선형 모형을 만드는 것이다. 가장 적절한 모형은 가능한 한 단순하면서도 충분한 설명력을 가진 모형이다.” (Maxwell & Delaney, 2004, Ch.3)

이 시각에서 ANOVA 는 분산의 비교 가 아니라 두 모형의 비교 이다. 더 복잡한 모형 (full model) 이 더 단순한 모형 (restricted model) 보다 충분히 더 잘 적합하는가를 묻는 절차이다.

이 글은 Maxwell Ch.3 의 흐름을 압축하고, 후속 5 편 (A-MAX3-1~5) 의 안내 역할을 한다.

정의: 모형 비교 (Model Comparison) 관점의 ANOVA

ANOVA 의 본질은 다음과 같다.

\[ \text{F} \propto \frac{(\text{restricted model 오차}) - (\text{full model 오차})}{\text{full model 오차}} \]

제한 모형이 전체 모형보다 얼마나 더 큰 오차를 내는가 를 자유도로 정규화한 비율이다. F 가 클수록 제한 모형이 부족하다는 증거이며, 이는 그룹 간 차이가 있다는 뜻이다.

  • Restricted model: 모든 그룹이 같은 평균 (\(H_0\))
  • Full model: 그룹마다 다른 평균 (\(H_1\))
  • F 의 분자: 두 모형 오차의 차이
  • F 의 분모: full model 의 잔차 분산

2 Tukey 의 한 마디 — data = fit + residual

Ch.3 의 출발점은 John Tukey (1977) 의 단순한 표현이다.

\[ \text{data} = \text{fit} + \text{residual} \]

자료 = 모형이 설명한 부분 + 설명하지 못한 부분. 이 분해는 모든 통계 모형의 토대다.

직관 — Tukey 표현의 깊이

이 한 줄이 깊은가? 통계 분석은 본질적으로 불확실성 속에서 신호를 찾는 작업이다. 자료에는 진짜 효과 (signal) 와 무작위 변동 (noise) 이 섞여 있다. 모형은 그중 일부 패턴을 fit 으로 떼어내고, 나머지를 residual 로 남긴다.

좋은 모형은 다음 두 조건을 만족한다.

  1. fit 이 충분 — 자료의 의미 있는 패턴을 설명한다.
  2. residual 이 무작위 — 남은 부분에 패턴이 없어야 한다 (시계열성, 분산 차이, 비대칭이 잔류하면 모형이 부족한 것이다).

ANOVA, 회귀, GLM, 혼합 모형 등 모든 선형 모형이 이 두 조건을 만족하는 fit 을 찾는 절차이다. Tukey 의 표현은 이 골격을 한 줄로 압축한 것이다.

이 분해를 수식으로 쓰면 일반선형모형 (general linear model) 이 된다.

\[ Y_i = \beta_0 X_{0i} + \beta_1 X_{1i} + \cdots + \beta_p X_{pi} + \varepsilon_i \]

  • \(Y_i\): \(i\) 번째 관측의 종속 변수
  • \(X_{ji}\): \(i\) 번째 관측의 \(j\) 번째 예측 변수
  • \(\beta_j\): 예측 변수의 효과 (모집단 모수)
  • \(\varepsilon_i\): 잔차 (무작위 변동)

이 한 식이 t 검정, 일원 ANOVA, 다원 ANOVA, 회귀, ANCOVA 까지 모두 특수 사례 로 포함한다. Maxwell 의 모형 비교 관점은 이 보편성을 활용한다.

3 Ch.3 의 흐름 — 6 편 안내

Maxwell Ch.3 는 단순한 사례에서 일반 사례로 점진적으로 확장한다. 이 점진성이 후속 6 편의 분할 기준이다.

Ch.3.1  GLM 도입 + One-Group + Two-Group  (A-MAX3-1)
       ↓
Ch.3.2  General Case + Full vs Restricted  (A-MAX3-2)
       ↓
Ch.3.3  F-test 도출 + Effect Size            (A-MAX3-3)
       ↓
Ch.3.4  통계적 가정 + Levene 검정             (A-MAX3-4)
       ↓
Ch.3.5  Robust Methods (Welch, Kruskal)      (A-MAX3-5)

각 단계가 다음 단계로 이어지는지가 핵심이다.

단계 단계의 한계 다음 단계의 도입
1: GLM + One/Two-Group t 검정 수준에 머묾 그룹 수가 임의로 일반화 필요
2: General Case 검정 절차 미정 F 통계량 도출 필요
3: F-test + Effect Size 추론은 가정에 의존 가정 위반 진단 필요
4: Assumptions + Levene 위반 시 대안이 없음 Robust 방법 필요
5: Robust Methods 다음 챕터로 확장 Ch.4 (대비) 로

4 One-Group 부터 시작하는 이유

Maxwell 은 ANOVA 를 세 그룹 이상 의 검정으로 시작하지 않는다. 한 그룹 의 평균 추정부터 시작한다. 왜 그런가?

답은 모형 비교 의 논리를 가장 단순한 사례에서 보여주기 위해서다. 한 그룹이라도 두 모형이 가능하다.

  • Full model: \(Y_i = \mu + \varepsilon_i\) — 평균 \(\mu\) 를 추정한다
  • Restricted model: \(Y_i = \mu_0 + \varepsilon_i\)\(\mu = \mu_0\) 으로 고정 (예: \(\mu_0 = 100\))

이 두 모형의 오차 차이를 비교하면 one-sample t 검정 이 된다. 즉 t 검정도 사실은 모형 비교 다. 이 통찰이 한 그룹 → 두 그룹 → 여러 그룹으로 자연스럽게 일반화된다.

직관 — 왜 모형 비교가 ANOVA 의 본질인가

전통적으로 ANOVA 를 가르치면 다음 식이 등장한다.

\[ F = \frac{MS_{between}}{MS_{within}} \]

학생이 이 식을 분산비 로 이해한다. 그러나 이 비율이 검정에 적합한가는 잘 설명되지 않는다.

모형 비교 시각은 답을 준다. \(MS_{between}\)제한 모형이 추가로 만드는 오차 다. 제한 모형은 모든 그룹이 같은 평균이라 가정하므로, 그룹 간 실제 차이를 잔차로 떠넘긴다. 이 떠넘기는 양\(MS_{between}\) 이다.

\(MS_{within}\)full model 이 여전히 설명하지 못하는 오차 다. 이는 그룹 차이를 허용한 후에도 남는 무작위 변동이다.

따라서 F 가 클수록 “그룹 차이를 허용하지 않으면 모형이 추가로 큰 오차를 낸다” 는 뜻이고, 이는 그룹 차이가 실재한다는 증거다. 이 해석이 분산비 해석보다 F 가 검정에 적합한지를 직접 설명한다.

5 최소제곱 추정 — Why 와 How

GLM 의 모수 \(\beta\) 를 어떻게 추정하는가? 답은 최소제곱 (least squares) 이다.

정의: 최소제곱 추정 (Least Squares Estimation)

잔차 제곱합을 최소화하는 모수 값을 선택하는 절차이다.

\[ \widehat{\boldsymbol{\beta}} = \arg\min_{\boldsymbol{\beta}} \sum_{i=1}^{n} (Y_i - \widehat{Y}_i)^2 \]

일원 ANOVA 의 한 그룹 사례에서는 \(\widehat{\mu} = \bar{Y}\) 가 최소제곱 추정량이다. 이 결과가 Ch.3 §Optional 절에서 대수적으로 증명된다.

최소제곱이 자연스러운가? 세 가지 이유가 있다.

  1. 편향 없음 (unbiased) — 평균적으로 정확한 모수 값을 준다.
  2. 최소 분산 (minimum variance) — Gauss-Markov 정리: 선형 비편향 추정량 중 분산이 가장 작다.
  3. 계산이 단순 — 미분으로 닫힌 해가 나온다.

이 3 가지가 19 세기 이후 통계학에서 최소제곱이 표준이 된 이유다.

6 F 검정의 일반 형태

Ch.3.3 에서 다룰 F 통계량의 일반 형태는 다음과 같다.

\[ F = \frac{(\text{SSE}_R - \text{SSE}_F) / (\text{df}_R - \text{df}_F)}{\text{SSE}_F / \text{df}_F} \]

  • \(\text{SSE}_R\): restricted model 의 잔차 제곱합
  • \(\text{SSE}_F\): full model 의 잔차 제곱합
  • \(\text{df}_R\), \(\text{df}_F\): 각 모형의 잔차 자유도

이 식은 t 검정, 일원 ANOVA, 다원 ANOVA, 대비 검정, 회귀의 부분 F 검정 등을 모두 포함한다. 각 검정은 full / restricted model 의 정의가 다를 뿐, 수식 형태는 동일하다.

7 효과 크기 — η², ω², Cohen’s d

p 값만으로 결과 보고가 부족하다는 사실은 A-MAX2-2 에서 다뤘다. ANOVA 결과 보고에서 표준 효과 크기는 다음 3 가지다.

지표 정의 해석
\(\eta^2\) (eta squared) \(\text{SS}_{between} / \text{SS}_{total}\) 표본 기준 설명 분산 비율
\(\omega^2\) (omega squared) 모집단 분산 비율 추정 \(\eta^2\) 의 편향 보정
Cohen’s \(d\) 두 평균 차이 / 풀링된 표준편차 두 그룹 비교에 특화

\(\eta^2\)표본 에서의 비율이라 \(n\) 이 작으면 과대 추정된다. \(\omega^2\) 가 모집단 추정으로서 더 정확하지만 직관이 약하다. Cohen’s \(d\) 는 두 그룹 비교에 가장 직관적이다. 자세한 비교는 후속 글 A-MAX3-3 에서 다룬다.

직관 — 효과 크기의 일상 비유

효과 크기 0.2, 0.5, 0.8 (Cohen 의 small/medium/large 기준) 이 체감되는 차이를 일상 사례로 변환하면 다음과 같다.

Cohen’s \(d\) 의미 일상 비유
0.2 (small) 분포 80 % 중첩 14~15 세 남녀 키 차이
0.5 (medium) 분포 67 % 중첩 16 세 vs 18 세 남자 키 차이
0.8 (large) 분포 53 % 중첩 13 세 vs 18 세 남자 키 차이

\(d = 0.2\)통계적으로 검출 가능하지만 일상적으로 거의 구별되지 않는 크기다. A/B 테스트의 0.1 % 효과는 \(d\) 로 환산하면 매우 작은 값이라, 큰 표본 (\(n > 10^6\)) 만이 신뢰성 있게 잡아낼 수 있다.

8 통계적 가정 — F 검정의 작동 조건

ANOVA F 검정이 정확히 작동하려면 다음 3 가정이 필요하다.

  1. 정규성 (Normality) — 각 그룹 내 종속 변수가 정규 분포
  2. 등분산성 (Homogeneity of variance) — 모든 그룹의 분산이 동일
  3. 독립성 (Independence) — 관측값이 서로 독립

A-MAX2-3 에서 보았듯이 정규성은 CLT 로 완화되고, 등분산성은 Welch’s F 로 완화된다. 그러나 독립성 위반은 분산 추정을 직접 망가뜨려 대안이 어렵다. 클러스터 자료는 혼합 모형으로 다뤄야 한다.

가정 진단 절차:

가정 진단 도구
정규성 Q-Q plot, Shapiro-Wilk test
등분산성 Levene’s test, Brown-Forsythe test
독립성 자기상관 점검, Durbin-Watson

자세한 진단은 A-MAX3-4 에서 다룬다.

9 Robust 방법 — 가정이 깨질 때

가정 위반에 대한 강건 (robust) 대안:

위반 강건 대안 원리
등분산 Welch’s F 그룹별 분산 분리
정규성 Brown-Forsythe 평균 대신 중앙값
정규성 (전체) Kruskal-Wallis 순위 변환
모든 가정 약화 Bootstrap, Permutation 분포 가정 없음

이 대안들은 검정력 트레이드오프가 있다. 가정이 충족되면 표준 ANOVA 가 가장 강력하지만, 위반 시 robust 대안이 신뢰성을 보장한다. 자세한 내용은 A-MAX3-5 에서 다룬다.

10 자료 시각화 — 모든 분석의 첫걸음

Maxwell 이 Ch.3 도입에서 강조하는 점은 다음 한 줄로 요약된다.

“어떤 통계량을 계산하기 전에, 자료를 먼저 보라” (Wilkinson et al., 1999, p. 597, APA Task Force).

3 그룹 설계 사례에서 30 명의 개별 점수 를 산점도로 표시한 것이 Ch.3 의 첫 그림이다. 평균과 표준편차로 요약하기 전에 개별 자료를 들여다보면 다음을 발견할 수 있다.

  • 자료 입력 오류·이상치
  • 분포 형태 (정규? 비대칭? 다봉?)
  • 그룹 간 분산 차이 (등분산 가정의 사전 점검)
  • 천장·바닥 효과 (척도 한계)

이 사전 시각화 단계가 모형 선택 의 첫걸음이다. 검정 결과만 보는 것은 자료의 풍부함을 무시하는 것이다.

11 ANOVA 의 응용 영역

ANOVA 는 거의 모든 실험 분야에서 사용된다.

분야 사례 그룹
임상 의학 약물 용량 비교 위약 / 저용량 / 중용량 / 고용량
교육학 교습법 비교 강의 / 토론 / 자율학습
마케팅 광고 카피 비교 카피 A / B / C / D
IT A/B 테스트 다중 변형 비교 Variant 0 / 1 / 2 / 3
농업 비료 종류 비료 1 / 2 / 3 / 4 / 무비료
산업 공학 공정 조건 온도 / 압력 / 시간

A/B 테스트가 2 그룹 비교라면, 이 영역들은 종종 3 개 이상 의 그룹을 비교한다. 이때 t 검정의 단순 반복은 다중 비교 문제를 만든다 (A-MAX2-2 의 peeking 비유와 같은 구조). ANOVA 가 전체적인 차이 를 한 번의 검정으로 다루어 이 문제를 회피한다.

12 후속 — Ch.4 와 Ch.5 의 예고

ANOVA F 검정이 유의하면 “어딘가에 차이가 있다” 는 결론은 얻지만 어느 그룹 사이 인지는 모른다. 이를 답하는 것이 대비 (contrast) 분석이며 Maxwell Ch.4 의 주제다. 그리고 여러 대비를 동시에 수행할 때 발생하는 다중 비교 문제가 Ch.5 의 주제다.

따라서 Ch.3 → Ch.4 → Ch.5 는 다음 흐름을 형성한다.

Ch.3 — 차이가 있는가? (전체 F 검정)
   ↓
Ch.4 — 어디에 차이가 있는가? (개별 대비)
   ↓
Ch.5 — 다중 비교에서 α 를 어떻게 통제하는가?

이 흐름이 후속 글 (A-MAX4-, A-MAX5-) 에서 다뤄진다.

13 ANOVA 의 역사 — Fisher 의 농업 시험

Rothamsted 의 ANOVA 탄생

Fisher 가 1919~1933 Rothamsted 농업 시험장에서 통계 자문 활동:

  • 1919 부임: 70 년 + 농업 자료 처리
  • 1925: Statistical Methods for Research Workers 출판 — ANOVA 도입
  • 1935: The Design of Experiments — RCT, 무작위 배정, 블록 설계 정립

ANOVA 의 본질은 변동의 분해:

“각 변동의 원인 을 정량화하여 처치 효과 를 분리한다.” (Fisher 1925)

13.1 농업 사례

시험: 4 가지 비료의 작물 수확량 비교
Plot: 16 개 (각 비료에 4 plot 씩 무작위)
Outcome: 수확량 (kg/plot)

ANOVA:
  SS_total: 모든 plot 의 변동 (2400)
  SS_between: 비료 그룹 간 변동 (1500)
  SS_within: 같은 비료 내 변동 (900)

  F = (1500/3) / (900/12) = 500 / 75 = 6.67
  → p < 0.01 → 비료 차이 유의

이 분석이 현대 ANOVA 의 원형. 같은 골격이 100 년 후 A/B 테스트에도 적용.

14 ANOVA 의 직관적 이해

직관 — “분산을 분석한다” 의 의미

ANOVA 의 본질을 물리적 비유 로 이해:

자료의 변동 = 총 에너지. 이 에너지가 두 부분으로 분해:

  • 처치 에너지 (between) — 그룹 평균이 전체 평균에서 멀리 있을 때 큼
  • 잔차 에너지 (within) — 같은 그룹 내 자료가 평균에서 멀리 있을 때 큼

비료 시험의 직관:

  • 모든 비료의 효과가 같으면 그룹 평균이 비슷 → between 에너지 작음 → F 작음 → 효과 없음
  • 한 비료가 압도적 이면 그 그룹 평균이 멀리 있음 → between 에너지 큼 → F 큼 → 효과 있음

A/B 테스트에서 4 변형의 매출 비교도 같은 구조. 변형 간 평균 매출 차이의 에너지 가 잔차 에너지보다 충분히 크면 효과 인정.

15 ANOVA 가정의 시각적 진단

15.1 Q-Q Plot (정규성)

import numpy as np
import scipy.stats as stats
# import matplotlib.pyplot as plt

np.random.seed(42)
group_A = np.random.normal(5, 1, 30)

# Q-Q plot
# fig, ax = plt.subplots()
# stats.probplot(group_A, dist='norm', plot=ax)
# 직선 = 정규

15.2 Residual vs Fitted Plot (등분산성)

# OLS 잔차 vs 적합값
# 패턴 없으면 OK. 깔때기 모양이면 이분산성.

15.3 Residual Histogram (정규성)

# 잔차 분포의 정규성

이 3 가지 시각이 가정 진단의 핵심.

16 ANOVA 의 변형 — 분야별

분야 일반 사용
농업 일원 + 블록 + 요인
임상시험 일원 + ANCOVA
심리학 요인 + 반복 측정
교육학 Mixed model + cluster
마케팅 일원 + 요인
A/B 테스트 일원 (다중 변형)

각 분야의 전형적 자료 구조 가 ANOVA 변형 선택을 결정.

17 ANOVA 와 회귀의 통합

ANOVA = 회귀 (특수 사례)

Maxwell 의 핵심 통찰: ANOVA 는 그룹 dummy 변수의 회귀 와 동등.

ANOVA (J 그룹):  Y_ij = μ_j + ε_ij
회귀 (J-1 dummy):  Y_i = β_0 + β_1 X_1 + β_2 X_2 + ... + β_{J-1} X_{J-1} + ε_i

같은 분석. F 검정 결과 동일.

이 통합 시각이 ANOVA, ANCOVA, GLM, MLM 모두를 회귀의 변형 으로 이해.

17.1 사례

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

# 같은 자료의 ANOVA vs 회귀
df = pd.DataFrame({
    'group': ['A']*10 + ['B']*10 + ['C']*10,
    'value': np.concatenate([
        np.random.normal(5, 1, 10),
        np.random.normal(6, 1, 10),
        np.random.normal(7, 1, 10)
    ])
})

# ANOVA
model_anova = ols('value ~ C(group)', data=df).fit()
print("ANOVA F-test:")
print(sm.stats.anova_lm(model_anova))

# Dummy 회귀 (동일 결과)
df['group_B'] = (df['group'] == 'B').astype(int)
df['group_C'] = (df['group'] == 'C').astype(int)
model_reg = ols('value ~ group_B + group_C', data=df).fit()
print(f"\nF-statistic (회귀): {model_reg.fvalue:.3f}")
print(f"F-statistic (ANOVA): {sm.stats.anova_lm(model_anova)['F'].iloc[0]:.3f}")

두 결과 동일.

18 코드 예시 — 일원 ANOVA 의 한 줄 구현

import numpy as np
import pandas as pd
from scipy.stats import f_oneway, levene
import statsmodels.api as sm
from statsmodels.formula.api import ols

# 시뮬레이션: 3 그룹 mood induction 자료 (Ch.3 그림 3.1 모방)
np.random.seed(42)
group_A = np.random.normal(5.5, 1.0, 10)  # Pleasant
group_B = np.random.normal(4.0, 1.0, 10)  # Neutral
group_C = np.random.normal(2.5, 1.0, 10)  # Unpleasant

# 1. 기본 ANOVA — scipy
f_stat, p_value = f_oneway(group_A, group_B, group_C)
print(f"F = {f_stat:.3f}, p = {p_value:.4f}")

# 2. 통합 모형 비교 — statsmodels
data = pd.DataFrame({
    'score': np.concatenate([group_A, group_B, group_C]),
    'group': ['A']*10 + ['B']*10 + ['C']*10
})
model_full = ols('score ~ C(group)', data=data).fit()
model_restricted = ols('score ~ 1', data=data).fit()
print(f"Full model SSE: {model_full.ssr:.2f}")
print(f"Restricted SSE: {model_restricted.ssr:.2f}")
print(f"F-test: {sm.stats.anova_lm(model_restricted, model_full)}")

# 3. 등분산 가정 진단 — Levene
stat, p_levene = levene(group_A, group_B, group_C)
print(f"Levene's test: stat = {stat:.3f}, p = {p_levene:.4f}")

# 4. 효과 크기 (η²)
ss_total = ((data['score'] - data['score'].mean())**2).sum()
ss_between = sum(len(g) * (g.mean() - data['score'].mean())**2
                 for g in [group_A, group_B, group_C])
eta_squared = ss_between / ss_total
print(f"η² = {eta_squared:.3f}")

이 코드의 핵심은 마지막 부분이다. F 통계량을 분산비로 직접 계산하지 않고, 두 모형 (full, restricted) 의 잔차 제곱합 (SSE) 차이로 계산한다. 이것이 모형 비교 관점이다.

19 정리

Maxwell Ch.3 의 6 단계 흐름:

  1. GLM 도입 — data = fit + residual 의 일반화
  2. One-Group → Two-Group → 일반 그룹의 점진적 확장
  3. F 검정의 도출 — restricted 와 full model 의 SSE 비교
  4. 효과 크기로 보고 강화
  5. 가정 (정규성·등분산·독립성) 진단
  6. Robust 대안 (Welch, Kruskal-Wallis 등)

이 6 단계가 후속 5 편 (A-MAX3-1 ~ A-MAX3-5) 에서 자세히 다뤄진다. 각 단계는 다음 단계가 필요한지를 명확히 보여주는 구조다.

20 관련 주제

선행 지식

후속 주제 (Phase A)

다른 카테고리 연결

Subscribe

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