SPSS로 계산하게 하는 예제가 있어서 R로 다시 돌려보면서 정리했다. 사실 R이 데이터의 이해를 담보로 해야 할 수 있는 부분들이 많아서 SPSS나 SAS 예제더라도 R로 돌려보는게 의미가 좀 크다.
아래와 같은 데이터가 있다고 가정할 경우..
> read.csv(“d:/knou/pkg/5-9.csv”)
교육수준 흡연실태 사원수
1 대졸 과흡연 51
2 고졸 과흡연 22
3 중졸 과흡연 43
4 대졸 흡연 92
5 고졸 흡연 21
6 중졸 흡연 28
7 대졸 비흡연 68
8 고졸 비흡연 9
9 중졸 비흡연 22
교육정도의 차이가 흡연실태의 차이와 관련이 있는지 검정을 실시하고자 한다.
따라서 귀무가설은 : 교육수준과 흡연실태는 별 상관이 없다(상호 독립)로 하고, 대립가설은 두 변수가 관련이 있다는 것으로한다(독립적이지 않다).
이를 분석이 편한 분할표(contingency table) 형태로 만들어 준다.
> smoke <- read.csv(“d:/knou/pkg/5-9.csv”)
> smoking <- xtabs(사원수 ~ 교육수준 + 흡연실태, data=smoke)
> smoking
흡연실태
교육수준 과흡연 비흡연 흡연
고졸 22 9 21
대졸 51 68 92
중졸 43 22 28
> apply(smoking, 1, sum)
고졸 대졸 중졸
52 211 93
> apply(smoking, 2, sum)
과흡연 비흡연 흡연
116 99 141
이정도 데이터면 실제 고졸-과흡연와 같은 모든 pairs에 대해서 변수들간의 독립성 가정으로 예상빈도수를 계산할 수 있다.
예를 들어 고졸-과흡연자의 예상값은 356 : 116 = 52 : x , x = 16.9 가 된다. 이 식은 전체 과흡연자의 비율이 그대로 고졸 과흡연자의 비율을 예상하는데 쓰이는 것이고 교육수준이 전혀 고려되지 않은 결과값을 단순히 비례식으로 계산한 것이다.
이렇게 관측빈도와 기대빈도를 계산하고 각 차이값이 크면 두 변수간의 독립이 아니게 해석할 수 있고 차이값이 그다지 크지 않으면 독립이라고 할 수 있는데 이 때 사용하는 검정법이 카이제곱 검정이다. 아주 오랜 옛날에 이 검정법을 feature importance를 계산하는데 사용한 경험이 있는데, 결국 기계학습에 검정 통계학 방법이 사용된 것이라 볼 수 있다.
feature importance 계산하는 곳에서는 모든 독립변수에 대해서 종속변수를 예측하는데 영향을 끼치는지 아닌지에 대해서 카이제곱 통계량을 구해서 정도를 판단하게 되는것이다. 이 값을 구하려면 카이제곱 검정을 독립변수의 개수만큼 돌려야 하고 숫자형 변수의 경우 명목형 변수로 변환을 하는 작업이 필요할 것이다.
여튼 핵심 의미는 이렇고…
R로 계산을 해보자.
> chisq.test(smoking)
Pearson’s Chi-squared test
data: smoking
X-squared = 18.5097, df = 4, p-value = 0.0009808
결과값을 보면 흡연수준과 교육수준은 변수들간의 상호영향을 끼치는 것(상호 독립이 아니다)으로 보이고 있다는 것을 p-value를 통해 알 수 있다.
실제 기대도수가 5이하인 분할표칸이 전체 20% 이상을 차지한다면 Fisher의 exact test를 수행할 것을 권장하고 있다.
카이제곱 독립성 검정(R) by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.