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_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:
เพิ่มสถิติสรุป
คุณสามารถเพิ่มสถิติสรุปลงใน 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 พล็อต
เปลี่ยนสีกล่อง
คุณสามารถเปลี่ยนสีของกลุ่มได้
ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) + geom_boxplot() + theme_classic()
คำอธิบายรหัส
- สีของกลุ่มจะถูกควบคุมในแมปปิ้ง aes() คุณสามารถใช้ color= Month เพื่อเปลี่ยนสีของกล่องและกราฟหนวดตามเดือน
Output:
Box พล็อตที่มีหลายกลุ่ม
นอกจากนี้ยังสามารถเพิ่มหลายกลุ่มได้ คุณสามารถเห็นภาพความแตกต่างของคุณภาพอากาศตามวันที่ทำการวัด
ggplot(data_air_nona, aes(Month, Ozone)) + geom_boxplot(aes(fill = day_cat)) + theme_classic()
คำอธิบายรหัส
- การแมป aes() ของวัตถุทางเรขาคณิตจะควบคุมกลุ่มที่จะแสดง (ตัวแปรนี้จะต้องเป็นปัจจัย)
- aes(fill= day_cat) ช่วยให้สร้างกล่องสามกล่องสำหรับแต่ละเดือนในแกน x ได้
Output:
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_plot + geom_boxplot() + geom_point(shape = 5, color = "steelblue") + theme_classic()
หยัก Box พล็อต
คุณลักษณะที่น่าสนใจอย่างหนึ่งของ geom_boxplot() คือฟังก์ชัน notched boxplot ใน R ฟังก์ชัน notch plot จะทำให้ box แคบลงรอบๆ เส้นมัธยฐาน จุดประสงค์หลักของ notched box plot คือการเปรียบเทียบความสำคัญของเส้นมัธยฐานระหว่างกลุ่มต่างๆ มีหลักฐานที่ชัดเจนว่ากลุ่มสองกลุ่มจะมีเส้นมัธยฐานต่างกันเมื่อเส้นมัธยฐานไม่ทับซ้อนกัน โดยจะคำนวณเส้นมัธยฐานได้ดังนี้:
โดย คือค่าระหว่างควอไทล์และจำนวนการสังเกต
box_plot + geom_boxplot(notch = TRUE) + theme_classic()
คำอธิบายรหัส
- geom_boxplot(notch=TRUE): สร้าง boxplot แนวนอนแบบมีรอยบาก R
Output:
สรุป
เราสามารถสรุปประเภทต่างๆ ของแผนภูมิกล่องแนวนอน 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