본문 바로가기

내가 터득한 R 프로그램

[R프로그래밍]히스토그램의 함정

히스토그램이란 표로 되어 있는 도수 분포를 정보 그림으로 나타낸 것입니다. 

더 간단하게 말하면, 도수분포표를 그래프로 나타낸 것입니다.

보통 가로축이 계급, 세로축이 도수를 뜻합니다.

 반대로 그린다고 해서 틀린 것은 아닙니다.


중요한 것은 가로축의 계급, 이것은 보통 변수의 구간이고 서로 겹치지 않습니다. 

그리고 그래프 막대기가 완전히 붙어있어야 합니다. 


예를 들어 계급이 키라고 한다면 160~169,170~179,180~189 이런식으로 숫자와 숫자 사이의 간격이 없게 해야하며 구간끼리 겹치지 않죠. 

그래서 히스토그램을 그릴때도 간격에 따라서 막대기의 너비가 달라집니다.


R 프로그램에서 히스토그램의 명령어는


hist(데이터명)


그럼 지금까지 봐왔던 "Ecdat"의 BudgetFood 데이터를 한번 봐보도록 합시다.

BudgetFood에 나이가 분류되어 있습니다. 

이 나이를 히스토그램으로 한번 그려봅시다.


hist(BudgetFood$age)



히스토그램의 BudgetFood에서($) age(나이)를 봐보았습니다. 

이렇게 하면 계급 구간이 R프로그램 자동으로 설정을 합니다. 

하지만 계급 구간을 우리가 마음대로 설정할 수 도 있습니다.


지금 현재 계급 구간의 나이는 5단위로 되어 있습니다. 

그러니까 25~29세는 약 1500여명 되는것이죠.


히스토그램에 여러가지 명령어를 추가할 수 있지만 가장 중요한 것은 데이터명과 계급구간 설정이겠지요?


데이터명을 집어넣고 막대그래프를 5개로만 한정해 볼까요?


hist(BudgetFood$age,breaks = 5)


그리고 막대그래프를 100개로 해볼까요?



이쯤에서 히스토그램의 단점이 좀 보이시나요?


저희학과에서 통계수업을 할때 학생들을 상대로 설문조사를 해서 데이터를 만들어놓은게 있습니다.



그중의 하나가 학생들이 사는 곳으로 부터 대학교가 얼마나 떨어져 있는지를 조사하는 것이었습니다.

아마 자신이 지금 사는 곳이 아니라 고향과 떨어진 거리를 적어놓은 학생이 있는것 같은데요. 약 300km이상 떨어졌다고 쓴사람이 1,2명 정도 되었던것 같습니다.


이렇게 되면 히스토그램의 왜곡이 생깁니다. 0~100km 사이에 떨어진 사람이 많은데 그 사람들의 정확한 데이터가 300km라고 쓴 사람의 데이터때문에 완전히 흐려졌습니다.


breaks의 값을 20으로 해볼까요?



0~100km사이의 데이터를 조금 더 상세하게 볼 수 있습니다. 계급 구간을 어떻게 설정하느냐에 따라 중요하게 되죠. 근데 또 다른 문제가 있습니다.


이번에는 breaks의 값을 100으로 해보겠습니다.



네 그래프가 완전히 달라집니다. 이건 굉장히 심각한 문제입니다.


계급구간을 어떻게 설정하느냐에 따라서 히스토그램의 그래프가 완전히 달라집니다. 완전히 똑같은 데이터를 사용하는데도 말이지요.


그래서 사실 히스토그램을 사용하는 것이 그렇게 좋은 방법은 아닙니다.


그럼 무엇을 써야할까요?


그것은 다음시간에 한번 배워보도록 합시다~