상자도표 작성 방법 (예제 포함)

 

ggplot2 라이브러리의 기하학적 오브젝트인 geom_boxplot()을 사용하여 상자도표를 그릴 수 있다. 상자 도표는 4분위수(quantile)로 데이터 분포를 시각화하고 특이치(outlier)의 존재를 탐지하는 데 도움이 된다.

우리는 ggplot2로 상자도표를 소개하기 위해 airquality데이터 세트를 사용할 것이다. 이 데이터 세트는 1973년 5월부터 9월까지 뉴욕의 공기 질을 측정한다. 데이터 세트에는 154개의 관측치가 포함되어 있다. 우리는 다음 변수를 사용할 것이다 :

이 튜토리얼에서는 다음에 대하여 학습한다.

 

상자도표 작성

첫 번째 상자도표를 작성하기 전에 다음과 같이 데이터를 조작해야 한다 :

이 모든 단계는 dplyr과 파이프라인 연산자 %>%로 이루어진다.

 

좋은 관행은 glimpse() 함수로 데이터 구조를 확인하는 것이다.

결과 :

데이터 세트에 결측치(NA)가 있다. 이것들을 제거한다.

 

기본 상자도표

월(Month)별 오존(Ozone) 분포를 기본 상자도표로 그려본다.

코드 설명 :

결과 :

1569992583895

그래프의 방향 변경

그래프의 면을 옆으로 돌릴 수 있다.

코드 설명 :

결과 :

1569992598264

특이치의 색 변경

여러분은 특이치의 색, 모양 그리고 크기를 변경할 수 있다.

코드 설명 :

결과 :

1569992610352

 

요약 통계치 추가

상자도표에 요약 통계치를 추가할 수 있다.

코드 설명 :

결과 :

1569992625617

 

점이 있는 상자도표

다음 그림에서는 점 도표 레이어를 추가한다. 각각의 점은 각각의 관측치를 나타낸다.

코드 설명 :

결과 :

1569992648765

상자도표의 aes() 제어

상자의 색 변경

그룹의 색을 변경할 수 있다.

코드 설명 :

결과 :

1569992669590

복수 그룹의 상자도표

여러 그룹을 추가하는 것도 가능하다. 측정일(day_cat)에 따라 대기질 차이를 시각화할 수 있다.

코드 설명 :

결과 :

1569992716647

 

흩어진 점(Jittered Dots)을 가진 상자도표

점을 보여주는 또 다른 방법은 점들이 흩어져 있는 것이다. 범주형 변수로 점들을 시각화하는 편리한 방법이다.

이 방법은 이산 데이터(discreste data)의 중복을 방지한다.

코드 설명 :

Output:

1569992732158

 

흩어진 점으로 그려진 첫 번째 그래프와 점법으로 그려진 두 번째 그래프의 차이를 확인할 수 있다.

결과 :

1569992771461

 

V자형(Notched) 상자도표

geom_boxplot()의 흥미로운 특징은 v자형(notched) 상자도표이다. v자형 도표는 상자를 중앙값 주변을 좁힌다. v자형 상자도표의 주요 목적은 그룹 간 중앙값의 유의성을 비교하는 것이다. 노치가 겹치지 않을 때, 두 그룹이 서로 다른 중앙값를 가지고 있다는 강력한 증거가 된다. 노치(notch)는 다음과 같이 계산된다.

여기서, IQR : 사분범위, n : 관측치 수

 

코드 설명 :

결과 :

1569992788684

요약

다음의 표에 상자도표의 다양한 유형을 요약한다 :

오브젝티브코드
기본 상자도표ggplot(df, aes( x = x1, y =y)) + geom_boxplot()
방향 바꾸기ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()
v자형 상자도표ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)
흩어진 점을 갖는 상자도표ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))