놀고 싶어요

[R Programming] 카이제곱분포 Chi-square Distribution, 카이제곱 독립성 검정 본문

R

[R Programming] 카이제곱분포 Chi-square Distribution, 카이제곱 독립성 검정

챌린지 2021. 5. 18. 16:02

수치형 데이터가 아닌 경우 데이터 비교할 때 '좋아한다', '좋아하지 않는다.' 같은 식으로 몇 명이 좋아하는 지 세어서 좋아하는 비율을 비교한다. (여기서의 비율은 평균값과 같은 의미를 갖는다.)

 

 

항상 같은 비율의 차이가 나오지 않고, 어떤 비율이 정답인지 정해져있지도 않고, 조금 다른 것을 아예 다르다고 할 수 없고.. -> 이런 문제를 풀때 카이제곱분포를 사용한다.

Ex) 

1. A를 먹으면 B 질병의 발생 확률이 낮아진다.

2. 흡연이 폐암에 미치는 영향

3. 해당 마케팅이 우리 상품 광고에 효과적인지 아닌지

 

 

 

카이제곱분포(Chi-square Distribution)

: 정규분포의 분산에 대한 확률분포. (평균으로 부터 얼마나 떨어져 있는가에 대해 확률적으로 알려주는 분포)

데이터가 평균으로부터 얼마나 떨어져있는지 비교 가능하다.

두 범주형 변수 간의 연관성/독립성 여부 테스트 방법으로 현실적인 분석 과정에서도 자주 사용된다.

 

카이제곱분포 기반으로 할 수 있는 분석 중 하나가 독립성검정 이다.

 

(카이제곱분포를 활용해 적합도검정, 동질성검정, 독립성검정 등을 수행할 수 있다.)

 

카이제곱 독립성 검정 (Chi-square Test)

: 두 개의 범주형 데이터를 사용한다. 하나의 범주형 데이터가 다른 하나의 범주형 데이터 값에 영향이 있는지 확인한다. 귀무가설은 두 범주형 변수는 독립적이라는 것이다.

 

가설검정 방법을 활용하여 ‘기대하는 값이 같다’는 귀무가설 하에 5% 확률도 안 되는 낮은 확률의 값이 조사에 나왔으면

평균으로부터 너무 멀리 떨어져 있음을 판정할 수 있다. 확률적으로 유의미한 범위에서 차이가 크다고 할 수 있다.

 

카이제곱 독립성 검정 (Chi-sqaure test of independence)

 

chisq.test() 함수

-> 입력 값으로 요약표 같은 matrix 구조를 필요로 한다.

가장 간단하게 이러한 구조를 만드는 방법은 table() 함수를 사용하는 것이다.

 


chi_table <- table(bike_data2$Age_Group, bike_data2$Membership_type)

연령대 별 회원권 가입 수를 요약한 표를 만들어 chi_table 변수에 선언

 

귀무가설

Age_Group은 Membership_type에 독립적이다.

= Age_Group은 Membership_type과 연관성이 없다.

 

chisq.test(chi_table)

결과 p-value < 2.2e-16 유의수준 0.05보다 작으므로 귀무가설을 기각한다.

-> Age_Group은 Membership_type과 연관성이 있다.

 

 

 

Warning message: In chisq.test(chi_table) : Chi-squared approximation may be incorrect

[R Warning] 카이제곱 approximation은 정확하지 않을 수도 있습니다.

chi_table 실행시 0이 들어 있는 셀이 많다. -> 5개보다 작은 셀이 20%가 넘으면 카이제곱 테스트는 적합하지 않다. - 다른 테스트를 사용해야 한다. 

(피셔의 정확검정은 데이터가 큰 경우에는 사용이 어렵다. 관측 데이터가 5개 미만의 셀이 20% 이상이면 적용한다.)