안녕하세요! 이번 글에서는 이원 분산 분석의 분석 절차에 대해 알아보겠습니다. 저번 글에서는 일원 분산 분석의 분산 절차를 알아보았는데요.
이원 분산 분석은 두 개 이상의 요인이 종속 변수에 미치는 영향을 분석하는 강력한 통계적 방법이다.
특히 두 요인의 상호작용 효과까지 검증할 수 있기 때문에, 실험이나 데이터 분석에서 중요한 도구로 사용된다. 분석 과정에서 기본 가정을 충족하고, 적절한 사후 검정을 진행하여 의미 있는 결론을 도출하는 것이 중요하다. 이번 글에서는 이원 분산 분석의 개념부터 실제로 분석하는 절차까지, 전체적인 흐름을 쉽게 설명해보겠다.
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])
혹시 이해가 어려우시다면, 이전 글을 먼저 참고해보시면 좋을 것 같습니다.
'IT & AI > AI 지식' 카테고리의 다른 글
오즈비(Odds Ratio)와 로지스틱 회귀 분석 이해 (0) | 2024.12.10 |
---|---|
일원 분산 분석(One-way ANOVA)의 분석 절차 (0) | 2024.12.08 |
분산 분석(ANOVA): 일원 분산 분석, 이원 분산 분석 (0) | 2024.12.07 |
회귀 분석: 단순 선형 회귀 분석, 다중 선형 회귀 분석 (1) | 2024.12.06 |
범주형 데이터 분석: 카이제곱 검정 (Chi-Square Test) (0) | 2024.12.05 |