4.5 이변량 범주형 데이터 그래프

범주형 변수 2개를 그래프로 표시해 보겠습니다.

사용하는 변수는 Cars93$Origin 컬럼과 Cars93$AirBags 컬럼 등 2개(이변량)로, 이 두 변수 모두 factor 형의 범주형 변수임을 알 수 있습니다.

이 절에서의 이변량 범주형 데이터에 대하여 다음의 그래프를 그려 보기로 한다.

4.5.1 모자이크 그래프

모자이크 플랏(mosaic plot)은 2원, 3원 교차표를 시각화한 그래프입니다. 모자이크 플랏에는 사각형들이 그래프에 나열되고 각 사각형의 넓이각 범주에 속한 데이터의 수 또는 상대적인 크기를 의미합니다. 따라서 x축과 y축의 제목을 보고 데이터를 추론할 수 있습니다.

4.5.1.1 Base Graphics 패키지

R의 Base Graphics 패키지에 모자이크 플랏을 그리는 함수는 mosaicplot() 함수입니다.

  • 첫 번쨰 인수인 formula =는 범주형 변수들의 분할표를 구하는 변수의 목록입니다.
  • 두 번째 인수인 data =는 데이터 세트를 지정해야 합니다. 이 두 개의 인수는 기본적으로 지정이 되어야 합니다.

사용할 data =MASS 패키지가 제공하는 Cars93으로 다음은 자동차 생산국을 나타내는 Origin과 생산국가별 에어백의 설치(AirBags)와 관련한 모자이크 그래프를 보여 주고 있습니다.

library(MASS)

mosaicplot(formula = ~ Origin + AirBags, 
           data = Cars93, 
           color = c("yellow", "green", "red"), 
           cex = 0.8)
이변량 연속형 데이터 그래프 : 모자이크 그래프

Figure 4.22: 이변량 연속형 데이터 그래프 : 모자이크 그래프

  • formula = ~ Origin + AirBags : X 축에는 ~ Origin에 의해 Origin 변수가 그리고 Y 축에는 + AirBagsAirBags가 그래프에 표시됩니다.
  • color = : Y 축에 표시되는 사각형의 색깔을 지정합니다.
  • cex = : X 축과 Y 축의 데이터 글자의 크기를 지정합니다.

Cars93Origin 변수와 AirBags 변수의 분할표(Cross Tables)table() 함수로 구할 수 있습니다. 그리고 분할표의 상대적 비율prop.table() 함수로 구할 수 있습니다.

두 범주형 변수 간의 분할표를 구해 보겠습니다.

library(MASS)

# Crosstabs of Orgin and AirBags
tab <- table(Cars93$Origin, Cars93$AirBags); tab                # 분할표 생성
##          
##           Driver & Passenger Driver only None
##   USA                      9          23   16
##   non-USA                  7          20   18
tab1 <- proportions(tab, margin = 1) ; tab1                     # 비율분할표 생성 (1 = 행 단위, 2 = 열 단위)
##          
##           Driver & Passenger Driver only None
##   USA                   0.19        0.48 0.33
##   non-USA               0.16        0.44 0.40
  • table() : OriginAirBags 두 범주형 변수의 분할표를 구합니다.
  • prop.table() 또는 proportions() : 분할표 tab을 인수로 해서 상대적 비율을 구합니다. 이때, 두 번째 인수 margin =1이면 행 단위로, 2면 열단위의 비율을 구합니다.

추가적으로 base datasets에서 제공하고 있는 Titanic 데이터 세트를 모자이크 그래프로 표시해 보겠습니다.

Titanic 데이터 세트는 2,201 승객을 4개의 범주형 변수(Class, Sex, Age, Survived 등)로 분할하여 정리해 놓은 4차원 배열형태의 분할표입니다. (? Titanic으로 데이터 세트에 대한 내용을 확인해 보기 바랍니다.)

mosaicplot(Titanic,                              # 데이터 입력
            main = "Survival on the Titanic",    # 제목 설정
            color = c("red","green"),            # 색 지정
            off = 1)                             # 블럭들 사이의 간격 지정
이변량 연속형 데이터 그래프 : 모자이크 그래프 - Titanic

Figure 4.23: 이변량 연속형 데이터 그래프 : 모자이크 그래프 - Titanic

Go Top

4.5.1.2 vcd 패키지

한편 vcd 패키지가 제공하는 mosaic() 함수를 이용해서도 모자이크 그래프를 그릴 수 있으며, 또한 labelling = labelling_values 인수를 지정해서 사각형에 데이터 레이블을 표시할 수 있습니다.

library(vcd)
## Loading required package: grid
library(MASS)
data("Titanic")
mosaic(Titanic, labeling = labeling_values)
모자이크 그래프 - 데이터 레이블링 1

Figure 4.24: 모자이크 그래프 - 데이터 레이블링 1

좀 더 깔끔하게 데이터 레이블링을 해 보겠습니다.

library(vcd)
tab <- ifelse(Titanic < 6, NA, Titanic)           # 데이터 수정 : 6보다 작으면 `NA`처리
mosaic(Titanic, pop = FALSE)                      # 모자이크 그래프 그리기
labeling_cells(text = tab, margin = 0)(Titanic)   # 데이터 레이블 표시하기
모자이크 그래프 - 데이터 레이블링 2

Figure 4.25: 모자이크 그래프 - 데이터 레이블링 2

상대적 비율의 모자이크 그래프를 그려 보겠습니다.

mosaic(Titanic, pop = FALSE)
labs <- round(prop.table(Titanic), 2)             # 상대적 비율로 데이터 레이블링
labeling_cells(text = labs, margin = 0, cex = 0.6)(Titanic)      # 상대적 비율 표시
모자이크 그래프 - 데이터 레이블링 3

Figure 4.26: 모자이크 그래프 - 데이터 레이블링 3

Go Top