데이터 사이언스 기초

분산분석 with 파이썬

skbaek1223 2024. 11. 15. 17:46

파이썬으로 분산 분석 (ANOVA) 을 수행하는 방법을 정리해보려고 합니다.

 

◎ 일원배치 분산분석 (One-way ANOVA)

 

일원배치 분산분석 (One-way ANOVA) 은 하나의 범주형 변수의 영향에 따른 둘 이상의 집단 간 평균이 같은지를 검증하기 위한 방법입니다.

 

1. 데이터 분포, 변수 설정

 

'Iris 의 3 가지 종(setosa, versicolor, virginica) 에서 sepal width 의 평균이 같다' 라는 귀무 가설을 검정하려고 합니다. 데이터는 3 가지 종의 데이터가 고르게 분포되어 있습니다.

 

 

setosa, versicolor, virginica 에 각각의 sepal width 값들의 데이터를 저장하였습니다.

 

2. 기본 가정을 충족하지 못한 경우

 

일원 배치 분산분석의 가정은 모두 정규 분포를 따르고, 등분산성을 가진다는 것이므로, 그렇지 못한 경우에는 각각 kruskal 검정과 welch_anova 분석을 활용합니다.

 

정규성 검정, 등분산성 검정은 각각 shapiro test, levene 으로 p value 가 0.05 초과인지를 봅니다.

 

 

welch_anova 에서 dv 는 종속 변수가 포함된 컬럼이고, between 은 독립변수가 포함된 컬럼입니다.

 

3. 기본 가정을 충족한 경우

 

정규성, 등분산성을 충족한 경우에는 '하나의 범주형 변수의 영향에 따른 집단들 간 평균이 모두 같다' 라는 귀무가설을 검정하기 위한 일원 배치 분산분석을 수행합니다.

 

 

p value(유의 확률) 이 0.05 보다 작으면, 평균에 차이가 있으므로 변수에 따라 평균의 차이가 어떻게 발생하는지에 대해서 사후 검정을 수행할 수 있습니다. 

 

 

MultiComparison() 의 data 에는 종속변수의 컬럼, groups 에는 독립변수의 컬럼을 넣어 MultiComparison 객체를 생성합니다.

 

MultiComparison 객체.tukeyhsd().summary() 를 통해 '집단들 사이의 평균은 같다' 라는 귀무가설에 대한 사후검정을 수행할 수 있습니다. meandiff 는 group2의 평균이 group1 의 평균보다 얼마나 큰지를 나타냅니다.

 

◎ 이원배치 분산분석 (Two-way ANOVA)

 

이원배치 분산분석 (One-way ANOVA) 은 하나의 종속 변수 (연속형) 에 대한 두 범주형 독립 변수 (범주형) 의 영향을 검증하기 위한 방법입니다.

 

이원배치 분산분석은  '두 독립 변수간의 상호작용 효과가 없다', 'a 변수에 따른 종속 변수 값에는 차이가 없다', 'b 변수에 따른 종속 변수 값에는 차이가 없다' 이라는 3개의 귀무 가설을 검정하기 위해 수행합니다.

 

 

mtcars 자료에서 주행거리(mpg) 에 대한 변속기 종류(am), 실린더 개수(cyl) 의 영향을 검증하려고 합니다.

 

formula 에 '종속 변수 컬럼 ~ C(독립 변수1 컬럼) + C(독립 변수2 컬럼) + C(독립 변수1 컬럼): C(독립 변수 2 컬럼)' 을 넣고 ols 모델을 학습시킨 후, anova_lm 에 모델을 넣으면 분산분석의 결과가 출력됩니다.

 

anova_lm 에서 type1 은 변수의 순서가 중요한 경우, type2 는 변수 간 상호작용 효과를 고려하지 않을 때, type3 는 변수 간 상호작용 효과를 고려할 때 활용합니다.

 

 

 

< 참고 자료 >

 

데싸라면 , 빨간색 물고기 , 자투리코드 , (2023), 파이썬 한권으로 끝내기: 데이터분석전문가(ADP) + 빅데이터분석기사 실기대비, 시대고시기획

 

'데이터 사이언스 기초' 카테고리의 다른 글

분류 분석 (머신 러닝)  (0) 2024.11.27
회귀 분석 (머신 러닝)  (0) 2024.11.27
t 검정 with 파이썬  (0) 2024.11.15
웹 스크래핑의 기본  (0) 2024.11.13
파이썬 기초 프로젝트 리뷰  (3) 2024.11.09