boxplot() ใน R: วิธีการทำ Boxแปลงใน RStudio [ตัวอย่าง]

boxplot() ใน R

boxplot() ใน R ช่วยให้มองเห็นการกระจายตัวของข้อมูลตามควอร์ไทล์และตรวจจับการมีอยู่ของค่าผิดปกติได้ คุณสามารถใช้รูปทรงเรขาคณิต geom_boxplot() จากไลบรารี ggplot2 เพื่อวาด boxplot() ใน R

เราจะใช้ชุดข้อมูลคุณภาพอากาศเพื่อแนะนำ boxplot() ใน R ด้วย ggplot ชุดข้อมูลนี้วัดคุณภาพอากาศของนิวยอร์กตั้งแต่เดือนพฤษภาคมถึงกันยายน 1973 ชุดข้อมูลประกอบด้วยข้อมูลสังเกต 154 รายการ เราจะใช้ตัวแปรต่อไปนี้:

  • โอโซน: ตัวแปรตัวเลข
  • ลม: ตัวแปรตัวเลข
  • เดือน: พฤษภาคมถึงกันยายน ตัวแปรตัวเลข

สร้างบัญชีตัวแทน Box พล็อต

ก่อนที่คุณจะเริ่มสร้าง boxplot() แรกใน R คุณต้องจัดการข้อมูลดังต่อไปนี้:

  • ขั้นตอนที่ 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"))))

แนวปฏิบัติที่ดีคือการตรวจสอบโครงสร้างของข้อมูลด้วยฟังก์ชัน gimpse()

glimpse(data_air)

Output:

## 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()
    • คุณส่งชุดข้อมูล data_air_nona ไปที่ ggplot boxplot
    • ภายในอาร์กิวเมนต์ aes() คุณต้องเพิ่มแกน x และแกน y
    • เครื่องหมาย + หมายถึงคุณต้องการให้ R อ่านโค้ดต่อไป ซึ่งจะทำให้โค้ดอ่านง่ายขึ้นโดยการทำลายโค้ด
    • ใช้ geom_boxplot() เพื่อสร้างพล็อตกล่อง

Output:

ขั้นพื้นฐาน Box พล็อต

เปลี่ยนด้านของกราฟ

คุณสามารถพลิกด้านข้างของกราฟได้

box_plot +
  geom_boxplot()+
  coord_flip()

คำอธิบายรหัส

  • box_plot: คุณใช้กราฟที่คุณเก็บไว้ ซึ่งจะหลีกเลี่ยงการเขียนโค้ดใหม่ทุกครั้งที่คุณเพิ่มข้อมูลใหม่ลงในกราฟ
  • geom_boxplot() : สร้าง boxplots() ใน R
  • coord_flip(): พลิกด้านข้างของกราฟ

Output:

เปลี่ยนด้านข้างของกราฟ

เปลี่ยนสีของค่าผิดปกติ

คุณสามารถเปลี่ยนสี รูปร่าง และขนาดของค่าผิดปกติได้

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

คำอธิบายรหัส

  • outlier.color=”red”: ควบคุมสีของค่าผิดปกติ
  • outlier.shape=2: เปลี่ยนรูปร่างของค่าผิดปกติ 2 หมายถึงรูปสามเหลี่ยม
  • outlier.size=3: เปลี่ยนขนาดของรูปสามเหลี่ยม ขนาดเป็นสัดส่วนกับจำนวน

Output:

เปลี่ยนสีของ Outlier

เพิ่มสถิติสรุป

คุณสามารถเพิ่มสถิติสรุปลงใน 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 = “จุด”: พล็อตค่าเฉลี่ยด้วยจุด
  • size=3: ขนาดของจุด
  • color =”steelblue”: สีของจุด

Output:

เพิ่มสถิติสรุป

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': วิธีซ้อนจุด: สี่ค่า:
    • “ขึ้น” (ค่าเริ่มต้น)
    • "ลง"
    • "ศูนย์"
    • “ทั้งตรงกลาง”

Output:

Box พล็อตที่มีจุด

ควบคุมความสวยงามของ Box พล็อต

เปลี่ยนสีกล่อง

คุณสามารถเปลี่ยนสีของกลุ่มได้

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

คำอธิบายรหัส

  • สีของกลุ่มจะถูกควบคุมในแมปปิ้ง aes() คุณสามารถใช้ color= Month เพื่อเปลี่ยนสีของกล่องและกราฟหนวดตามเดือน

Output:

เปลี่ยนสีของ Box

Box พล็อตที่มีหลายกลุ่ม

นอกจากนี้ยังสามารถเพิ่มหลายกลุ่มได้ คุณสามารถเห็นภาพความแตกต่างของคุณภาพอากาศตามวันที่ทำการวัด

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

คำอธิบายรหัส

  • การแมป aes() ของวัตถุทางเรขาคณิตจะควบคุมกลุ่มที่จะแสดง (ตัวแปรนี้จะต้องเป็นปัจจัย)
  • aes(fill= day_cat) ช่วยให้สร้างกล่องสามกล่องสำหรับแต่ละเดือนในแกน x ได้

Output:

Box พล็อตที่มีหลายกลุ่ม

Box พล็อตที่มีจุดกระวนกระวายใจ

อีกวิธีในการแสดงจุดคือการใช้จุดที่ไม่แน่นอน เป็นวิธีที่สะดวกในการแสดงจุดโดยใช้ Boxplot สำหรับข้อมูลเชิงหมวดหมู่ในตัวแปร R

วิธีนี้จะหลีกเลี่ยงการทับซ้อนกันของข้อมูลที่ไม่ต่อเนื่อง

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

คำอธิบายรหัส

  • geom_jitter() เพิ่มการสลายตัวเล็กน้อยในแต่ละจุด
  • รูปร่าง=15 เปลี่ยนรูปร่างของจุด 15 แทนสี่เหลี่ยม
  • color = “steelblue”: เปลี่ยนสีของจุด
  • position=position_jitter(width = 0.21): วิธีวางจุดที่ทับซ้อนกัน position_jitter(width = 0.21) หมายความว่าคุณย้ายจุด 20 เปอร์เซ็นต์จากแกน x โดยค่าเริ่มต้น 40 เปอร์เซ็นต์

Output:

Box พล็อตที่มีจุดกระวนกระวายใจ

คุณสามารถเห็นความแตกต่างระหว่างกราฟแรกด้วยวิธีกระวนกระวายใจและกราฟที่สองด้วยวิธีจุด

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

Box พล็อตที่มีจุดกระวนกระวายใจ

หยัก Box พล็อต

คุณลักษณะที่น่าสนใจอย่างหนึ่งของ geom_boxplot() คือฟังก์ชัน notched boxplot ใน R ฟังก์ชัน notch plot จะทำให้ box แคบลงรอบๆ เส้นมัธยฐาน จุดประสงค์หลักของ notched box plot คือการเปรียบเทียบความสำคัญของเส้นมัธยฐานระหว่างกลุ่มต่างๆ มีหลักฐานที่ชัดเจนว่ากลุ่มสองกลุ่มจะมีเส้นมัธยฐานต่างกันเมื่อเส้นมัธยฐานไม่ทับซ้อนกัน โดยจะคำนวณเส้นมัธยฐานได้ดังนี้:

หยัก Box พล็อต

โดย คือค่าระหว่างควอไทล์และจำนวนการสังเกต

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

คำอธิบายรหัส

  • geom_boxplot(notch=TRUE): สร้าง boxplot แนวนอนแบบมีรอยบาก R

Output:

หยัก 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