카이제곱 분포에 기초한 통계적 방법으로 관찰된 빈도(obs)가 기대되는 빈도(exp)와 의미있게 다른지의 여부를 검증하기 위해 사용되는 검증방법
교차분석이라고도 한다.
적합도(goodness of fit)라고도 함. => 우리가 가진 데이터가 우리가 예상하는 값과 fit이 잘 맞냐 아니냐
우리가 가진 변수가 명목척도일 때 카이제곱 검정을 실시한다.
또한 데이터의 값은 개수여야 한다.
cf. t-test의 경우 두 개(혹은 세 개 이상)의 집단이 같은지 다른지 평균값을 가지고 비교.
카이제곱 검정의 경우,
카이제곱 값은 어떻게 계산할까?
(이 카이제곱 통계량은 표준화시켜서 비교를 하기가 어려워서 pvalue로 바꿔줘야 한다.)
observed는 우리가 가진, 관측한 데이터이고 expected는 기대값이다.
예를 들어 주사위를 60번 던졌을 때, 각각의 숫자는 10번씩 나온다고 기대할 수 있다.
obs와 exp의 차를 제곱하는 것을 통해 음수가 나오는 경우를 방지할 수 있고 obs와 exp의 차이를 강조하는 효과가 있다.
주어진 데이터가 특정 예상되는 분포와 동일한 분포를 나타내는지에 대한 가설검정
(즉, 데이터의 분포가 예상과 같은지)
주사위를 총 120번 던진다고 해보자.
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
예상 | 20 | 20 | 20 | 20 | 20 | 20 |
실제 | 17 | 23 | 19 | 21 | 13 | 27 |
실제 | 3 | 27 | 14 | 26 | 26 | 24 |
Fair한 주사위라면 1~6 각각이 모두 공정하게 20번씩 나온다고 예상할 수 있다.
하지만 현실은 그렇지 않다.
가설검정
H0 : 표본집단의 분포가 동일할 것이다 (1~6 각각의 범주가 일어날 확률이 동일할 것이다)
H1: 아니다 분포는 동일하지 않을 것이다.
from scipy.stats import chisquare
import numpy as np
obs1 = np.array([19, 23, 20, 18, 22, 21])
chisquare(obs1, axis=None)
# Power_divergenceResult(statistic=0.8536585365853658, pvalue=0.9734853457112421)
# pvalue가 약 0.97로 충분히 큰 값 => 귀무가설 채택. 분포가 동일할 것이다.
obs2 = np.array([2, 33, 6, 23, 8, 26])
chisquare(obs2, axis=None)
# Power_divergenceResult(statistic=48.816326530612244, pvalue=2.4195922231210123e-09)
# pvalue가 0.0000..으로 굉장히 작다. => 귀무가설 기각. 대립가설 채택. 분포가 동일하지 않을 것이다.
변수가 두 개라는 의미. 둘다 명목척도.
이 변수들 사이에 연관성이 있는지 없는지 확인하기 위한 검정
(두 표본집단의 분포가 동일한지)
이 명목척도는 두 개 이상의 범주(category)를 가진다.
변수가 두 개이므로 두 개의 컬럼에 작성.
가장 단순한 형태는 2x2로, 각각의 변수가 두 개의 범주를 가지고 있는 경우
예를 들어서, 바이러스 감염과 혈액형에 대한 분석을 한다고 할 때
가설검정
H0: 바이러스 감염과 혈액형 사이에는 연관성이 없다.(상호 독립이다)
H1: 바이러스 감영과 혈액형 사이에는 연관성이 있다.
주의! 절대 인과관계가 아니라 상관관계! 연관성!
from scipy.stats import chi2_contingency
# 예를 들어
obs = pd.crosstab(df['virus'], df['bloodtype'])
print(chi2_contingency(obs, correction = False))
# scipy.stats.chi2_contingency(observed, correction=True, lambda_=None)
# observed: array_like
# The contingency table. The table contains the observed frequencies (i.e. number of occurrences) in each category. In the two-dimensional case, the table is often described as an “R x C table”.
[출처] Youtube, Sapientia a Dei
똑똑이