카이제곱(x2) 검정에 대해서 학습한 내용 정리하려고 한다.
먼저 카이제곱 검정이란 무엇일까?
: 관찰된 빈도가 기대되는 빈도와 의미있게 다른지의 여부를 검정하기 위해 사용되는 검정방법이라고 한다.
카이제곱 검정(chi-squared test) 또는 χ2 검정은 카이제곱 분포에 기초한 통계적 방법으로, 관찰된 빈도가 기대되는 빈도와 의미있게 다른지의 여부를 검정하기 위해 사용되는 검정방법이다.
또한 카이제곱 검정은 연속형 데이터가 아닌 범주형 데이터를 사용한다.
관찰된 빈도와 기대되는 빈도는 무엇일까?
관찰빈도(observed frequency) : 실제로 수집된 데이터의 빈도이다.
기대빈도(expected frequency) : 우리가 기대할 수 있는 데이터의 빈도(?)이다.
아래와 같은 표가 있다고 한다.
A | B | |
---|---|---|
관찰빈도 | 700 | 300 |
기대빈도 | 500 | 500 |
A반과 B반의 학생의 수가 1000명 이라고 할때 특별할 것이 없다면 우리는 A반에 500명, B반에 500명이 있을 것이라고 기대할 수 있다.
관찰빈도와 기대빈도가 나왔으니 이것이 의미있게 다른지 여부를 검정해보겠다.
귀무가설(H0) : 관찰빈도는 기대빈도와 같다
대립가설(H1) : 관찰빈도는 기대빈도와 다르다.
아래는 카이제곱(x2)의 식이다.
$$x^{2} = \sum\frac{(O_i - E_i)^{2}}{E_i}$$
Oi는 관찰빈도, Ei는 기대빈도를 의미한다.
말로 풀어서 설명하면 관찰빈도에서 기대빈도를 빼주고 제곱한 값을 기대빈도로 나누어준뒤 모든 값을 더하는 것이다.
x2 값을 구해보면
$$\frac{(700-500)^{2}}{500} + \frac{(300-500)^{2}}{500} = 160$$
자유도를 구해보면 자유도는 (A반, B반)= 2반 - 1
= 1 이 나오게 된다.
즉 자유도는 1이다.
위와 같은 카이제곱 검정표에서 자유도 1일때 0.05의 값을 찾게되면 3.84로 우리가 구한 160의 값이 찾은 값보다 크기 때문에 귀무가설(H0)를 기각하게 된다.
카이제곱(x2)검정은 하나의 요인을 검정하는 방법과 두가지 요인을 검정하는 방법이 있다.
적합도검정(goodness of fit test = one way chi square test) : 하나의 요인을 검정하는 방법
독립성검정(test of independence = two wat chi square test) 혹은 교차분석 이다 : 두가지 요인을 검정하는 방법
방금 우리가 진행한 검정방법이 적합도검정이라고 할 수 있다.
왜 적합도 검정일까?
: 우리가 가진 데이터가 우리가 생각하는 기대빈도와 잘 맞는가(적합하는가) 검정하는 것 이기때문이다.
파이썬의 scipy.stats을 이용하면 쉽게 적합도검정을 할 수 있다.
stats.chisquare()함수를 이용한다. 함수에 obs(관측빈도)를 넣어주면 통계랑, pvalue를 구할 수 있다.
코드는 다음과 같다.
import scipy.stats as stats
statistic, pvalue = stats.chisquare(obs, axis=None)
위에서는 하나의 요인을 검정하였고, 두가지 요인을 검정하는 독립성검정(test of independence) = 교차분석이다
교차분석은 '범주형'데이터간의 연관성(독립성)을 확인하기 위하여 분할표를 이용해서 확인하는 분석 방법이다.
그래서 파이썬의 pandas 라이브러리를 이용하면 쉽게 분할표를 만들 수 있다.
위와 같은 데이터를 가지고 pivot_table 함수를 이용하여 아래와 같은 형태의 데이터프레임을 만들수 있다.
위의 데이터를 scipy.stats의 chi2_contingency()함수를 사용하면 쉽게 교차분석을 할 수 있다.
코드는 아래와 같다.
import scipy.stats as stats
statistic, pvalue, dof, exp = stats.chi2_contingency(DataFrame)
아래의 분할표를 통해서 기대빈도를 구해보겠다.
먼저 분할표 이다.
4x3과 같은 행렬일때 기대빈도를 구하는 공식은 다음과 같다.
$$exp = \frac{Row\;total * Column\;Total}{Grand\;Total}$$
쉽게 말하면 행의 총합계 * 열의 총합계 / 총합계 이다.
대구와 60~85m2의 기대값을 구해보면 2175 * 1624 / 3917 = 901.761...이 나오게 된다.
귀무가설(H0)은 두 집단 혹은 변수(지역과 규모)가 독립사건(연관성이 없다)이다.
대립가설(H1)은 두 집단 혹은 변수(지역과 규모)가 종속사건(연관성이 있다)이다.
자유도를 구하는 공식은 (지역의 수[서울, 대전, 대구, 부산] 4 - 1) * (규모의 수[60~85m2, 85m2~, ~60m2)]3 - 1)
즉 3 * 2 = 6이 자유도가 된다.