# 카이제곱 검정(Chi-square : χ2)
- 질적자료와 질적자료간에 서로 통계적으로 관계가 있는지 판단하는 검정
- 카이제곱 분포를 기반으로 관찰된 빈도와 기대되는 빈도와 의미있게 다른지 여부를 검증한다.
예시를 통해 알아보자.
- 예제 데이터 수집
귀무가설 : 성별과 사람이 안경을 쓰는 것은 관련성이 없다.
대립가설 : 성별과 사람이 안경을 쓰는 것은 관련성이 있다.
만약 합계는 변하지 않는다고 가정했을 때 귀무가설이 맞다면 예상할 수 있는 값이 있을 것이다.
그것이 바로 기대값(Expected Value) 이다.
그래서 관찰된 값과 기대값 사이의 차이가 거의 없으면 귀무가설을 따를 수 있다.
하지만 관찰된 값과 기대값 사이의 차이가 많다면 대립가설을 따를 수 있다.
이 때, 기대값을 모두 더한 값은 무조건 0 이 된다. (편차를 모두 더하면 0이 되는 성질)
그래서 우리는 제곱을 한다.
이 값이 크면 대립가설이 될 것이고, 0에 가까우면 귀무가설을 따를 것이다. (마이너스는 나올 수 없다.)
다른 예를 하나 더 보자.
A : 결혼식을 한다고 할 때 200명쯤 올 것이다. 하는 것은 기대치이고, 결혼식 당일 220명이 왔다. 는 관찰치이다.
B : 집들이를 한다고 할 때 20명이 올 것이다. 하는 것은 기대치이고, 집들이 당일 40명이 왔다. 는 관찰치이다.
A 와 B 경우의 기대치-관찰치 차이는 20으로 똑같다. 하지만 정말 같은 차이일까?
제곱한 것에 대해 기대치로 나누어주었다.
이런 경우 "당황되는 정도"는 집들이가 10배 정도 클 것이다.
다시 첫 번째 예시로 돌아간다.
이전 예시를 보아 공식을 적용한 이것이 Chi-square 이다.
이 값이 0 에 가까워지면 기무가설을 지지하고, 0보다 아주 많이 크다면 대립가설을 지지한다.
만약 Chi-square 가 0.3 이 나온다고 한다면 귀무가설을 따를까, 대립가설을 따를까...... 역시 모른다.
χ2(Chi-square)의 분포를 알아보자.
χ2(Chi-square)의 분포는 자유도를 따른다. 자유도는 이 경우 (행의 개수 - 1) x (열의 개수 - 1) 이다.
지금까지의 정규분포와는 다르게 비대칭의 구조를 띈다. 자유도가 클 수록 정규분포와 비슷한 형상을 지닌다.
행의 개수가 2이고 열의 개수가 1이니 χ2(1) 이 된다.
# 파이썬
import pandas as pd
import scipy.stats as stats
귀무가설 : cut(품질)과 color(색상) 간에는 관련성이 없다.
대립가설 : cut(품질)과 color(색상) 간에는 관련성이 있다.
result = pd.crosstab(diamonds.cut, diamonds.color)
result
pandas.crosstab() 을 통해 두 질적 자료의 빈도표를 나타내었다.
stats.chi2_contingency(observed = result)
----------------------------------------------
(310.31790052115434,
1.394512091985105e-51,
24,
array([[ 202.22005933, 292.42065258, 284.80941787, 337.04338154,
247.85761958, 161.83574342, 83.8131257 ],
[ 616.2059696 , 891.06566555, 867.87267334, 1027.04026696,
755.27296997, 493.1466815 , 255.39577308],
[2706.85993697, 3914.25930664, 3812.37749351, 4511.56640712,
3317.7512792 , 2166.28702262, 1121.89855395],
[1732.18437152, 2504.82808676, 2439.63147942, 2887.05917686,
2123.1083426 , 1386.25884316, 717.92969967],
[1517.52966259, 2194.42628847, 2137.30893585, 2529.29076752,
1860.00978865, 1214.47170931, 628.96284761]]))
[결과 해석]
(1) 310.31790052115434 : Chi-Square 값 (소수점 셋째자리까지 표현)
(2) 1.394512091985105e-51 : p-value
(3) 24 : df(degree of freedom)
(4) array : 기대치(Expected Value)
유의확률이 0.000 이므로 유의수준 0.05 에서 cut 과 color 간에는 통계적으로 유의한 관련성이 있는 것으로 나타났다.
귀무가설 : cut(품질)과 clarity(투명도) 간에는 관련성이 없다.
대립가설 : cut(품질)과 clarity(투명도) 간에는 관련성이 있다.
result = pd.crosstab(diamonds.cut, diamonds.clarity)
result
stats.chi2_contingency(observed = result)
-----------------------------------------------
(4391.398067200364,
0.0,
28,
array([[ 22.11735261, 53.42788283, 389.96384872, 274.4223211 ,
243.88783834, 365.87652948, 109.09436411, 151.20986281],
[ 67.39610679, 162.80571005, 1188.29977753, 836.22106044,
743.17623285, 1114.90077864, 332.43288839, 460.76744531],
[ 296.05656285, 715.17037449, 5219.94466073, 3673.33878383,
3264.61292176, 4897.51868743, 1460.30598813, 2024.05202076],
[ 189.45367075, 457.65461624, 3340.36735261, 2350.65728587,
2089.1038376 , 3134.03926585, 934.48470523, 1295.23926585],
[ 165.97630701, 400.94141639, 2926.4243604 , 2059.36054876,
1830.21916945, 2745.6647386 , 818.68205413, 1134.73140527]]))
[결과 해석]
(1) 4391.398067200364 : Chi-Square 값 (소수점 셋째자리까지 표현)
(2) 0.0 : p-value
(3) 28 : df(degree of freedom)
(4) array : 기대치(Expected Value)
[결론]
유의확률이 0.000 이므로 유의수준 0.05에서
cut 과 clarity 간에는 통계적으로 유의한 관련성이 있는 것으로 나타났다.
* 실습출처 : 2020 SBA아카데미 AI 데이터분석 개발자과정 : 기초 통계 (이부일 CEO님)
'데이터 분석 > 통계(Statistics)' 카테고리의 다른 글
[Python] 분산 분석(ANOVA) : feat.크루스칼-왈리스 순위합 검정- (2) (0) | 2020.09.10 |
---|---|
[Python] 분산 분석(ANOVA) : feat.(SST,SSE,SSB) - (1) (0) | 2020.09.09 |
[Python] 대응 2표본 검정(Paired test) - (2) (0) | 2020.08.29 |
[Python] 대응 2표본 검정(Paired test) - (1) (0) | 2020.08.26 |
[Python] 독립 2표본 검정(Two sample test) (3) | 2020.08.23 |