R에서 boxplot()를 만드는 방법 BoxRStudio의 플롯 [예제]

R의 boxplot()

R의 boxplot() 사분위수별 데이터 분포를 시각화하고 이상치의 존재를 감지하는 데 도움이 됩니다. ggplot2 라이브러리의 기하학적 객체 geom_boxplot()을 사용하여 R에서 boxplot()을 그릴 수 있습니다.

우리는 ggplot을 사용하여 R에서 boxplot()을 소개하기 위해 airquality 데이터 세트를 사용할 것입니다. 이 데이터 세트는 1973년 154월부터 XNUMX월까지 뉴욕의 공기 질을 측정합니다. 이 데이터 세트에는 XNUMX개의 관측치가 포함되어 있습니다. 우리는 다음 변수를 사용할 것입니다.

  • 오존: 수치변수
  • 바람: 수치변수
  • 월: XNUMX월부터 XNUMX월까지. 수치변수

만들기 Box 음모

R에서 첫 번째 boxplot()을 만들기 전에 다음과 같이 데이터를 조작해야 합니다.

  • 1단계: 데이터 가져오기
  • 2단계: 불필요한 변수 삭제
  • 3단계: 요인 수준에서 월 변환
  • 4단계: 월을 시작, 중간, 끝의 세 가지 수준으로 나누는 새로운 범주형 변수를 만듭니다.
  • 5단계: 누락된 관측값 제거

이러한 모든 단계는 dplyr과 파이프라인 연산자 %>%를 사용하여 수행됩니다.

library(dplyr)
library(ggplot2)
# Step 1
data_air <- airquality % > %

#Step 2
select(-c(Solar.R, Temp)) % > %

#Step 3
mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), 
       
#Step 4 
day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))

좋은 방법은 looking() 함수를 사용하여 데이터의 구조를 확인하는 것입니다.

glimpse(data_air)

출력:

## Observations: 153
## Variables: 5
## $ Ozone   <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ...
## $ Wind    <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6...
## $ Month   <ord> May, May, May, May, May, May, May, May, May, May, May,...
## $ Day     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...

데이터 세트에 NA가 있습니다. 제거하는 것이 현명합니다.

# Step 5
data_air_nona <-data_air %>% na.omit()	

기본 상자 그림

기본적인 R boxplot() 함수를 사용해 월별 오존 분포를 그래프로 표시해 보겠습니다.

# Store the graph
box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone))
# Add the geometric object box plot
box_plot +
    geom_boxplot()

코드 설명

  • 나중에 사용할 수 있도록 그래프를 저장하세요.
    • box_plot: 그래프를 변수 box_plot에 저장합니다. 이는 추가 사용에 유용하거나 너무 복잡한 코드 줄을 피하는 데 도움이 됩니다.
  • R boxplot()의 기하학적 객체를 추가합니다.
    • ggplot boxplot에 data_air_nona 데이터 세트를 전달합니다.
    • aes() 인수 내에 x축과 y축을 추가합니다.
    • + 기호는 R이 코드를 계속 읽기를 원한다는 것을 의미합니다. 코드를 쪼개서 더 읽기 쉽게 만듭니다.
    • geom_boxplot()를 사용하여 상자 그림을 만듭니다.

출력:

Basic Box 음모

그래프의 측면 변경

그래프의 측면을 뒤집을 수 있습니다.

box_plot +
  geom_boxplot()+
  coord_flip()

코드 설명

  • box_plot: 저장한 그래프를 사용합니다. 그래프에 새 정보를 추가할 때마다 모든 코드를 다시 쓸 필요가 없습니다.
  • geom_boxplot(): R에서 boxplots() 생성
  • coord_flip(): 그래프의 측면을 뒤집습니다.

출력:

그래프의 측면 변경

이상치 색상 변경

이상치의 색상, 모양 및 크기를 변경할 수 있습니다.

box_plot +
    geom_boxplot(outlier.colour = "red",
        outlier.shape = 2,
        outlier.size = 3) +
    theme_classic()

코드 설명

  • outlier.colour=”red”: 이상치의 색상을 제어합니다.
  • outlier.shape=2: 이상치의 모양을 변경합니다. 2는 삼각형을 가리킨다.
  • outlier.size=3: 삼각형의 크기를 변경합니다. 크기는 숫자에 비례합니다.

출력:

이상치 색상 변경

요약 통계 추가

R boxplot()에 요약 통계를 추가할 수 있습니다.

box_plot +
    geom_boxplot() +
    stat_summary(fun.y = mean,
        geom = "point",
        size = 3,
        color = "steelblue") +
    theme_classic()

