[Python 데이터 분석] 가설 검정 (Hypothesis Testing)

| 가설 검정( Hypothesis Testing )


가설 검정은 증명된 바 없는 주장이나 가설을 표본 통계량에 입각하여 진위 여부를 판단하는 통계적 추론 방식입니다. 통계적 근거에 기반한 가설 검정은 우리가 세운 어떤 가설에 대해 완벽하게 증명하지 못합니다. 하지만 그 가설이 어느정도 신뢰할 수 있는 지에 대한 어떤 측정값을 우리에게 제공해 줄 수 있습니다. 


가설 검정은 귀무 가설(null hypothesis)과 대립 가설(alternative hypothesis)을 설정하여 현재 세운 가설이 맞는지 아닌지를 가늠합니다.


귀무가설은 어떠한 차이가 없거나 의미 있는 차이가 없는 경우의 가설, 관습적이고 보수적인 주장이며 기각(reject)이 목표인 가설을 말합니다. null hypothesis란 용어로 살펴볼 수 있듯이 처음부터 기각될 것을 기대하는 가설입니다.


대립가설은 우리가 적극적으로 입증하려는 주장, 차이가 있음을 통계적 근거를 통해 입증하고자 하는 주장을 말합니다. 귀무가설이 기각됨으로서 간접적으로 받아들여 질 수 있습니다.


| 가설 검정의 절차( Hypothesis Testing Process )


가설 검정의 절차는 


1. 가설 설정 

2. 유의수준 설정

3. 검정통계량 산출

4. 기각/채택 판단


순으로 이루어지게 됩니다.


| 가설 설정


가설 설정은 위에서 언급했던 귀무 가설과 대립 가설을 설정하는 것을 말합니다. 예로들어 'A반에서 새로운 교육법을 도입했더니 학생 성적이 올랐다' 라는 가정을 검증하고 싶다고 합시다. 만일 새로운 교육법이 학생들의 성적이 올렸다면 기존 교육법에서 새로운 교육법을 도입했을 시 각 평균 성적의 차이가 날 것이라 예상할 수 있습니다. 이 차이를 수치적으로 귀무가설은 


 H0 : Mean(기존) - Mean(새로운) = 0


라고 할 수 있으며, 대립 가설은


  H1 : Mean(기존) - Mean(새로운) ≠ 0 


라고 정의할 수 있습니다. 또한 위에서는 서로 다른 것만 비교하면 되는 것이므로 검정방법 중 양측검정을 수행하게 됩니다. 만일 대소 비교를 한다고 하면 단측검정을 수행해야 할 것입니다. 


가설 검정은 귀무가설 H0가 맞다는 전제하에 진행되게 되며 이 H0가 맞다고 가정할 시 나올 확률이 매우 적은 표본통계값이 나오게 될 시에는 이 가설을 기각하고 대립가설을 채택하는 형식으로 검정 절차가 진행되게 됩니다.


| 신뢰수준, 유의수준 설정


통계학에서 신뢰수준이라는 것은 모집단에서 반복해서 표본을 추출할 경우 모집단의 모수를 포함할 구간의 비율을 나타냅니다. 즉 100개의 표본을 추출하고 그 표본의 신뢰 구간을 구하면 95%의 확률로 모수가 포함될 것이라는 뜻입니다.


즉, 신뢰수준은 얼마만큼 보수적으로(빡빡하게) 가설 검정을 할 것인지를 결정하는 척도라고 쉽게 이해해도 무방합니다. 


유의수준은 이 가설이 어느 정해진 수치를 벗어나면 귀무가설이 오류라고 인정할 것인가를 판단하는 기준이 됩니다. 기호는 보통 α를 쓰며 1 - α 가 바로 신뢰 수준입니다. 이 a값이 커지면 진보적으로 대립가설이 채택될 가능성이 높아지며 이 값이 작아지면 보수적으로 대립가설이 기각될 가능성이 높아지게 됩니다.


예를 들어 '95%의 신뢰수준으로 새로운 교육법이 효과가 있다'는 것을 검증한다는 의미는 5%의 유의수준으로 검증한다는 것을 의미하는 것입니다.


| 검정통계량, 기각/채택 판단


검정통계량은 어떤 확률분포(정규분포, t분포, 이항분포 등)에서 가설 검정 목적으로 그 확률분포의 통계량을 산출하는 것을 말합니다. 이 검정통계량을 통해 기각 및 채택 여부를 결정하게 됩니다. 


검정통계량이 확률분포 어디에 위치하느냐에 따라 기각 및 채택 여부가 결정되게 됩니다. 만일 이 검정통계량이 신뢰구간에 위치해 있을 때는 대립가설 기각, 벗어날 시에는 대립가설을 채택하게 됩니다.


