본문 바로가기

IT & AI/AI 지식

일원 분산 분석(One-way ANOVA)의 분석 절차

by 빛나는해커 2024. 12. 8.

안녕하세요! 저번 글에서 분산 분석의 기본 개념과 종류에 대해 간략히 알아보았습니다. 이번에는 일원 분산 분석분석 절차에 대해 자세히 정리해보았습니다.

데이터 분석에서는 여러 집단 간의 평균 차이가 통계적으로 유의미한지를 확인하기 위해 분산 분석(ANOVA)을 활용한다.
이를 통해 연구자는 각 집단 간의 차이가 우연에 의한 것인지, 아니면 실제로 의미 있는 차이인지 분석할 수 있다.
이번 글에서는 일원 분산 분석의 절차를 자세히 설명하고자 한다. 

1. 일원 분산 분석이란?

일원 분산 분석은 하나의 요인에 의해 여러 집단 간의 평균 차이를 비교하고 검정하는 통계 기법이다. 세 개 이상의 집단이 있을 때, 이 집단 간 평균이 서로 다른지를 검정하는 데 사용된다.

예를 들어, 세 개의 다른 학급 간 시험 성적을 비교한다고 해보자. 이때 일원 분산 분석을 사용하면 세 학급의 평균 성적이 통계적으로 유의미하게 다른지 알 수 있다.

 

기본 가정

분산 분석을 수행하기 위해서는 다음의 기본 가정이 충족되어야 한다:

  1. 독립성: 각 집단의 관측치는 서로 독립적이어야 한다.
  2. 정규성: 각 집단은 정규분포를 따라야 한다.
  3. 등분산성: 모든 집단은 동일한 분산을 가져야 한다.

2. 일원 분산 분석의 절차

2-1. 관심 모집단 3개 이상 (독립 표본)

일원 분산 분석은 세 개 이상의 독립 집단이 존재할 때 사용된다. 분석을 시작하기 전에 관심 모집단이 세 개 이상임을 확인해야 한다.

 

2-2. 정규성 검정

  • 첫 번째 단계는 정규성 검정이다. 이는 각 모집단이 정규분포를 따르는지 확인하는 과정으로, Shapiro-Wilk 검정을 많이 사용한다.
  • 이를 위해 shapiro(data1), shapiro(data2)와 같이 샤피로 검정을 통해 데이터의 정규성을 검증할 수 있다.
  • 만약 정규성을 따르지 않는다면 비모수 검정으로 대체하여 분석을 진행해야 한다.
  • 이 경우 Kruskal-Wallis 검정을 사용하며, 해당 검정은 정규성을 따르지 않는 경우에도 사용 가능하다.

2-3. 등분산 검정

  • 정규성 검정이 끝난 후에는 등분산성을 검정한다.
  • 이는 모든 집단이 동일한 분산을 가지는지 확인하는 과정으로, Levene 검정을 사용한다.
  • 이 단계에서는 다음과 같은 명령어를 사용할 수 있다:
from scipy.stats import levene
levene(data1, data2, ...)
  • 등분산성 검정을 통과하면, 본격적으로 일원 분산 분석을 수행할 수 있다.

2-4. 일원 분산 분석

  • 정규성과 등분산성을 모두 만족한 경우, 일원 분산 분석을 수행한다.
  • 이를 위해 f_oneway(data1, data2, ...)와 같은 함수를 사용한다.
  • 여기서 f_oneway()는 여러 그룹 간의 평균이 통계적으로 유의미하게 다른지를 검정해준다.
from scipy.stats import f_oneway
f_oneway(data1, data2, ...)

 

가설 설정

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

일원 분산 분석을 수행한 후에는 p-value 값을 확인하고, 이를 바탕으로 귀무가설을 기각할지 여부를 결정한다.


3. 사후 검정 (Post-hoc Test)

일원 분산 분석 결과, 집단 간 평균의 차이가 유의미하다는 결론이 나왔다면, 사후 검정을 통해 어떤 집단 간에 차이가 있는지 추가적으로 분석한다. 대표적인 사후 검정에는 투키(Tukey) HSD 검정 본페로니(Bonferroni) 검정이 있다.

 

3-1. Tukey HSD 검정

투키 HSD(Tukey Honest Significant Difference) 검정은 집단 간의 평균 차이를 평가하는 사후 검정 방법으로, 각 그룹 간의 평균 차이가 유의미한지 여부를 알려준다.

  • 코드 예시:
from statsmodels.stats.multicomp import pairwise_tukeyhsd

tukey_result = pairwise_tukeyhsd(endog=data['값'], groups=data['그룹'], alpha=0.05)
print(tukey_result)

 

3-2. Bonferroni 검정

본페로니 검정은 매우 엄격한 기준을 적용하여 다중 비교 문제를 해결하는 사후 검정 방법이다. 이는 p-value를 보정하여 유의미성을 판단하기 때문에, 차이가 인정되는 경우가 비교적 드물다.

  • 코드 예시:
from statsmodels.stats.multicomp import MultiComparison

multi_comp = MultiComparison(data['값'], data['그룹'])
bonferroni_result = multi_comp.allpairtest(stats.ttest_ind, method='bonferroni')
print(bonferroni_result[0])

4. Kruskal-Wallis 검정 (비모수 검정)

만약 데이터가 정규성을 만족하지 않는 경우에는 Kruskal-Wallis 검정을 사용하여 집단 간 차이를 분석한다. 이 검정은 비모수 방식으로, 데이터의 분포에 대한 가정 없이 평균 차이를 검정할 수 있다.

  • 코드 예시:
from scipy.stats import kruskal

kruskal(data1, data2, ...)

 


혹시 이해가 어려우시다면, 이전 글을 먼저 참고해보시면 좋을 것 같습니다.

 

회귀 분석: 단순 선형 회귀 분석, 다중 선형 회귀 분석

안녕하세요! 이번 글은 독립 변수와 종속 변수 간의 관계를 모델링하고 예측하기 위해 사용하는 통계적 방법인 회귀 분석을 다뤄보았습니다.회귀 분석은 데이터의 패턴을 이해하고 예측을 수행

actshiny.com

 

분산 분석(ANOVA): 일원 분산 분석, 이원 분산 분석

안녕하세요! 저번 내용이었던 회귀 분석에 이어 이번에는 분산분석 즉, 일원 분산 분석과 이원 분산 분석에 대해 자세히 알아보려 합니다.분산 분석(ANOVA)은 여러 집단의 평균 차이가 통계적으로

actshiny.com

일원 분산 분석(One-way ANOVA)의 분석 절차 소개 이미지

반응형