일원분산분석(One-Way ANOVA, One-Way Analysis of Variance)은 한 개의 독립 변수(요인, Factor) 가 여러 그룹으로 나뉠 때, 각 그룹의 평균이 통계적으로 유의미한 차이가 있는지를 검정하는 방법입니다.
📌 주요 개념
- 독립 변수(요인, Factor): 그룹을 구분하는 변수 (예: 교육 방식)
- 종속 변수(Response Variable): 비교 대상이 되는 측정 값 (예: 시험 점수)
- 귀무가설(H₀): 모든 그룹의 평균이 같다.
- 대립가설(H₁): 적어도 한 그룹의 평균이 다르다.
🎯 적용 예시
- 교육 방식(온라인 vs. 오프라인 vs. 혼합형) 별 시험 성적 차이 분석
- 다양한 비료 유형에 따른 농작물 수확량 비교
- 세 가지 다이어트 방법에 따른 체중 감소량 차이 분석
📊 분석 과정
- 데이터 수집
- 각 그룹에서 표본 데이터를 수집.
- 정규성 및 등분산성 검정
- 정규성: 샤피로-윌크 검정(Shapiro-Wilk Test)
- 등분산성: 레빈 검정(Levene’s Test)
- 일원분산분석(One-Way ANOVA) 수행
- F-검정을 사용하여 그룹 간 평균 차이 검정
- 사후 분석(Post-hoc Test, 다중 비교 검정)
- ANOVA 결과가 유의미하면, 어떤 그룹 간 차이가 존재하는지 추가 검정
- 예: 튜키 HSD(Tukey’s Honest Significant Difference) 검정
🔢 수식 (F-통계량)
F=그룹 간 분산(Between-group variance)그룹 내 분산(Within-group variance)F = \frac{\text{그룹 간 분산(Between-group variance)}}{\text{그룹 내 분산(Within-group variance)}}F=그룹 내 분산(Within-group variance)그룹 간 분산(Between-group variance)
- F 값이 크면 → 그룹 간 차이가 클 가능성이 높음
- p-value가 유의수준(예: 0.05)보다 작으면 → 귀무가설 기각(즉, 그룹 간 차이가 존재)
📌 Python 예제
import scipy.stats as stats
import pandas as pd
# 예제 데이터 (3개 그룹)
data = {
"A": [85, 90, 88, 92, 85],
"B": [78, 75, 80, 79, 77],
"C": [95, 92, 96, 94, 97]
}
df = pd.DataFrame(data)
# ANOVA 수행
F_stat, p_value = stats.f_oneway(df["A"], df["B"], df["C"])
print(f"F-통계량: {F_stat:.4f}")
print(f"p-value: {p_value:.4f}")
- p-value < 0.05 → 그룹 간 차이가 있음 (사후 분석 필요)