작성일자 : 2023-12-11
Ver 0.1.1
1. 가설 설정 및 필요 module import
H0 : 세 그룹 성적의 평균값이 같다 ( = A(평균) = B(평균) = C(평균)) (양측) /
H1 : 세 그룹 성적의 평균이 적어도 하나는 같지 않다. ( = Not H0)(양측) /
import pandas as pd
import numpy as np
import scipy.stats as stats
from scipy.stats import shapiro
2. 유의 수준 확인
일반적으로 유의 수준을 5%으로 하여 가설 검정을 한다.
3. 정규성 검정
Shapiro-Wilk 검정은 가설검정의 방법으로 데이터가 정규분포를 가지는 지에 대해 검정하는 방법이다.
Python에서 Shapiro-Wilk 검정을 수행하는 함수는 scipy 패키지의 stats 모듈의 shapiro() 함수가 있다.
H0 : 정규분포를 따른다.
H1 : 정규분포를 따르지 않는다.
print(stats.shapiro(df['A']))
print(stats.shapiro(df['B']))
print(stats.shapiro(df['C']))
3-1. 세집단 모두 p-value가 0.05보다 크면 귀무가설 채택 ( = 세 집단 모두 정규분포를 따른다) -> ANOVA 분석
3-2. 하나의 집단이라도 p-value가 0.05보다 작으면 귀무가설 기각 ( = 세 집단 모두 정규분포를 따르지는 않는다) -> 크루스칼 왈리스 test
4. 등분산 검정
H0 : 등분산을 따른다.
H1 : 등분산을 따르지 않는다.
print(stats.bartlett(df['A'],df['B'],df['C']))
3-1 : p-value가 0.05보다 크면 귀무가설 채택 ( = 등분산을 따른다.) -> (정규성 충족 & 등분산 충족) ANOVA 분산분석
3-2 : p-value가 0.05보다 작으면 귀무가설 기각 ( = 등분산을 따르지 않는다.) -> (정규성 충족 & 등분산 불충족) Welch-ANOVA
5. 검정실시 (검정 통계량, p-value)
2023.12.01 - [Data Analysis/Data & Statistics] - [Statistics] p-value (유의확률)
# 5.1 (정규성 o, 등분산성 o) 분산분석(F_oneway)
statistic, pvalue = stats.f_oneway(df['A'],df['B'],df['C'])
# 주의 : 데이터가 각각 들어가야 함 (밑에 예재와 비교해볼 것)
# 5.2 (정규성 o, 등분산성 x) Welch-ANOVA 분석
# import pingouin as pg # 체험환경에서는 pingouin 패키지 미지원
# pg.welch_anova(dv = "그룹변수명", between = "성적데이터", data = 데이터)
# pg.welch_anova(df['A'],df['B'],df['C']) 형태로 분석 불가
6. 귀무가설 기각여부 결정
검정 실시에서 구한 p-value가 유의수준인 0.05보다 크면 귀무가설 채택
검정 실시에서 구한 p-value가 유의수준인 0.05보다 작으면 귀무가설 기각 ( = 대립가설 채택)