본문 바로가기

프로그래밍/R

[통계+R] 카이제곱검정

[초급]

1. 먼저, 범주형(category) 변수가 무엇인지 이해할 필요가 있다. 나도 처음에 이해하기가 힘들었다. 

용어들에 대해서 익숙해지려면 반복해서 자꾸자꾸 봐야하는 듯 하다.


2. 범주는 우리 주위에서 쉽게 살펴볼 수 있다. 온라인 서점을 들어가보면 우리가 흔히 말하는 책의 '카테고리'들이 있다.

이 카테고리에 값을 줘서 평균을 낸다고 의미가 있을까?


3. 연속형 변수는 '172.1cm, 169.7cm, 183.0cm' 처럼 수치로 부여된다.

   범주형 변수는 '빈도(도수, Frequency)'의 형태로 주어지는 것이 대부분이다.

    

 

 남

 

 도수

72명 

48명 


4. 그러면 범주형 자료를 분석할 수 있는 기법들은 어떤 것들이 있을까?


[중급]

  범주형 변수에서 주는 거라곤 꼴랑 '빈도'뿐인데, 우리는 어떤 분석을 할 수 있을까?

  (1) 적합도 검정 

즉, 관측된 값들이 예측한 분포를 따르는지 검정하는 방법이다.

주사위를 던져서 값들이 공평하게 나오는지? 인형뽑기의 확률을 30%로 설정해놨는데 이 값에 의해서 잘 떨궈주는지?

  

위 주사위는 공평한가? 공평하지 않은가?


  

 멘델이 주장하기를 교배를 하면 잡종 비율이 A : B : C = 2 : 3 : 5 비율로 나타난다고 했는데,

 멘델의 이론이 맞는지 틀린지 알아볼 수 있다.

적합성 검정이나 독립성 검정이나 구하는 방법은 똑같다.

계산 방법은 독립성 검정이 좀 더 복잡하니까 이걸 이해하면 적합성 검정은 쉽게 이해할 수 있다.



  (2) 독립성 검정 

적합도 검정이 단일기준에 분류된 표본이라면,

독립성 검정은 복수기준에 의해 분류된 표본이다. 인과관계 혹은 관련 변수들이 서로 독립적인지 테스트하는 방법이다.

EX1) 흡연의 유무와 폐얌 발병 유무의 관계

EX2) 교육수준(초졸, 중졸, 고졸, 대졸, ...)과 수입(100만원 이상, 200만원 이상, ...)

EX3) 나이(10대, 20대, 30대 ...) 와 정당선호도(새누리당, 국민정의당, 새민주, ...))


삼성 갤럭시와 애플 아이폰의 남녀별 선호도 차이가 있을까? 없을까? 와 같은 분석을 해보자.

여기서, 주의해야할 점은 종속변수(결과값)은 "선호도 차이의 유 / 무"라는 범주형 변수다.

성별과 핸드폰 범주 사이에 관련이 있을까 없을까? 차이를 "선호도"라고 표현할 수 있겠다.

위 표만 가지고는 남녀간 선호도 차이가 존재하는지 알 수 없다.

그래서 기준을 만들어줘야 한다. 어떻게 기준을 만들어줄 수 있을지에 대한 발상이 필요하다.

일단 행의 합, 열의 합을 구해보자.



'남녀 간 선호도 차이가 없다면' 남여 구분없이 모두 공평하게 갤럭시와 아이폰을 살 것이다.

그러면 그 '공평한 값(기대값)'을 구해보자.

'왜 이렇게 기대값을 구하는 방법이 어렵냐?'라고 묻는다면 범주에 가중치를 준 것이라고 보면 된다.

남녀의 수도 다르고, 핸드폰 사용자 수도 다르니까 공평하게 해준거라고 생각하자.

이를 좀 더 간지나는 말로 표현하면 비례배분(proportional distribution)이라고도 한다.

기대도수

갤럭시

 

아이폰 

기대도수를 구했으니 카이제곱을 구할 수 있다. 차근차근히 구해보면 =16.281405라는 값이 나온다.

일단, 남녀간에 선호도 차이가 없다면 값이 굉장히 작게 나와야 하는게 정상인데 16이란 값이 나왔으니 의심한다.

16.281405 or 그 이상 나올 확률을 구해보자. 보나마나 그 확률은 굉장히 작을 것이다.

위 그래프에서 x축이 카이제곱값을 의미하고, y축이 카이제곱이 나타날 확률이다.


