import pandas as pd
import scipy.stats as stats
# 카이제곱 문제1) 부모학력 수준이 자녀의 진학여부와 관련이 있는가?를 가설검정하시오
# 예제파일 : cleanDescriptive.csv
# 칼럼 중 level - 부모의 학력수준, pass - 자녀의 대학 진학여부
# 조건 : level, pass에 대해 NA가 있는 행은 제외한다.
data1 = pd.read_csv("https://raw.githubusercontent.com/pykwon/python/master/testdata_utf8/cleanDescriptive.csv").dropna(subset = ['level','pass']) # NA 없애기
print(data1.head(3))
# print(data1.describe)
print(data1.isnull().sum())
print(data1['level'].unique()) # [1. 2. 3.] # 고졸, 대졸, 대학원졸
print(data1['pass'].unique()) # [2. 1.] # 1 - 합격, 2 - 불합격
#
# 귀무 가설 : 부모학력 수준이 자녀의 진학여부와 관련이 있다.
# 대립 가설 : 부모학력 수준이 자녀의 진학여부와 관련이 없다.
ctab = pd.crosstab(index = data1['level'], columns = data1['pass'])
ctab.columns = ['합격', '불합격']
print(ctab)
chi2, p, ddof, _ = stats.chi2_contingency(ctab)
print('chi2:{}, p:{}, ddof:{}'.format(chi2, p, ddof))
# chi2:2.7669, p:0.2507056, ddof:2
# 해석 : p : 0.2507056 > 0.05 이므로 귀무가설 채택
<console>
resident gender age level cost ... resident2 gender2 age2 level2 pass2
0 1.0 1 50 1.0 5.1 ... 특별시 남자 장년층 고졸 실패
1 2.0 1 54 2.0 4.2 ... 광역시 남자 장년층 대졸 실패
2 NaN 1 62 2.0 4.7 ... NaN 남자 노년층 대졸 합격
[3 rows x 14 columns]
resident 17
gender 0
age 0
level 0
cost 0
type 11
survey 77
pass 0
cost2 72
resident2 17
gender2 0
age2 0
level2 0
pass2 0
dtype: int64
[1. 2. 3.]
[2. 1.]
합격 불합격
level
1.0 49 40
2.0 55 27
3.0 31 23
chi2:2.7669512025956684, p:0.25070568406521365, ddof:2