728x90

R은 통계프로그래밍 언어로 일반인이 사용하기 쉽게 만든 언어이다.

그러나 필자는 프로그래머이고 비 프로그래머의 인식으로 접근하기 힘든면이 있다.

강의 또한 그러하다. 강의 곳곳에 프로그래머적인 시선이 들어있으니 참고하여 필요없으면 넘겨라.


참고:

[개발환경 셋팅하기]R설치 및 환경변수 등록-(1)

[개발환경 셋팅하기]RStudio설치-(2)

[개발환경 셋팅하기]RStudio프로젝트 만들기-(3)


이제 통계적 검정방법에 대해서 알아보도록하자.

가장 유명한 검정방법으로는 카이제곱검정이 있다. 이 검정법은 특정한 두 데이터간의 상관관계를 비교한다.

예를 들어보자. 양치와 충치생기는 비율의 상관관계가 없다라고 가정을 해보자.

그러면 양치를 하건말건 충치가 생기는 비율은 일정할것이다.

즉 전국 4000만명중에 충치 걸린사람이 1천만이라고 가정하자.

그러면 충치 걸린 사람의 비율은 3:1인 셈이다.

만약 둘 사이에 유의미한 상관관계가 없다면 양치를 한 집단에서도 3:1이 나올거고 양치를 안한 집단에서도 3:1이 나올것이다.

결과는 필자도 모른다. 그러나 만약 3:1이 나오지 않고 한쪽에 치우쳐져 있다면 결국 양치의 유무와 충치의 유무를 결정한다는 결론이 나온다.

카이제곱검정은 그 정도를 계산하는 것이다.

카이 제곱검정의 결과 p-value라는 값이 나오는데 이 값이 0.05보다 적다면 일반적으로는 상관관계가 있다고 본다.

여기서 카이 제곱검정의 전제 조건은 빈도수 5이상으로 하는데 그 이유는 적으면 통계가 왜곡되기 때문이다.

어쨋던 자세한 설명은 하지 않겠다. 여기는 통계블로그가 아니니 다른 블로그를 참조하라.

가장 중요한건 카이제곱검정은 최소 빈도가 5가 되야되며 결과값이 0.05이하면 상관관계가 있다고 본다는 것이다.



저번의 데이터를 마저 쓰자. 적당히 가공하면 쓸만해질 것이다.


library('plyr')

ds <- read.csv('2016년_사고유형별_월별_교통사고통계_20161019.csv')

y<-ddply(ds,.(분류1),summarise,봄=sum(X3월+X4월+X5월),여름=sum(X6월+X7월+X8월),가을=sum(X9월+X10월+X11월),겨울=sum(X12월+X1월+X2월))

yRow<-y$분류1

y$분류1<-NULL

rownames(y)<-yRow

print(chisq.test(y))


분류1을 기준으로 그룹화를 했다. 또한 월별로 두는것보단 계절별로 두는게 나을것 같아서 계절별로 묶었다.

마지막으로 행의 이름마저 바꿔주고 분류1열을 지워버리면 데이터프레임이 완성된다.



이 데이터를 바탕으로 카이제곱검정을 시행할 것이다.

즉 계절과 사고가 일어난 것에 상관관계가 있느냐 없느냐를 테스트하는게 될것이다.



실행한결과를 보라. p-value가 매우매우 작다. 따라서 계절과 사고유형과의 상관관계가 있다, 즉 독립적이지 않다는 결론이 나온다.

밑에 보면 warning message로 값이 정확하지 않을수도있다고 한다.

그 이유는 건널목의 빈도가 5이하이기 때문이다.


이럴경우 원래라면 피셔검정을 한번더 거쳐야한다.

피셔검정은 아래의 함수를 사용한다.


fisher.test(y)


그러나 실제로 위 데이터로는 피셔검정을 할 수 없는데 그이유는 다른 데이터들의 빈도가 커서그렇다.

피셔검정은 모든 경우의 수를 계산하므로 값이 너무 크면 시행할 수 없기 때문이다.

나중에 작은 빈도의값이 있을때 피셔검정을 테스트해 보길바란다.

+ Recent posts