📊 Statistics

[통계/Python] ANOVA & 사후검정, ADP 실기 29회 풀이

민이언즈 2023. 8. 19. 21:46

⬇️ 더 많은 ANOVA 자료와 코드는 깃허브에서 볼 수 있습니다 ! ⬇️

https://github.com/Minju-nimm/ADP/blob/master/Statistics/8_ANOVA.ipynb

 


 [ One-way ANOVA ] 

개념

  • 인자, 요인 (factor) : 학년과 같이 모집단의 그룹을 구분하는데 사용되는 변량을 그룹 또는 인자(factor)라고 하는데 대부분 이산형 변량이다.
  • 수준(level) : 인자가 가지는 값들을 인자의 수준(level)이라고 하며, 이들 수준의 개수가 비교되는 모집단의 개수가 된다. 

 

이와 같이 하나의 인자가 반응변량에 미치는 영향을 조사하는 분산분석법을 일원분산분석(one-way ANOVA)이라 한다.

 

예시

  • 어느 대학에서 각 학년별 도서관 평균이용시간이 같은가?
  • 세 가지 다른 품종의 벼의 수확량이 같은가?
  • 어떤 화학반응에서 네 가지 다른 온도에서 반응속도가 같은가?
  • 도시별 대졸자의 월평균 임금이 같은가?

 

가설

  • 귀무가설 $H_0 : \mu_1 = \mu_2 = \cdots = \mu_k$
  • 대립가설 $H_1$ : 적어도 한 쌍의 $\mu_i$가 같지 않다.

 

 

Example : ADP 실기 29회

아래 데이터는 a,b,c,d 네 차종 각각 5회 실험 시 범퍼 파손 정도이다. (단, 각 모집단은 정규분포를 따르며 모집단 간 등분산성을 가정한다.)

1. 각 차종 별 범퍼 파손의 정도에 차이가 유의한지 검정하라.
2. 귀무가설을 채택한다면 그 의미를 해석하고, 귀무가설을 기각하였다면 사후분석을 시행하라.
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/adp/29/p7.csv')
df.head()

Output

plt.figure(figsize=(3,3))
sns.boxplot(x ='name', y='ratio', data = df, hue='name')

plt.legend(loc='upper right')  # 범례 위치 설정
plt.title('차종별 파손 정도 비율')
plt.show()

Output

가설

  • 귀무가설 : 각 차종 별 범퍼 파손 정도에 차이가 없다.
  • 대립가설 : 각 차종 별 범퍼 파손 정도에 차이가 있다.

 

# 일원 분산분석 수행

from scipy.stats import f_oneway
f_statistic, p_value = f_oneway(df.query("name =='A'")['ratio'], 
                                      df.query("name =='B'")['ratio'], 
                                      df.query("name =='C'")['ratio'], 
                                      df.query("name =='D'")['ratio'])

print("검정통계량 : {:.3f}".format(f_statistic))
print("p-value : {:.3f}".format(p_value))

Output

  • p-value가 0.000으로 유의수준 0.05보다 작아 귀무가설을 기각한다.
  • 즉, 각 차종별 범퍼 파손 정도에 차이가 있다고 할 수 있으므로, 사후분석을 시행한다.

 

`pairwise_tukeyhsd` 이용한 사후검정

  • 귀무가설 : 4개 그룹의 차이가 존재하지 않는다.
  • 대립가설 : 4개 그룹들 중 차이가 있는 그룹이 존재한다.

 

from statsmodels.stats.multicomp import pairwise_tukeyhsd

posthoc = pairwise_tukeyhsd(df['ratio'], df['name'], alpha=0.05)
display(posthoc.summary())

 

  • 결과적으로 A와 D그룹을 비교했을때 p-value는 0.92로 귀무가설을 기각하지 못한다.
  • 나머지 모든 그룹쌍 사이에는 차이가 존재하는 것을 확인할 수 있다.
728x90