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) 의 안내 역할을 한다.
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} \]
자료 = 모형이 설명한 부분 + 설명하지 못한 부분. 이 분해는 모든 통계 모형의 토대다.
이 한 줄이 왜 깊은가? 통계 분석은 본질적으로 불확실성 속에서 신호를 찾는 작업이다. 자료에는 진짜 효과 (signal) 와 무작위 변동 (noise) 이 섞여 있다. 모형은 그중 일부 패턴을 fit 으로 떼어내고, 나머지를 residual 로 남긴다.
좋은 모형은 다음 두 조건을 만족한다.
- fit 이 충분 — 자료의 의미 있는 패턴을 설명한다.
- 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 를 가르치면 다음 식이 등장한다.
\[ F = \frac{MS_{between}}{MS_{within}} \]
학생이 이 식을 분산비 로 이해한다. 그러나 왜 이 비율이 검정에 적합한가는 잘 설명되지 않는다.
모형 비교 시각은 답을 준다. \(MS_{between}\) 은 제한 모형이 추가로 만드는 오차 다. 제한 모형은 모든 그룹이 같은 평균이라 가정하므로, 그룹 간 실제 차이를 잔차로 떠넘긴다. 이 떠넘기는 양 이 \(MS_{between}\) 이다.
\(MS_{within}\) 은 full model 이 여전히 설명하지 못하는 오차 다. 이는 그룹 차이를 허용한 후에도 남는 무작위 변동이다.
따라서 F 가 클수록 “그룹 차이를 허용하지 않으면 모형이 추가로 큰 오차를 낸다” 는 뜻이고, 이는 그룹 차이가 실재한다는 증거다. 이 해석이 분산비 해석보다 왜 F 가 검정에 적합한지를 직접 설명한다.
5 최소제곱 추정 — Why 와 How
GLM 의 모수 \(\beta\) 를 어떻게 추정하는가? 답은 최소제곱 (least squares) 이다.
잔차 제곱합을 최소화하는 모수 값을 선택하는 절차이다.
\[ \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 절에서 대수적으로 증명된다.
최소제곱이 왜 자연스러운가? 세 가지 이유가 있다.
- 편향 없음 (unbiased) — 평균적으로 정확한 모수 값을 준다.
- 최소 분산 (minimum variance) — Gauss-Markov 정리: 선형 비편향 추정량 중 분산이 가장 작다.
- 계산이 단순 — 미분으로 닫힌 해가 나온다.
이 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 가정이 필요하다.
- 정규성 (Normality) — 각 그룹 내 종속 변수가 정규 분포
- 등분산성 (Homogeneity of variance) — 모든 그룹의 분산이 동일
- 독립성 (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 의 농업 시험
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 (정규성)
15.2 Residual vs Fitted Plot (등분산성)
15.3 Residual Histogram (정규성)
이 3 가지 시각이 가정 진단의 핵심.
16 ANOVA 의 변형 — 분야별
| 분야 | 일반 사용 |
|---|---|
| 농업 | 일원 + 블록 + 요인 |
| 임상시험 | 일원 + ANCOVA |
| 심리학 | 요인 + 반복 측정 |
| 교육학 | Mixed model + cluster |
| 마케팅 | 일원 + 요인 |
| A/B 테스트 | 일원 (다중 변형) |
각 분야의 전형적 자료 구조 가 ANOVA 변형 선택을 결정.
17 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 단계 흐름:
- GLM 도입 —
data = fit + residual의 일반화 - One-Group → Two-Group → 일반 그룹의 점진적 확장
- F 검정의 도출 — restricted 와 full model 의 SSE 비교
- 효과 크기로 보고 강화
- 가정 (정규성·등분산·독립성) 진단
- Robust 대안 (Welch, Kruskal-Wallis 등)
이 6 단계가 후속 5 편 (A-MAX3-1 ~ A-MAX3-5) 에서 자세히 다뤄진다. 각 단계는 왜 다음 단계가 필요한지를 명확히 보여주는 구조다.
20 관련 주제
선행 지식
- Fisher 전통 개관 — Ch.2 의 4 단계 흐름
- 차 맛보기 실험과 무작위 배정 검정
- p 값의 두 전통 — Fisher vs Neyman-Pearson
- 분포 가정과 z·t·F 검정의 등장
- 일원 ANOVA 가설 (Casella 수리통계)
후속 주제 (Phase A)
- A-MAX3-1 GLM + One/Two-Group
- A-MAX3-2 General Case + Full vs Restricted
- A-MAX3-3 F-test 와 Effect Size
- A-MAX3-4 통계적 가정과 Levene
- A-MAX3-5 Robust Methods
다른 카테고리 연결
- ANOVA 회귀 개관 — Casella 수리통계 lens
- F 검정 deepdive
- A/B 테스트 메커니즘 — 다중 변형 비교의 토대