20.4 이변량 범주형 변수 그래프

2개의 범주형 변수에 대한 분석은 두 변수 값에 대한 도수 분포표를 작성하는 것입니다. 이러한 도수 분포표를 분할표(Contingency table)이라고도 합니다. 이러한 분할표는 table(x, y) 함수 또는 xtabs(~formula) 함수로 구할 수 있습니다.

Cars93 데이터 세트에서 범주형 변수인 자동차 유형별 (Type) 실린더 수(Cylinders) 에 대한 분할표를 작성해 보겠습니다.

library(MASS)
# table() 함수를 이용하여 분할표를 작성합니다.
tab.T.C <- with(Cars93, table(Type, Cylinders))
tab.T.C
##          Cylinders
## Type       3  4  5  6  8 rotary
##   Compact  0 15  0  1  0      0
##   Large    0  0  0  7  4      0
##   Midsize  0  7  1 12  2      0
##   Small    3 18  0  0  0      0
##   Sporty   0  8  0  4  1      1
##   Van      0  1  1  7  0      0
# xtabs() 함수를 이용하여 분할표를 작성합니다.
xtabs( ~ Type + Cylinders, data = Cars93)
##          Cylinders
## Type       3  4  5  6  8 rotary
##   Compact  0 15  0  1  0      0
##   Large    0  0  0  7  4      0
##   Midsize  0  7  1 12  2      0
##   Small    3 18  0  0  0      0
##   Sporty   0  8  0  4  1      1
##   Van      0  1  1  7  0      0

이렇게 구한 분할표를 시각화하는 것이 모자이크 플롯입니다. 모자이크 플롯은 분할표에서 구한 빈도수를 사각형 모양의 그래프로 나열합니다. 이때 각 사각형의 넓이가 각 범주에 속한 데이터의 상대적 빈도 수를 나타내는 것입니다.

앞의 예를 모자이크 플롯으로 시각화 해보겠습니다.

library(MASS)

# mosiacplot() 함수를 이용하여 모자이크 플롯을 작성합니다.
mosaicplot(~ Cylinders + Type, data = Cars93)

### vcd 패키지의 mosaic() 함수를 이용하여 모자이크 플롯을 작성합니다.
# install.packages("vcd")
library(vcd)
## Loading required package: grid
# table() 함수를 이용하여 분할표를 작성합니다.
tab.T.C <- with(Cars93, table(Type, Cylinders))

# mosaic() 함수를 이용하여 모자이크 플롯을 작성합니다.
mosaic(tab.T.C, 
       gp = gpar(fill = c("red", "blue")),
       direction = "v",
       main = "Type별 Cylinders의 분할도 : mosaicplot()")

? mosaicplot() 를 이용하거나 ? vcd::mosaic()을 이용하여 자세한 도움말을 참고하기 바랍니다.

위의 그래프들은 높은 수준의 그래프 함수에 대해서 간략하게 소개하기 위해서 모수를 거의 손대지 않고 그린 그래프들입니다. 낮은 수준의 그래프 함수plot() 함수의 주요 모수 (parameter)를 설정하는 방법에 대해서는 다음 장에서 소개하도록 하겠습니다.