boxplot() trong R: Cách thực hiện BoxSơ đồ trong RStudio [Ví dụ]

boxplot() trong R

boxplot() trong R giúp hình dung sự phân bố dữ liệu theo tứ phân vị và phát hiện sự hiện diện của các giá trị ngoại lai. Bạn có thể sử dụng đối tượng hình học geom_boxplot() từ thư viện ggplot2 để vẽ boxplot() trong R.

Chúng tôi sẽ sử dụng tập dữ liệu airquality để giới thiệu boxplot() trong R với ggplot. Tập dữ liệu này đo lường chất lượng không khí của New York từ tháng 1973 đến tháng 154 năm XNUMX. Tập dữ liệu chứa XNUMX quan sát. Chúng tôi sẽ sử dụng các biến sau:

  • Ozone: Biến số
  • Gió: Biến số
  • Tháng: Tháng 5 đến tháng 9. Biến số

Tạo Box Âm mưu

Trước khi bạn bắt đầu tạo boxplot() đầu tiên trong R, bạn cần thao tác dữ liệu như sau:

  • Bước 1: Nhập dữ liệu
  • Bước 2: Bỏ các biến không cần thiết
  • Bước 3: Chuyển đổi Tháng ở cấp hệ số
  • Bước 4: Tạo một biến phân loại mới chia tháng với ba cấp độ: đầu, giữa và cuối.
  • Bước 5: Xóa các quan sát bị thiếu

Tất cả các bước này được thực hiện với dplyr và toán tử đường ống %>%.

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"))))

Một cách thực hành tốt là kiểm tra cấu trúc của dữ liệu bằng hàm lookup().

glimpse(data_air)

Đầu ra:

## 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...

Có NA trong tập dữ liệu. Việc loại bỏ chúng là khôn ngoan.

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

Biểu đồ hộp cơ bản

Hãy vẽ biểu đồ hộp R boxplot() cơ bản với sự phân bố của ôzôn theo tháng.

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

Giải thích mã

  • Lưu trữ biểu đồ để sử dụng tiếp
    • box_plot: Bạn lưu trữ biểu đồ vào biến box_plot. Điều này hữu ích cho việc sử dụng sau này hoặc tránh các dòng mã quá phức tạp
  • Thêm đối tượng hình học của R boxplot()
    • Bạn truyền tập dữ liệu data_air_nona vào hộp lệnh ggplot.
    • Bên trong đối số aes(), bạn thêm trục x và trục y.
    • Dấu + có nghĩa là bạn muốn R tiếp tục đọc mã. Nó làm cho mã dễ đọc hơn bằng cách phá vỡ nó.
    • Sử dụng geom_boxplot() để tạo biểu đồ hộp

Đầu ra:

Cơ bản Box Âm mưu

Thay đổi cạnh của đồ thị

Bạn có thể lật cạnh của biểu đồ.

box_plot +
  geom_boxplot()+
  coord_flip()

Giải thích mã

  • box_plot: Bạn sử dụng biểu đồ đã lưu trữ. Nó tránh việc phải viết lại tất cả các mã mỗi khi bạn thêm thông tin mới vào biểu đồ.
  • geom_boxplot(): Tạo boxplots() trong R
  • coord_flip(): Lật cạnh của đồ thị

Đầu ra:

Thay đổi cạnh của đồ thị

Thay đổi màu của ngoại lệ

Bạn có thể thay đổi màu sắc, hình dạng và kích thước của các ngoại lệ.

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

Giải thích mã

  • outlier.colour=”red”: Kiểm soát màu của các ngoại lệ
  • outlier.shape=2: Thay đổi hình dạng của ngoại lệ. 2 đề cập đến hình tam giác
  • outlier.size=3: Thay đổi kích thước của hình tam giác. Kích thước tỷ lệ thuận với số lượng.

Đầu ra:

Thay đổi màu của ngoại lệ

Thêm một thống kê tóm tắt

Bạn có thể thêm thống kê tóm tắt vào hộp R boxplot().

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

Giải thích mã

  • stat_summary() cho phép thêm tóm tắt vào hộp biểu đồ ngang R
  • Đối số fun.y kiểm soát số liệu thống kê được trả về. Bạn sẽ sử dụng ý nghĩa
  • Lưu ý: Các số liệu thống kê khác có sẵn như tối thiểu và tối đa. Nhiều số liệu thống kê có thể được hiển thị trong cùng một biểu đồ
  • geom=“point”: Vẽ giá trị trung bình bằng một điểm
  • size=3: Kích thước của điểm
  • color="steelblue": Màu sắc của các điểm

