Python 데이터 분석

Python 데이터분석 기초 30 - 가설검정 - 일원카이제곱 이(stats.chisquare()) 예제 , 선호도 분석 실습

코딩탕탕 2022. 11. 4. 16:30

 

# 카이제곱검정 중 일원카이제곱
# : 관찰도수가 기대도수와 일치하는 지를 검정하는 방법
# : 종류 : 적합도/선호도 검정
# - 범주형 변수가 한 가지로, 관찰도수가 기대도수에 일치하는지 검정한다.

# 적합도 검정
# : 자연현상이나 각종 실험을 통해 관찰되는 도수들이 귀무가설 하의 분포(범주형 자료의 각 수준별 비율)에 얼마나 일치하는가에 대한
# 분석을 적합도 검정이라 한다.
# : 관측값들이 어떤 이론적 분포를 따르고 있는지를 검정으로 한 개의 요인을 대상으로 함.

# <적합도 검정실습>
# 주사위를 60 회 던져서 나온 관측도수 / 기대도수가 아래와 같이 나온 경우에 이 주사위는 적합한 주사위가 맞는가를 일원카이제곱 검정
# 으로 분석하자
# 주사위 눈금 1  2  3  4  5  6
# 관측도수   4  6  17 16 8  9
# 기대도수   10 10 10 10 10 10
# 수집된 데이터를 바탕으로 기대도수(기준, 상식, 귀무가설)를 바탕으로 대립가설 세우기

# 귀무 가설 : 기대치와 관찰치는 차이가 없다. 현재 주사위는 게임에 적합하다.     보수적
# 대립 가설 : 기대치와 관찰치는 차이가 있다. 현재 주사위는 게임에 적합하지 않다.  적극적
# 일원카이제곱 stats.chisquare(관찰빈도, 예상빈도)  편도카이제곱

import pandas as pd
import scipy.stats as stats

data = [4, 6, 17, 16, 8, 9]
# data = [11, 6, 10, 13, 8, 12]
result = stats.chisquare(f_obs = data)
print(result)
print('chi2 : {}, p-value : {}'.format(result.statistic, result.pvalue))
print('statistic : %.5f, p-vlaue : %.5f'%(result))  # statistic : 14.20000, p-vlaue : 0.01439   반비례
# 판정 : p-vlaue : 0.01439 < 0.05 이므로 귀무 기각
# 기대치와 관찰치는 차이가 있다. 현재 주사위는 게임에 적합하지 않다.  현재 관찰된 데이터는 우연히 발생한 데이터가 아니다.

# cv로 판정 df : ? (N - 1) = 5   cv : ? 11.07(카이제곱표 확인)  statistic : 14.2   statstic 이 cv보다 크기때문에 대립가설 적합



print('----선호도----')
# <선호도 분석 실습> 5개의 스포츠 음료에 대한 선호도에 차이가 있는지 검정하기
# 귀무 : 스포츠 음료에 대한 선호도에 차이가 없다.
# 대립 : 스포츠 음료에 대한 선호도에 차이가 있다.

datas = pd.read_csv('../testdata/drinkdata.csv')
print(datas)
print(sum(datas.관측도수))
print(stats.chisquare(datas.관측도수))
# statistic=20.488188976377952, pvalue=0.00039991784008227264 < 0.05 이므로 귀무기각
# 스포츠 음료에 대한 선호도에 차이가 있다. 그러므로 특정음료 제공을 더 많이 할 수 있도록 한다.




<console>
Power_divergenceResult(statistic=14.200000000000001, pvalue=0.014387678176921308)
chi2 : 14.200000000000001, p-value : 0.014387678176921308
statistic : 14.20000, p-vlaue : 0.01439
----선호도----
  음료종류  관측도수
0   s1    41
1   s2    30
2   s3    51
3   s4    71
4   s5    61
254
Power_divergenceResult(statistic=20.488188976377952, pvalue=0.00039991784008227264)

가설검정을 할 경우에는 p-value가 0.05보다 작으면 귀무가설 기각, 대립가설 채택이다.

전에 배웠던 데이터의 신뢰도를 확인하기 위한 p-value와는 다르게 생각해야 된다.