p-값

Python으로 배우는 가설 검정

James Chapman

Curriculum Manager, DataCamp

형사 재판

  • 두 가지 가능한 실제 상태:
    1. 피고가 범죄를 저질렀음
    2. 피고가 범죄를 저지르지 않았음
  • 두 가지 가능한 평결:
    1. 유죄
    2. 무죄
  • 초기에는 피고가 무죄로 가정됩니다
  • 유죄 평결을 위해 검사는 "합리적 의심의 여지 없이" 증거를 제시해야 합니다
Python으로 배우는 가설 검정

첫 프로그래밍 경험 연령

  • age_first_code_cut은 Stack Overflow 사용자가 프로그래밍을 처음 시작한 시기를 분류합니다
    • "adult"는 14세 이상에 시작했음을 의미
    • "child"는 14세 이전에 시작했음을 의미
  • 선행 연구: 소프트웨어 개발자의 35%가 어린 시절에 프로그래밍을 시작했음
  • 데이터 과학자 중 어린 시절에 프로그래밍을 시작한 비율이 더 높다는 증거가 있을까요?
Python으로 배우는 가설 검정

정의

가설은 알 수 없는 모집단 모수에 관한 진술입니다

가설 검정은 두 가지 경쟁 가설을 검정하는 것입니다

  • 귀무 가설($H_{0}$)은 기존의 아이디어입니다

  • 대립 가설($H_{A}$)은 연구자의 새로운 "도전" 아이디어입니다

우리의 문제에 대해:

  • $H_{0}$: 어린 시절에 프로그래밍을 시작한 데이터 과학자의 비율은 35%입니다
  • $H_{A}$: 어린 시절에 프로그래밍을 시작한 데이터 과학자의 비율은 35%보다 큽니다
1 "Naught" is British English for "zero". For historical reasons, "H-naught" is the international convention for pronouncing the null hypothesis.
Python으로 배우는 가설 검정

형사 재판 vs. 가설 검정

  • $H_{A}$ 또는 $H_{0}$ 중 하나만 참입니다
  • 초기에는 $H_{0}$이 참으로 가정됩니다
  • 검정 결과는 "$H_{0}$ 기각" 또는 "$H_{0}$ 기각 실패" 중 하나입니다
  • 표본의 증거가 $H_{A}$에 대해 "유의"하면 $H_{0}$을 기각하고, 그렇지 않으면 $H_{0}$을 채택합니다

유의 수준은 가설 검정에서 "합리적 의심의 여지"에 해당합니다

Python으로 배우는 가설 검정

단측 검정과 양측 검정

표준 정규 분포의 확률밀도함수 밀도 플롯으로, 왼쪽과 오른쪽 꼬리가 빨간색으로 강조 표시됨.

가설 검정은 표본 통계량이 귀무 분포의 꼬리에 위치하는지 확인합니다

검정 꼬리
대립 귀무와 다름 양측 검정
대립 귀무보다 큼 우측 검정
대립 귀무보다 작음 좌측 검정

 

$H_{A}$: 어린 시절에 프로그래밍을 시작한 데이터 과학자의 비율이 35%보다 큽니다

이는 우측 검정입니다

Python으로 배우는 가설 검정

p-값

p-값: 귀무 가설이 참이라는 가정 하에 결과를 얻을 확률

  • p-값이 크면 $H_{0}$에 대한 지지가 강함
    • 통계량이 귀무 분포의 꼬리에 없을 가능성이 높음
  • p-값이 작으면 $H_{0}$에 반하는 강한 증거
    • 통계량이 귀무 분포의 꼬리에 있을 가능성이 높음
  • p-값의 "p" → 확률(probability)
  • "작다"는 "0에 가깝다"는 의미
Python으로 배우는 가설 검정

z-점수 계산

prop_child_samp = (stack_overflow['age_first_code_cut'] == "child").mean()
0.39141972578505085
prop_child_hyp = 0.35
std_error = np.std(first_code_boot_distn, ddof=1)
0.010351057228878566
z_score = (prop_child_samp - prop_child_hyp) / std_error
4.001497129152506
Python으로 배우는 가설 검정

p-값 계산

  • norm.cdf()scipy.stats의 정규 CDF입니다.
  • 좌측 검정 → norm.cdf() 사용.
  • 우측 검정 → 1 - norm.cdf() 사용.

 

from scipy.stats import norm
1 - norm.cdf(z_score, loc=0, scale=1)
3.1471479512323874e-05
Python으로 배우는 가설 검정

연습해 봅시다!

Python으로 배우는 가설 검정

Preparing Video For Download...