가설 검정과 z-점수

Python으로 배우는 가설 검정

James Chapman

Curriculum Manager, DataCamp

A/B 테스트

  • 2013년 Electronic Arts(EA)가 SimCity 5를 출시했습니다
  • 게임 사전 주문을 늘리고자 했습니다
  • 다양한 광고 시나리오를 테스트하기 위해 A/B 테스트를 활용했습니다
  • 사용자를 대조군처리군으로 분리하는 방식입니다

Electronic Arts 건물

1 이미지 출처: "Electronic Arts" by majaX1 CC BY-NC-SA 2.0
Python으로 배우는 가설 검정

소매 웹 페이지 A/B 테스트

대조군:

"사전 주문 시 다음 구매에서 $20 할인" 배너가 있는 SimCity 웹 페이지

처리군:

배너가 없는 SimCity 웹 페이지

Python으로 배우는 가설 검정

A/B 테스트 결과

  • 처리군(광고 없음)이 대조군(광고 있음)보다 구매 수가 43.4% 더 많았습니다
  • "광고를 보여주면 매출이 증가할 것"이라는 직관은 틀렸습니다
  • 이 결과가 통계적으로 유의한 것인지, 아니면 단순한 우연인지 여부
  • 이를 판단하려면 EA의 데이터가 필요합니다
  • Sampling in Python과 이 과정의 기법을 활용합니다
Python으로 배우는 가설 검정

Stack Overflow 개발자 설문조사 2020

import pandas as pd
print(stack_overflow)
      respondent  age_1st_code  ...   age  hobbyist
0           36.0          30.0  ...  34.0       Yes
1           47.0          10.0  ...  53.0       Yes
2           69.0          12.0  ...  25.0       Yes
3          125.0          30.0  ...  41.0       Yes
4          147.0          15.0  ...  28.0        No
...          ...           ...  ...   ...       ...
2259     62867.0          13.0  ...  33.0       Yes
2260     62882.0          13.0  ...  28.0       Yes

[2261 rows x 8 columns]
Python으로 배우는 가설 검정

평균에 대한 가설 설정

가설:

데이터 과학자 모집단의 평균 연간 보상은 $110,000이다

점 추정값(표본 통계량):

mean_comp_samp = stack_overflow['converted_comp'].mean()
119574.71738168952
Python으로 배우는 가설 검정

부트스트랩 분포 생성

import numpy as np

# Step 3. Repeat steps 1 & 2 many times, appending to a list so_boot_distn = [] for i in range(5000): so_boot_distn.append(
# Step 2. Calculate point estimate np.mean(
# Step 1. Resample stack_overflow.sample(frac=1, replace=True)['converted_comp']
)
)
1 부트스트랩 분포는 Sampling in Python 4장에서 다룹니다
Python으로 배우는 가설 검정

부트스트랩 분포 시각화

import matplotlib.pyplot as plt
plt.hist(so_boot_distn, bins=50)
plt.show()

부트스트랩 분포의 히스토그램 - 종 모양이며 대략 110000에서 140000 사이 범위

Python으로 배우는 가설 검정

표준 오차

std_error = np.std(so_boot_distn, ddof=1)
5607.997577378606
Python으로 배우는 가설 검정

z-점수

$\text{표준화 값} = \dfrac{\text{값} - \text{평균}}{\text{표준편차}}$

$z = \dfrac{\text{표본 통계량} - \text{가설 모수값}}{\text{표준 오차}}$

Python으로 배우는 가설 검정

$z = \dfrac{\text{표본 통계량} - \text{가설 모수값}}{\text{표준 오차}}$

stack_overflow['converted_comp'].mean()
119574.71738168952
mean_comp_hyp = 110000
std_error
5607.997577378606
z_score = (mean_comp_samp - mean_comp_hyp) / std_error
1.7073326529796957
Python으로 배우는 가설 검정

가설 검정

  • 1.707은 높은 값인가, 낮은 값인가?
  • 이것이 이 과정의 핵심 목표입니다!
Python으로 배우는 가설 검정

가설 검정

  • 1.707은 높은 값인가, 낮은 값인가?
  • 이것이 이 과정의 핵심 목표입니다!

 

가설 검정의 활용:

 

표본 통계량이 기대값(또는 "가설값")에 가까운지 또는 먼지 판단합니다

Python으로 배우는 가설 검정

표준 정규(z) 분포

표준 정규 분포: 평균 = 0, 표준편차 = 1인 정규 분포

표준 정규 분포 PDF의 밀도 플롯

Python으로 배우는 가설 검정

연습해 봅시다!

Python으로 배우는 가설 검정

Preparing Video For Download...