코드 설명

  • stat_summary()를 사용하면 수평 상자 그림 R에 요약을 추가할 수 있습니다.
  • fun.y 인수는 반환되는 통계를 제어합니다. 당신은 의미를 사용합니다
  • 참고: 최소 및 최대와 같은 다른 통계도 사용할 수 있습니다. 동일한 그래프에 두 개 이상의 통계가 표시될 수 있습니다.
  • geom = “point”: 점으로 평균을 표시합니다.
  • size=3: 포인트의 크기
  • color =”steelblue”: 포인트 색상

출력:

요약 통계 추가

Box 점으로 플롯

다음 수평 상자 그림 R에서 점 그림 레이어를 추가합니다. 각 점은 관찰을 나타냅니다.

box_plot +
    geom_boxplot() +
    geom_dotplot(binaxis = 'y',
        dotsize = 1,
        stackdir = 'center') +
    theme_classic()

코드 설명

  • geom_dotplot()을 사용하면 빈 너비에 점을 추가할 수 있습니다.
  • binaxis='y': y축을 따라 점의 위치를 ​​변경합니다. 기본적으로 x축
  • dotsize=1: 점의 크기
  • stackdir='center': 점을 쌓는 방법: 네 가지 값:
    • "위로"(기본값),
    • "아래에"
    • "센터"
    • “중앙 전체”

출력:

Box 점으로 플롯

제어 미학 Box 음모

상자의 색상을 변경합니다

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

ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) +
    geom_boxplot() +
    theme_classic()

코드 설명

  • 그룹의 색상은 aes() 매핑에서 제어됩니다. color= Month를 사용하면 상자에 따라 색상과 수염 그림의 색상을 변경할 수 있습니다.

출력:

색상 변경 Box

Box 여러 그룹으로 플롯

여러 그룹을 추가하는 것도 가능합니다. 측정일에 따른 공기질의 차이를 시각화할 수 있습니다.

ggplot(data_air_nona, aes(Month, Ozone)) +
    geom_boxplot(aes(fill = day_cat)) +
    theme_classic()

코드 설명

  • 기하학적 객체의 aes() 매핑은 표시할 그룹을 제어합니다(이 변수는 요인이어야 함)
  • aes(fill= day_cat)를 사용하면 x축에 각 달에 대한 세 개의 상자를 만들 수 있습니다.

출력:

Box 여러 그룹으로 플롯

Box 지터링된 점이 있는 플롯

점을 보여주는 또 다른 방법은 지터링된 점입니다. R 변수의 범주형 데이터에 대한 박스 플롯으로 점을 시각화하는 편리한 방법입니다.

이 방법은 개별 데이터의 중복을 방지합니다.

box_plot +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(width = 0.21)) +
    theme_classic()

코드 설명

  • geom_jitter()는 각 점에 약간의 감쇠를 추가합니다.
  • shape=15는 점의 모양을 변경합니다. 15는 정사각형을 나타냅니다.
  • color = “steelblue”: 포인트의 색상을 변경합니다.
  • position=position_jitter(width = 0.21): 겹치는 점을 배치하는 방법입니다. position_jitter(width = 0.21)은 점을 x축에서 20% 이동한다는 의미입니다. 기본적으로는 40%입니다.

출력:

Box 지터링된 점이 있는 플롯

지터 방식을 적용한 첫 번째 그래프와 포인트 방식을 적용한 두 번째 그래프의 차이점을 확인할 수 있습니다.

box_plot +
    geom_boxplot() +
    geom_point(shape = 5,
        color = "steelblue") +
    theme_classic()

Box 지터링된 점이 있는 플롯

노치 Box 음모

geom_boxplot()의 흥미로운 기능은 R의 노치 박스 플롯 함수입니다. 노치 플롯은 중앙값 주위로 상자를 좁힙니다. 노치 박스 플롯의 주요 목적은 그룹 간 중앙값의 유의성을 비교하는 것입니다. 노치가 겹치지 않을 때 두 그룹의 중앙값이 다르다는 강력한 증거가 있습니다. 노치는 다음과 같이 계산됩니다.

노치 Box 음모

with는 사분위수와 관측치 수입니다.

box_plot +
    geom_boxplot(notch = TRUE) +
    theme_classic()

코드 설명

  • geom_boxplot(notch=TRUE): 노치 수평 상자 그림 생성 R

출력:

노치 Box 음모

요약

아래 표에서는 다양한 유형의 수평 상자 그림 R을 요약할 수 있습니다.

목표 암호
기본 상자 그림
ggplot(df, aes( x = x1, y =y)) + geom_boxplot()
측면을 뒤집다
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()
노치 박스 플롯
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)
Box 지터된 점이 있는 플롯
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))

또한 확인:- 초보자를 위한 R 튜토리얼: R 프로그래밍 언어 배우기