왜 자유도가 1인가?에 대해서는 [고급]에서 좀 더 자세하게 다루도록 하겠다.

여기서는 분할표가 2 x 2 니까 (row - 1)(column - 1) = ( 2 - 1 )( 2 - 1) = 1의 자유도를 갖고 있다고 간단히 생각하자.



<출처 : http://passel.unl.edu/pages/informationmodule.php?idinformationmodule=1130447119&topicorder=8&maxto=16&minto=1 >

표를 확인해봐도 그 확률이 너무 작아서 표를 뚫고 지나가야한다.

그 값을 한번 찾아보고 싶어서 프로그램을 돌려봤더니 아래 값처럼 엄청나게 작은 값이 나온다.

확률로는 0.009%라는 의미다. 이 확률은 p-value☆라고도 한다. 그림으로 다시 한번 표현해보면 아래와 같다.


이제 확률을 구했으니, 검정(test)을 해야 한다. 검정방법을 굳이 식으로 나타내면 아래와 같다

통계학에서 ~기호는 좌측에 있는 확률 변수가 우측에 있는 확률 분포를 따름을 의미한다.

분할표가 2x2였으니 자유도는 1이라고 위에서 언급했다. 즉, 의 분포를 따른다는 의미다.


자, 위에서 확률을 구했다. 0.00009479. 이 값은 "p-value(=유의확률)"다.


"p-value"란 귀무가설이 참이라고 생각했을 때 주어진 데이터 또는 그보다 극단적인 데이터가 관측될 확률을 말한다.

 귀무가설( : '관련이 없다'는 형태의 가설.

    EX1) 두 변수가 독립이다.

    EX2) 두 변수의 평균에 차이가 없다.

    EX3) 동전을 던졌을 때 앞면이 나올 확률과 뒷면이 나올 확률에 차이가 없다.

    EX4) 특정 약이 질뵹 치료에 효과가 없다.

    EX5) 올해 제품의 생산량과 작년의 생산량이 같다.

대립가설() : '관련이 있다'는 형태의 가설

    EX1) 올해 생산량은 작년의 생산량과 다르다(크거나 작다)

    EX2) 올해 생산량은 작년의 생산량보다 작다

    EX3) 특정 약이 질병 치료에 효과가 있다.

    EX4) 두 변수가 독립이 아니다.

    EX5) 두 변수의 평균에 차이가 있다.


천천히 이해해봐야 한다. 처음에는 이해가 잘 안간다(사실 내가).

'p-value가 낮다면' 귀무가설을 참이라고 가정했는데 관찰된 데이터가 좀처럼 볼 수 없는 값이었다는 뜻이다.

'p-value가 높다면' 흔히 볼 수 있는 마땅히 나와야 하는 값이라는 거다.


'낮다, 높다'와 같은 p-value기준은 어떻게 판단해야 할까? 바로 "알파(alpha)"값을 이용한다.

전문용어로 유의수준(significance level)이라고 하며 라고 한다.

사회과학적으로는 보통 값으로 0.05를 활용한다.


즉, p < 0.05 이면 검정(test)한 값이 "나올 확률이 로또처럼 낮은 값이야! 이건 뭔가 이상해!"라는 신호를 보내는 것이다.

반대로 p > 0.05이면 검정(test)한 값이 "음, 당연히 이렇게 나와야 할 확률이야!"라는 신호인 것이다.


귀무가설 : P값이 0.05보다 크게 나온다고 하면, 성별에 따라서 선호하는 핸드폰 브랜드 차이가 없다. 

대립가설 : P값이 0.05보다 작게 나온다고 하면, 성별에 따라서 선호하는 핸드폰 브랜드 차이가 있다. 


앞서 살펴본 p-value(0.0009479) 값은 0.05보다 작다. 따라서 남녀간 갤럭시/아이폰 선호도 차이가 "있다"는 것이다.


  (3) 동일성 검정

독립성 검정하고 헷갈린다. 얼핏 생각하면 독립성 검정과 유사하지만 자료를 얻는 개념이 다르다.


(2) 독립성 검정은 빈도가 n인 전체 자료가 주어졌을 때 두 변수 X, Y가 서로 독립인지 아닌지를 판단한다.

하나의 모집단에서 표본을 무작위 추출후 표본을 두 가지 속성(변수)에 따라 분류한다.


(3) 동일성 검정은 r개의 행과 c개의 열을 가진 두 변수 X, Y로부터 작성된 분할표의 각 열분포에서

행들이 균일한 값을 가지는지 "열을 기준(=고정)으로" 행들의 동질성(homogeneity)를 검정한다.

