SW/R

R : 모자이크 플롯-mosaic plot (개념 및 예제)

얇은생각 2019. 2. 25. 12:30
반응형

모자이크 플롯 (mosaic plot)

모자이크 플롯(mosaic plot)은 무엇일까요? 2원 3원 교차표의 시각화입니다. 따라서 전체 정사각 도형을 교차표의 행 빈도에 비례하는 직사각 도형으로 나누어 줍니다. 그 다음에, 다시 각도형을 행 내 열의 빈도에 해당하는 직사각 도형으로 나누어 줍니다. 아래 그림을 참조해서 이해해보세요.


데이터


위 그림을 해석해 볼까요? 먼저 세로의 긴 직사각형의 넓이는 남성과 여성의 비율을 나타냅니다. 빨간색과 회색의 직사각형의 넓이는 합격자와 불합격자의 비율을 나타냅니다. 따라서 전체적으로 남성의 합격률이 여성보다 높다는 것을 알 수 있습니다. 이처럼 모자이크 플롯은 여러가지의 정보를 직사각형으로 나누어 표현할 수 있습니다. 


위 데이터 표현방식을 사용하려면 설치해야하는 패키지는 없습니다. 따라서 바로 사용할 수 있습니다. 이번 예제에서는 mtcars와 Titnic의 데이터를 활용하겠습니다.



실습 예제 1


# matrix 형태로 데이터가 존재하는 경우
hospital <- read.csv("hospital.csv")
head(hospital)
# freq stay
# 1 Regular 2-9
# 2 Regular 2-9
# 3 Regular 2-9
# 4 Regular 2-9
# 5 Regular 2-9
# 6 Regular 2-9
table(hospital)
# stay
# freq 10-19 2-9 20+
# Less than monthly 11 6 10
# Never 18 9 16
# Regular 16 43 3
mosaicplot(~freq+stay, data = hospital, color=TRUE,
main ="병원내원빈도vs치료기간")


데이터

위 그림은 무엇을 의미할까요? 총 9개의 직사각형이 무엇을 의미할까요? 넓이는 상대적인 크기를 의미한다고 생각하시면 됩니다. 따라서 x축와 y축의 제목을 보고 데이터를 추론할 수 있습니다. 



mosaicplot (~freq+stay, data = hospital, # 데이터는 위와 동일하게 넣기
color = c("green","blue","red"), # 직사각형의 색깔 설정
main ="병원내원빈도vs치료기간") # 제목 설정


데이터

색깔을 잘 설정하면 이해를 도울 수 있습니다. 위 그림과 비교해보세요. 또 추가적으로 교차표 형태의 데이터만 있다면 ~freq+stay, data = hospital 과정을 생략하고 그 데이터를 대신 넣을 수 있습니다.



실습 예제 2


# 3차원 교차표 형태로 데이터가 존재하는 경우
Titanic
# , , Age = Child, Survived = No
# Sex
# Class Male Female
# 1st 0 0
# 2nd 0 0
# 3rd 35 17
# Crew 0 0

# , , Age = Adult, Survived = No
# Sex
# Class Male Female
# 1st 118 4
# 2nd 154 13
# 3rd 387 89
# Crew 670 3
# , , Age = Child, Survived = Yes
#
# Sex
# Class Male Female
# 1st 5 1
# 2nd 11 13
# 3rd 13 14
# Crew 0 0

# , , Age = Adult, Survived = Yes
#
# Sex
# Class Male Female
# 1st 57 140
# 2nd 14 80
# 3rd 75 76
# Crew 192 20
> mosaicplot(Titanic, color = TRUE, off=5)


데이터

3차원 교차표 데이터로도 모자이크 플롯을 활용할 수 있습니다. 다음 타이타닉의 희생자 데이터를 보고 어떻게 데이터가 표현됬는지 확인해 보세요. 성인, 생존, 클래스 순으로 나누어 표현하고 있습니다.



실습 예제 3


mosaicplot(Titanic, # 데이터 입력
main = "Survival on the Titanic", # 제목 설정
color = c("red","green"), # 색 지정
off=1) # 블럭들 사이의 간격 지정


데이터

위 그림을 표현할 때 생존자를 초록색, 사망자를 빨간색으로 표현하였습니다. 이렇게 표현을 하니 더 눈에 잘 들어오지 않나요? 앞으로 데이터를 가시화하는데 있어서 이런 색 지정도 자주 활용한다면 좋은 데이터 분석을 할 수 있을 것입니다.

반응형