Đầu ra:

Thêm một thống kê tóm tắt

Box Vẽ đồ thị bằng dấu chấm

Trong hộp biểu đồ ngang R tiếp theo, bạn thêm các lớp biểu đồ chấm. Mỗi chấm biểu thị một quan sát.

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

Giải thích mã

  • geom_dotplot() cho phép thêm dấu chấm vào chiều rộng thùng
  • binaxis='y': Thay đổi vị trí của các dấu chấm dọc theo trục y. Theo mặc định, trục x
  • dotsize=1: Kích thước của dấu chấm
  • stackdir='center': Cách xếp chồng các dấu chấm: Bốn giá trị:
    • “lên” (mặc định),
    • "xuống"
    • "trung tâm"
    • “trung tâm”

Đầu ra:

Box Vẽ đồ thị bằng dấu chấm

Kiểm soát tính thẩm mỹ của Box Âm mưu

Thay đổi màu của hộp

Bạn có thể thay đổi màu sắc của nhóm.

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

Giải thích mã

  • Màu sắc của các nhóm được kiểm soát trong ánh xạ aes(). Bạn có thể sử dụng color=Month để thay đổi màu của hộp và biểu đồ râu theo tháng

Đầu ra:

Thay đổi màu của Box

Box âm mưu với nhiều nhóm

Cũng có thể thêm nhiều nhóm. Bạn có thể hình dung sự khác biệt về chất lượng không khí theo ngày đo.

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

Giải thích mã

  • Ánh xạ aes() của đối tượng hình học điều khiển các nhóm hiển thị (biến này phải là một thừa số)
  • aes(fill= day_cat) cho phép tạo ba hộp cho mỗi tháng trên trục x

Đầu ra:

Box Âm mưu với nhiều nhóm

Box Vẽ đồ thị với các chấm bị biến dạng

Một cách khác để hiển thị dấu chấm là sử dụng các điểm bị nhiễu. Đây là cách thuận tiện để trực quan hóa các điểm bằng biểu đồ hộp cho dữ liệu phân loại trong biến R.

Phương pháp này tránh được sự chồng chéo của dữ liệu rời rạc.

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

Giải thích mã

  • geom_jitter() thêm một chút phân rã cho mỗi điểm.
  • shape=15 thay đổi hình dạng của các điểm. 15 biểu diễn các hình vuông
  • color=“steelblue”: Thay đổi màu của điểm
  • location=position_jitter(width = 0.21): Cách đặt các điểm chồng nhau. location_jitter(width = 0.21) có nghĩa là bạn di chuyển các điểm đi 20 phần trăm so với trục x. Theo mặc định, 40 phần trăm.

Đầu ra:

Box Vẽ đồ thị với các chấm bị biến dạng

Bạn có thể thấy sự khác biệt giữa biểu đồ đầu tiên với phương pháp jitter và biểu đồ thứ hai với phương pháp điểm.

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

Box Vẽ đồ thị với các chấm bị biến dạng

Chữ khắc Box Âm mưu

Một tính năng thú vị của geom_boxplot() là hàm biểu đồ hộp có khía trong R. Biểu đồ khía thu hẹp hộp xung quanh trung vị. Mục đích chính của biểu đồ hộp có khía là so sánh ý nghĩa của trung vị giữa các nhóm. Có bằng chứng mạnh mẽ cho thấy hai nhóm có trung vị khác nhau khi các khía không chồng lên nhau. Một khía được tính như sau:

Chữ khắc Box Âm mưu

with là liên tứ phân vị và số lượng quan sát.

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

Giải thích mã

  • geom_boxplot(notch=TRUE): Tạo một hộp biểu đồ ngang có khía R

Đầu ra:

Chữ khắc Box Âm mưu

Tổng kết

Chúng ta có thể tóm tắt các loại biểu đồ hộp ngang R khác nhau trong bảng dưới đây:

Mục tiêu
Biểu đồ hộp cơ bản
ggplot(df, aes( x = x1, y =y)) + geom_boxplot()
lật sang một bên
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()
Biểu đồ hộp có khía
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)
Box vẽ đồ thị với các dấu chấm lộn xộn
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))

Cũng kiểm tra:- Hướng dẫn R cho người mới bắt đầu: Học ngôn ngữ lập trình R