yekang

[Part 1. 차이를 확인하는 데이터 요약] ~25% 본문

빅데이터/R

[Part 1. 차이를 확인하는 데이터 요약] ~25%

예캉 2018. 3. 3. 22:09
* 25 % 먹고 싶은 거 먹어, 난 짜장
 몸무게나 수능 점수 같은 연속형 변수는 다양한 값을 가질 수 있다. 1점과 2점 사이에도 1.1243과 같이 얼마든지 세부적인 점수를 만들 수 있는 것이다. 하지만 범주형 변수는 다르다. 정해진 값 중에서 하나를 선택해야 한다. 짜장면과 짬뽕, 혹은 볶음밥 중에서 하나를 선택해야 하지 그 중간은 없다. 이와 같이 범주형 변수가 가질 수 있는 한정적인 값들을 수준(Level)이라고 한다.

 데이터를 요약하는 입장에서 범주형 변수의 분석은 상대적으로 편하다. n개의 관측치가 모두 값이 다른 연속형 변수는 줄을 세워 다섯 숫자를 찾고 평균이나 표준편차를 계산해서 설명했지만 범주형 변수는 수준별로 몇 개의 관측치가 있는지 세면 되기 때문이다. 예를 들어 몸무게는 평균과 표준편차로 요약하면 겨우 분포를 어림짐작할 수 있지만 성별은 남자, 여자가 몇 명인지만 세면 성별 분포를 바로 확인할 수 있다. 계수(Counting)로 범주형 변수를 요약하는 과정을 보자.

- 동전 던지기

 동전 던지기, 가위바위보, 사다리 타기는 전형적인 범주형 변수가 된다. 동전 던지기를 예로 들어 동전을 하나 던졌다가 받은 뒤 앞면인지 뒷면인지 기록해 본다. 반복횟수는 10번이고 그 림이 나오면 "앞" 숫자가 나오면 "뒤"라고 적는다.

 횟수

 1

10 

 수준(앞/뒤)

 

 

 

 

 

 

 

 

 

 


 이 표는 '동전을 던져 나온 면'이라는 10개의 관측치를 모은 변수이다. "앞" 혹은 "뒤"로 기록되어 있다. 동전을 몇번을 던져도 이 변수의 수준은 "앞" 과 "뒤"이다. 그리고 다음과 같은 결과를 얻었다.


 횟수

 1

10 

 수준(앞/뒤)

 앞

뒤 

앞 

뒤 

뒤 

뒤 

앞 

앞 


 총 10개의 관측치에서 앞면이 6개, 뒷면이 4개가 나왔다. 하지만 한눈에 보기엔 다소 불편한 정렬상태라 보기 좋게 정렬해 본다. 

 횟수

 1

10 

 수준(앞/뒤)

 앞

앞 

앞 

앞 

앞 

앞 

뒤 

뒤 

뒤 

뒤 



 수준을 내림차순으로 정렬하고 나니 같은 값, 같은 수준을 가지는 관측치들끼리 나눠진다. 그럼 이제 10개 중에서 앞면이 몇 번 나왔는지, 뒷면이 몇 번 나왔는지 손쉽게 셀 수 있다. 표로 정리해본다.

 수준

앞면 

뒷면 

 횟수


 지금은 수준이 "앞"과 "뒤" 2개밖에 없어서 숫자만 살펴봐도 변수를 파악할 수 있지만, 거주지역이나 연령대처럼 범주형 변수의 수준 개수가 많으면 숫자만으로는 파악하기 힘들다. 숫자는 크기를 효율적으로 표현하는 방법이지, 한눈에 차이를 파악하기엔 썩 효과적이지 않다. 그래서 직관적으로 받아들일 수 있는 그림, 그래프를 활용해 숫자를 표현해 본다. 


- 파이 차트와 막대그래프

첫 번째 그림은 파이 차트(Pie chart)다. 수준들이 원 모양의 파이 하나를 두고 각각의 비중에 따라 조각을 나눠 갖는다. 중심각의 크기로 전체 중에서 각 수준의 비중이 얼마만큼인지를 표현하는 것이다. 


다음은 막대그래프(Barplot)이다. 막대그래프는 수준별로 관측치의 수만큼 막대를 높이 쌓아서 표현한다. 막대가 높을수록 많은 관측치가 있다는 의미다. 막대그래프는 가끔 히스토그램이랑 헷갈리기도 하는데 히스토그램가로축에 연속형 변수가 들어와서 적절한 구간으로 나누는 중간 과정이 있다. 구간 간격을 어떻게 나누느냐에 따라 모양이 달라지기도 한다. 반면 막대그래프가로축에 범주형 변수가 들어오기 때문에 구간으로 나눌 필요가 없다. 동전 데이터는 수준이 2개 뿐이라서 어떤 그래프든 한눈에 결과를 확인할 수 있지만, 수준의 수가 늘어나면 파이 차트보다는 막대그래프가 더 효율적이다. 


수준의 수가 동전 던지기 보다 많은 '연령대별 회원 수'라는 데이터를 살펴본다.

연령대 

10대 

20대 

30대 

40대 

50대 

회원 수

10 


파이 차트 코드는 다음과 같다.

member<-c(10,7,8,7,9)

num<-c("10대","20대","30대","40대","50대")

pie(member, labels=num, main="연령대별 회원 수")



막대그래프 코드는 다음과 같다.

member<-c(10,7,8,7,9)

num<-c("10대","20대","30대","40대","50대")

barplot(member,names.arg=num,main="연령대별 회원 수")



 파이 차트가 깔끔하게 보이긴 하나, 수준끼리 비교하기가 어렵다. 20대와 40대의 파이 크기가 같고, 30대는 값이 1만큼 크지만 눈으로 그 차이를 파악하는 데 어려움이 있기 때문이다. 이처럼 파이차트비중의 차이가 크게 없을 때는 수준 간의 차이를 정확히 확인하기가 어렵다. 반면 막대그래프크기가 높이로 표현되어 있어 어떤 수준이 값이 더 크고 작은지 그 차이를 한눈에 비교할 수 있어 훨씬 좋다. 이처럼 하나의 범주형 변수는 계수를 통해 간단히 요약하고 그 결과를 단순하지만 효과적인 막대그래프로 손쉽게 표현할 수 있다.






Comments