범주형 변수와 연속형 변수 사이의 관계에 대한 시각화

Giyu·2021년 10월 23일

Data Visualization with R

목록 보기
3/10
post-thumbnail

예시 데이터 : https://www.kaggle.com/mirichoi0218/insurance


범주형 변수와 연속형 변수 사이의 관계는 대부분 여러 개의 그룹에 따른 연속형 변수의 분포에 대해 시각화하는 것이라고 말할 수 있습니다.

범주형 변수와 연속형 변수 사이의 관계에 대한 시각화에는 주로 박스 플롯이나 바이올린 플롯 등을 사용하며, 히스토그램이나 밀도 곡선을 통해서도 가능합니다.

bmi는 연속형 변수, region은 4개의 level로 이루어진 범주형 변수입니다.


1. boxplot을 통한 시각화

ins %>% ggplot(aes(x=region, y=bmi, fill = region)) + geom_boxplot() + geom_jitter(color = "black", alpha = .3)

geom_boxplot() 함수를 사용한 뒤 추가로 geom_jitter() 함수를 사용하여 각 그룹에 따른 연속형 변수의 분포를 점으로 추가해줄 수 있습니다.

geom_jitter() 함수의 color 인자는 점의 색상을 조절할 때, alpha 인자는 색의 투명도를 조절할 때 사용됩니다.


2. violin plot을 통한 시각화

ins %>% ggplot(aes(x=region, y=bmi, fill = region)) + geom_violin() + geom_jitter(color = "black", alpha = .3)

geom_violin() 함수를 사용하여 바이올린 그래프를 통해 범주형 변수와 연속형 변수 사이의 관계를 시각화할 수 있습니다. 마찬가지로 각 그룹에 해당하는 연속형 변수의 분포를 점으로 표현하고 싶다면 geom_jitter() 함수를 사용해주면 됩니다.


3. 히스토그램을 통한 시각화

ins %>% ggplot(aes(x=bmi, fill = region)) + geom_histogram() + facet_grid(.~region)

ins %>% ggplot(aes(x=bmi, fill = region)) + geom_histogram() + facet_grid(region ~.)

물론 히스토그램을 통해서도 범주형 변수와 연속형 변수 사이의 관계를 표현할 수 있습니다. 중요한 부분은 facet_grid() 함수가 반드시 추가되어야 각 그룹에 따른 연속형 변수의 분포를 히스토그램으로 표현할 수 있다는 점입니다.

facet_grid() 함수에는 formula 형식으로 ".~ 범주형 변수" 혹은 "범주형 변수 ~." 이렇게 두 가지 형식으로 표현할 수 있으며, 각각의 차이는 그래프를 통해 알 수 있듯이 범주형 변수가 뒤에 위치한다면 분포를 세로로 시각화하며, 범주형 변수가 앞에 위치한다면 분포를 가로로 시각화합니다.


4. 밀도 곡선을 통한 시각화

ins %>% ggplot(aes(x=bmi, fill = region)) + geom_density(alpha = .5)

ins %>% ggplot(aes(x=bmi, fill = region)) + geom_density() + facet_grid(. ~ region)

ins %>% ggplot(aes(x=bmi, fill = region)) + geom_density() + facet_grid(region ~.)

히스토그램을 통한 시각화 과정과 모두 동일하되, geom_histogram() 함수 대신 geom_density() 함수를 사용하는 것이 유일한 차이입니다.

물론 facet_grid() 함수를 사용하지 않고 geom_density() 함수 하나만으로도 범주형 변수와 연속형 변수 사이의 관계를 나타낼 수 있지만, 하나의 그림 안에 모든 그룹을 전부 표현하기 때문에 색이 겹쳐보여 잘 인식하기 어렵다는 단점이 있습니다.

facet_grid() 함수의 장점은 각각의 그룹 별로 연속형 변수의 분포를 구분하여 시각화해주기 때문에 좀 더 알아보기가 수월하다는 점이라고 말할 수 있습니다.

profile
Data Analysis Log

0개의 댓글