DATA GROUND 로고DATA GROUND
통계 기초

통계 초보자를 위한 분산분석(ANOVA) 가이드: 여러 집단의 평균을 한 번에 비교하기

S.H. Yoo
마지막 업데이트: 2024-03-31

분산분석(ANOVA)은 세 개 이상의 집단 평균 차이를 검정하는 통계 기법입니다. 일원배치·이원배치 분산분석의 개념, 분산분석표, 사후분석, 교호작용까지 단계별로 설명합니다.

작성일: 2024-03-31작성자: S.H. Yoo마지막 업데이트: 2024-03-31

분산분석(ANOVA)이란 무엇인가?

분산분석(Analysis of Variance, ANOVA)은
세 개 이상 집단의 평균 차이가 통계적으로 유의한지를 검정하는 방법입니다.

두 집단 비교에는 t-검정을 사용할 수 있지만,
집단 수가 늘어나면 다중 비교로 인해 오류 가능성이 커집니다.
분산분석은 이러한 문제를 해결하기 위해
집단 간 분산과 집단 내 분산을 비교하여 평균 차이를 검정합니다.


일원배치 분산분석이란 무엇인가?

일원배치 분산분석(One-way ANOVA)은
**하나의 요인(factor)**에 따라 나뉜 여러 집단 간 평균 차이를 검정하는 방법입니다.

예를 들어 다음과 같은 상황에서 사용됩니다.

  • 세 가지 교육 방법에 따른 시험 점수 차이
  • 제품 종류에 따른 평균 만족도 차이
  • 비료 종류에 따른 작물 수확량 차이

일원배치 분산분석의 가설

  • 귀무가설(H0): 모든 집단의 평균은 같다.
  • 대립가설(H1): 적어도 하나의 집단 평균은 다르다.

ANOVA는 어떤 집단이 다른지는 알려주지 않고,
차이가 존재하는지 여부만 판단합니다.


일원배치 분산분석표

일원배치 분산분석의 결과는 분산분석표로 정리됩니다.

  • 집단 간 제곱합(Between SS): 요인에 의해 설명되는 변동
  • 집단 내 제곱합(Within SS): 오차에 의한 변동
  • 자유도(df): 변동의 독립적인 정보 수
  • 평균제곱(MS): 제곱합을 자유도로 나눈 값
  • F 통계량: 집단 간 분산 / 집단 내 분산

F 값이 충분히 크고 p-value가 작으면
집단 간 평균 차이가 유의하다고 판단합니다.


일원배치 분산분석 Python 코드 예시

import scipy.stats as stats

group1 = [23, 25, 30, 28]
group2 = [35, 33, 31, 34]
group3 = [29, 27, 26, 28]

stat, p = stats.f_oneway(group1, group2, group3)
print(stat, p)

사후분석이 필요한 이유

ANOVA 결과가 유의하다고 해서
모든 집단이 서로 다른 것은 아닙니다.

따라서 어떤 집단 간에 차이가 있는지를 확인하기 위해
사후분석(Post-hoc test)을 수행합니다.


대표적인 사후분석 방법

피셔의 LSD 방법

  • 가장 단순한 사후분석 방법
  • 검정력이 높지만 제1종 오류 가능성이 큼
  • 집단 수가 적을 때 제한적으로 사용

던칸의 MRT 방법

  • 평균 간 범위를 단계적으로 비교
  • 농업·생명과학 분야에서 자주 사용
  • 상대적으로 관대한 기준을 가짐

Scheffé 방법

  • 모든 선형 대비에 대해 검정 가능
  • 매우 보수적인 방법
  • 집단 수가 많거나 복잡한 비교에 적합

이원배치 분산분석이란 무엇인가?

이원배치 분산분석(Two-way ANOVA)은
두 개의 요인이 동시에 결과 변수에 미치는 영향을 분석하는 방법입니다.

예를 들어 다음과 같은 상황에서 사용됩니다.

  • 교육 방법과 성별이 점수에 미치는 영향
  • 비료 종류와 토양 유형이 수확량에 미치는 영향

이원배치 분산분석의 가설

이원배치 분산분석에서는 세 가지 효과를 검정합니다.

  1. 요인 A의 주효과
  2. 요인 B의 주효과
  3. 요인 A와 B의 교호작용 효과

교호작용이란 무엇인가?

교호작용(Interaction)이란
한 요인의 효과가 다른 요인의 수준에 따라 달라지는 현상을 의미합니다.

예를 들어,
특정 교육 방법의 효과가 남성과 여성에게 다르게 나타난다면
이는 교호작용이 존재한다고 해석합니다.

교호작용이 유의한 경우,
주효과만 단독으로 해석하는 것은 위험할 수 있습니다.


이원배치 분산분석표

이원배치 분산분석표에는 다음 항목이 포함됩니다.

  • 요인 A 제곱합
  • 요인 B 제곱합
  • 교호작용 제곱합
  • 오차 제곱합
  • 각 항목의 자유도, 평균제곱, F 통계량

이를 통해 어떤 요인이 결과에 영향을 미치는지 판단합니다.


이원배치 분산분석 Python 코드 예시

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

data = pd.DataFrame({
    'score': [80, 82, 85, 78, 90, 88, 92, 91],
    'method': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
    'gender': ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F']
})

model = ols('score ~ C(method) * C(gender)', data=data).fit()
anova_table = sm.stats.anova_lm(model, typ=2)
print(anova_table)

마무리하며

분산분석은
여러 집단 평균을 체계적으로 비교할 수 있는 핵심 통계 기법입니다.

일원배치 분산분석은 하나의 요인을,
이원배치 분산분석은 두 요인과 교호작용까지 고려할 수 있어
실제 데이터 분석에서 매우 중요한 역할을 합니다.

마지막 업데이트: 2024-03-31

당신이 관심있을 만한 글