서로 다른 두 개 이상의 모집단에서 별도로 표본을 추출후 변수들의 분포가 동일한지 살펴본다.


부모집단(subpopulation)을 먼저 설정 후 부모집단으로부터 정해진 표본의 크기만큼 무작위로 추출한다.

이후 분할표에서 부모집단의 비율이 동일한가를 검정하게 된다.


[고급]

자유도(degree of freedom) df라고도 한다. 자유도를 이해하기 위해서는 대학원에 가야 한다고 한다.

많은 사이트에서 설명하기를

 

관측치

1번째

5

2번째

10

3번째

?

합계 

20

3번째 관측치는 1~2번째 관측치에 의해서 결정이 된다. 즉, 자유롭게 결정할 수 있는 숫자는 3개중 2개다.


다른 예를 들어보자.

술게임에서 5명이 우정주를 마셔야 한다고 한다.

그러면 앞에서 1~4번째 사람까지는 자신이 섭취해야 할 알콜양을 마음대로 정할 수 잇다.

하지만 마지막 5번째 사람은 본인의 의지와 상관없이 다 마셔야 한다.


아무튼 통계학적으로 자유도(df)는 통계적 추정을 할 때 표본자료 중 모집단에 대한 정보를 주는 독립적인 자료의 수다.

충분한 답이 되지 못했다면 죄송하다. 아무튼 이렇게까지만 이해하고 포스팅을 마쳐야겠다.


[With R]

방법 1

  1. cell_phone = matrix(c(72, 28, 55, 67),
                        nrow=2,     # 행 2개를 생성
                        byrow=TRUE, # 행 기준으로 데이터를 채운다
                        dimnames=list(c("갤럭시", "아이폰"), c("남", "여"))) # 행, 열에 이름을 부여
  2. cell_phone

방법 2

  1.   ## 매트릭스화 하기
  2. raw_data <- c(72, 28, 55, 67)
  3. trouble <- matrix(raw_data, byrow=TRUE, nrow=2)
  4. trouble
  5.  
  6.   ## 행과 열에 이름값 주기 (giving names to the rows and columns of the data table)
  7. dimnames(cell_phone) <- list("Sex" = c("남자", "여자"),
  8.                           "Cellphone" = c("갤럭시", "아이폰"))
  9. cell_phone
  10.  
  11.   ## 합계 (marginal distribution)
  12. addmargins(cell_phone)
  13.  
  14.   ## 비례배분 (proportional distribution) (소숫점 둘째자리까지)
  15. round(prop.table(cell_phone), 2)
  16.  
  17.   ## 다시소숫점 둘째자리까지 marginal distribution
  18. round(addmargins(prop.table(trouble)), 2)
  19.  
  20. windows() # 그림판 출력
  21. barplot(t(cell_phone), beside=TRUE, legend=TRUE, 
  22.         ylim=c(0, 100), # y축 눈금
  23.         ylab="Observed Frequencies in sample", # y축 설명
  24.         main="Frequency of Gallaxy/Iphone by Sex") # 제목
  25.  
  26. chisq.test(cell_phone)



(2) 독립성 검정의 예제에서 카이제곱을 실제로 손으로 구해보면 16.2845.. 정도가 나온다.

그런데 R을 돌리면 15.185 밖에 안나오는데 그 이유는 무엇일까?


제목을 보면 Yate's continuity correction이라고 써있다.


Yate가 생각하기를 특히 2x2 테이블과 같이 범주의 수가 적으면 0.5씩을 빼줘야 p값을 과대측정 하지 않는다고 한다.

자세한 내용은 위키디피아를 참조하면 되겠다.

(https://en.wikipedia.org/wiki/Yates%27s_correction_for_continuity)



참고

1. http://techntalk.tistory.com/entry/%EC%B9%B4%EC%9D%B4%EC%A0%9C%EA%B3%B1-%EA%B2%80%EC%A0%95Chi-Square-Test

2. 나부랭이의 수학블로그(http://math7.tistory.com/58)

3. R, Python 분석과 프로그래밍 (http://rfriend.tistory.com/138

4. 켈러의 경영경제통계학(제9판)

5. 통계학(류근관, 제3판)

6, R을 이용한 데이터 처리&분석 실무(서민구)







'프로그래밍 > R' 카테고리의 다른 글

[R] 시계열 그래프 그리기  (0) 2017.04.30
서울시 분실물 공공데이터 CSV 읽어들이기  (0) 2017.03.12