또한 가설 검정에 쓰일 수 있는 또 다른 척도인 유의확률(p-value)이 있습니다. 이 유의확률은 검정통계량에서 유도할 수 있으며 유의 확률 p-value가 유의 수준(α)보다 클 시에는 귀무가설을 채택, 작을 시에는 귀무 가설을 기각합니다.


유의 확률이 작다는 것은 귀무가설이 옳다고 가정할 시, 현재 표본통계량이 나올 확률이 작다는 것을 뜻하며 이것은 귀무가설을 기각할 통계적인 근거가 되기 때문에 귀무가설을 기각할 수 있는 것입니다.


| 가설 검정 파이썬 코드


아래는 가설 검정을 구현한 파이썬 코드이며 가설 검정 중 하나인 t-test를 통해 가설 검정을 구현하였습니다.

import pandas as pd
import numpy as np

df = pd.read_csv('grades.csv')
print(len(df))
# 2315

early = df[df['assignment1_submission'] <= '2015-12-31']
late = df[df['assignment1_submission'] > '2015-12-31']

print(early.mean())
'''
assignment1_grade 74.972741
assignment2_grade 67.252190
assignment3_grade 61.129050
assignment4_grade 54.157620
assignment5_grade 48.634643
assignment6_grade 43.838980
dtype: float64
'''

print(late.mean())
'''
assignment1_grade 74.017429
assignment2_grade 66.370822
assignment3_grade 60.023244
assignment4_grade 54.058138
assignment5_grade 48.599402
assignment6_grade 43.844384
dtype: float64
'''

from scipy import stats

t_test1 = stats.ttest_ind(early['assignment1_grade'], late['assignment1_grade'])
print(t_test1)
# Ttest_indResult(statistic=1.400549944897566, pvalue=0.16148283016060577)
# 만일 유의수준 5% (0.05) 로 가설검정을 진행하였을 경우 p-value는 유의수준 a값보다 크므로
# 귀무가설은 채택, 대립가설은 기각된다.

 

참고자료 : https://www.coursera.org/learn/python-data-analysis



이 글을 공유하기

댓글(6)

  • 이희원
    2020.03.30 12:57

    안녕하세요,

    파이썬의 가설검정에 대한 자세한 설명을 위해 찾아보다가 잘 정리해 주신 글을 읽게 되었습니다.

    다름이 아니라 가설 검정을 구현한 코드에 대한 설명에 잘 이해가 되지 않는 부분이 있어 댓글남깁니다.

    본론에서 '가설 검정에 쓰일 수 있는 또 다른 척도인 유의확률(p-value)이 있습니다. 이 유의확률은 검정통계량에서 유도할 수 있으며 유의 확률이 유의 수준(α)보다 클 시에는 대립가설을 채택, 작을 시에는 대립 가설을 기각합니다.' 라고 말씀하셨는데

    본문에서의 구현 코드에서 나온 p-value는 유의수준 0.05보다 큰데 왜 대립가설이 채택되지 않고 기각 되는 것인지 궁금합니다.
    # Ttest_indResult(statistic=1.400549944897566, pvalue=0.16148283016060577)
    # 만일 유의수준 5% (0.05) 로 가설검정을 진행하였을 경우 p-value는 유의수준 a값보다 크므로
    # 대립가설은 기각된다.


    • 2020.03.31 00:42 신고

      희원님 안녕하세요~

      본론에서 대립 가설이 아니라 귀무가설을 잘못 썼었네요;; 예전에 정리한 거라 오류가 있었네요 댓글 달아주셔서 감사해요

      p-value를 기준으로 유의수준보다 클 때는 귀무가설로 채택한 가설이 채택이 됩니다. 왜냐하면 p-value가 기준이 되는 유의수준보다 크게 나오기 때문에 p-value의 베이스가 되는 통계량은 '나올 법 해서 나온 것'이라 판단해서 채택하는 겁니다.

      그 반대의 경우에는 '이렇게 낮은 p-value가 나왔으니 정말 낮은 확률로 나온 통계량들이고 이것은 우연히 나왔다기 보다는 애초에 가설이 틀려서 나온 p-value값이다' 라고 해서 귀무가설을 기각하는 것입니다.

      본문은 수정했습니다.

    • 이희원
      2020.03.31 11:31

      새로비님 답변 감사합니다.
      잘 이해하고 갑니다

  • 2020.03.30 16:45

    비밀댓글입니다

    • 2020.03.31 00:49 신고

      일 끝나고 이제 봤네요 ㅎㅎ;

      공부하시다가 참 답답하셨겠네요ㅠ

      혹시 사용하신 raw_data의 출처나 파일을 보내주실 수 있을까요?

      eng.kimbs@gmail.com 으로 보내주시면 감사하겠습니다.

    • 2020.03.31 21:50 신고

      메일 드렸습니다! 확인 부탁드려요 ㅎㅎ

Designed by JB FACTORY