Python 데이터 분석

Python 데이터분석 기초 41 - 이항검정(양측검정, 단측검정)

코딩탕탕 2022. 11. 10. 10:14

 

이항검정 : 결과가 두 가지 값을 가지는 확률변수의 분포(이항분포)를 판단하는데 효과적.
정규분포는 연속변량인데 반해 이항분포는 이산변량

 

# 이항검정 : 결과가 두 가지 값을 가지는 확률변수의 분포(이항분포)를 판단하는데 효과적.
# 정규분포는 연속변량인데 반해 이항분포는 이산변량

# binom test

import pandas as pd
import scipy.stats as stats

# 귀무 : 직원을 대상으로 고객대응 교육 후 고객안내 서비스 만족율은 80%이다.
# 대립 : 직원을 대상으로 고객대응 교육 후 고객안내 서비스 만족율은 80%가 아니다.

data = pd.read_csv('../testdata/one_sample.csv')
print(data.head(3))

print(data.survey.unique()) # [1 0] # data['survey'].unique()

ctab = pd.crosstab(index = data['survey'], columns = 'count')
ctab.index = '불만족', '만족'
print(ctab)  # 만족 : 136, 불만족 : 14

print('\n양측 검정 : 방향성이 없다.')
x = stats.binom_test([136, 14], p = 0.8, alternative = 'two-sided') # p는 만족율 확률값이다.
print(x) # p-value : 0.0006734 < 0.05 이므로 귀무 기각.
# 직원을 대상으로 고객대응 교육 후 고객안내 서비스 만족율은 80%가 아니다.

x = stats.binom_test([14, 136], p = 0.2, alternative = 'two-sided') # p는 불만족율 확률값이다.
print(x)


print('\n단측 검정 : 방향성이 있다. 크다, 작다')
# 만족값이 클거라 가정하고 greater를 선언!
x = stats.binom_test([136, 14], p = 0.8, alternative = 'greater') # p는 만족율 확률값이다.
print(x)
# p-value : 0.0003179 < 0.05 이므로 귀무 기각.
# 고객안내 서비스 만족율은 80%보다 크다.

print()
# 불만족값이 작을거라 가정하고 less를 선언!
x = stats.binom_test([14, 136], p = 0.2, alternative = 'less') # p는 만족율 확률값이다.
print(x)
# p-value : 0.0003179 < 0.05 이므로 귀무 기각.
# 고객안내 서비스 불만족율은 20%보다 작다.


<console>
   no    gender  survey time
0   1         2       1  5.1
1   2         2       0  5.2
2   3         2       1  4.7
[1 0]
col_0  count
불만족       14
만족       136

양측 검정 : 방향성이 없다.
0.0006734701362867024
0.0006734701362867063

단측 검정 : 방향성이 있다. 크다, 작다
0.00031794019219854805

0.00031794019219854924