본문 바로가기

IT & AI/AI 지식

이원 분산 분석(Two-way ANOVA) 분석 절차

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

안녕하세요! 이번 글에서는 이원 분산 분석의 분석 절차에 대해 알아보겠습니다. 저번 글에서는 일원 분산 분석의 분산 절차를 알아보았는데요.

이원 분산 분석은 두 개 이상의 요인이 종속 변수에 미치는 영향을 분석하는 강력한 통계적 방법이다.
특히 두 요인의 상호작용 효과까지 검증할 수 있기 때문에, 실험이나 데이터 분석에서 중요한 도구로 사용된다. 분석 과정에서 기본 가정을 충족하고, 적절한 사후 검정을 진행하여 의미 있는 결론을 도출하는 것이 중요하다. 이번 글에서는 이원 분산 분석의 개념부터 실제로 분석하는 절차까지, 전체적인 흐름을 쉽게 설명해보겠다.

1. 이원 분산 분석이란?

이원 분산 분석(Two-way ANOVA)은 두 개의 요인(변수)이 여러 집단 간의 평균에 미치는 영향을 검정하는 통계 기법이다. 이 분석을 통해 두 개 이상의 요인이 결과에 어떤 영향을 미치는지, 그리고 이 요인들이 상호작용하는지 여부를 평가할 수 있다.

예를 들어, 학생들의 성적에 대해 교재 강사의 교육 방식이 영향을 미치는지 확인하려면 이원 분산 분석을 사용할 수 있다. 이 분석은 요인들이 독립적일 때와 두 요인이 상호작용할 때의 영향을 평가할 수 있는 장점이 있다.

 

(자세한 내용은 이 글을 참고해주시면 좋을 것 같습니다)


2. 이원 분산 분석의 절차

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

이원 분산 분석을 수행하기 위해서는 3개 이상의 모집단(독립 표본)이 필요하다. 이때 관심 모집단은 두 개의 요인에 의해 구분되어야 하며, 각각의 표본이 서로 독립적이어야 한다.

 

2-2. 정규성 검정

첫 번째 단계는 정규성 검정이다. 이는 모집단의 각 데이터가 정규분포를 따르는지 확인하는 과정이다. 보통 Shapiro-Wilk 검정을 사용하며, 이를 통해 모집단이 정규성을 충족하는지 판단한다.

  • 정규성 검정 코드 예시:
from scipy.stats import shapiro

shapiro(data1)
shapiro(data2)
# 데이터들의 정규성을 검증

만약 정규성을 충족하지 못하는 경우에는 비모수 방법을 사용하여 분석을 진행할 수 있다.

 

2-3. 등분산 검정

다음 단계는 등분산성 검정이다. 등분산성 검정은 모든 모집단이 동일한 분산을 가지고 있는지를 검정하는 과정이다. 여기서는 레빈 검정(Levene Test)을 사용하여 검정할 수 있다.

  • 등분산성 검정 코드 예시:
from scipy.stats import levene

levene(data1, data2, ...)

등분산성을 만족해야만 다음 단계로 분석을 진행할 수 있다.

 

2-4. 이원 분산 분석 수행

정규성 검정 등분산 검정을 모두 통과한 경우, 이원 분산 분석을 수행할 수 있다. 이 단계에서는 ols() 함수를 사용하여 모델을 생성하고, anova_lm()을 통해 분산 분석 결과를 확인한다. 두 개의 요인과 그들 간의 상호작용이 종속 변수에 미치는 영향을 평가하는 과정이다.

  • 이원 분산 분석 코드 예시:
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm

# 모델 생성
model = ols('종속변수 ~ C(요인1) * C(요인2)', data=df).fit()
# 분산 분석 수행
anova_results = anova_lm(model)
print(anova_results)
  • C()로 덮어주는 이유: C()로 감싸는 이유는, 해당 변수가 숫자 형태이지만 범주형 변수임을 나타내기 위해서이다.

 

2-5. 사후 검정 (Post-hoc Test)

이원 분산 분석 결과, 두 요인에 의한 차이가 통계적으로 유의미하다고 판단될 경우, 어떤 요인에서 차이가 발생했는지를 분석하기 위해 사후 검정을 진행한다. 사후 검정으로는 Tukey HSD Bonferroni를 사용할 수 있다.

  • Tukey HSD: 그룹 간 평균의 차이를 평가하는 검정 방법으로, 각 그룹 간의 평균 차이가 유의미한지 여부를 알려준다.
from statsmodels.stats.multicomp import pairwise_tukeyhsd

tukey_result = pairwise_tukeyhsd(endog=df['값'], groups=df['그룹'], alpha=0.05)
print(tukey_result)
  • Bonferroni 검정: p-value를 보정하여 다중 비교 문제를 해결하는 방법이다. 이 방법은 매우 엄격한 기준을 적용하여 유의미성을 판단한다.
from statsmodels.stats.multicomp import MultiComparison

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

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

 

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

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

actshiny.com

 

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

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

actshiny.com

 

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

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

actshiny.com

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

반응형