วิธีติดป้ายกำกับค่าผิดปกติใน boxplots ใน ggplot2


บทช่วยสอนนี้ให้ตัวอย่างทีละขั้นตอนของวิธีติดป้าย กำกับค่าผิดปกติ ใน boxplots ใน ggplot2

ขั้นตอนที่ 1: สร้างกรอบข้อมูล

ขั้นแรก เรามาสร้างกรอบข้อมูลต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับคะแนนที่ทำได้โดยผู้เล่นบาสเก็ตบอล 60 คนจากสามทีม:

 #make this example reproducible
set. seeds (1)

#create data frame
df <- data. frame (team=rep(c('A', 'B', 'C'), each= 20 ),
                 player=rep(LETTERS[1:20], times= 3 ),
                 points=round(rnorm(n=60, mean=30, sd=10), 2))

#view head of data frame
head(df)

  team player points
1 AA 23.74
2AB 31.84
3 AC 21.64
4AD 45.95
5 AE 33.30
6 FY 21.80

หมายเหตุ : เราใช้ฟังก์ชัน set.seed() เพื่อให้แน่ใจว่าตัวอย่างนี้สามารถทำซ้ำได้

ขั้นตอนที่ 2: กำหนดฟังก์ชันเพื่อระบุค่าผิดปกติ

ใน ggplot2 การสังเกตถูกกำหนดให้เป็นค่าผิดปกติหากเป็นไปตามข้อกำหนดข้อใดข้อหนึ่งต่อไปนี้:

  • การสังเกตคือ 1.5 เท่าของพิสัยระหว่างควอไทล์ที่ต่ำกว่าควอร์ไทล์ที่ 1 (Q1)
  • การสังเกตคือ 1.5 เท่าของพิสัยระหว่างควอไทล์เหนือควอร์ไทล์ที่สาม (Q3)

เราสามารถสร้างฟังก์ชันต่อไปนี้ใน R เพื่อติดป้ายการสังเกตว่าเป็นค่าผิดปกติได้ หากฟังก์ชันดังกล่าวตรงตามข้อกำหนดข้อใดข้อหนึ่งจากสองข้อนี้:

 find_outlier <- function (x) {
  return (x < quantile(x, .25) - 1.5*IQR(x) | x > quantile(x, .75) + 1.5*IQR(x))
}

ที่เกี่ยวข้อง: วิธีการตีความพิสัยระหว่างควอไทล์

ขั้นตอนที่ 3: ติดป้ายกำกับค่าผิดปกติใน boxplots ใน ggplot2

จากนั้นเราสามารถใช้โค้ดต่อไปนี้เพื่อติดป้ายกำกับค่าผิดปกติใน boxplots ใน ggplot2:

 library (ggplot2)
library (dplyr)

#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
        group_by(team) %>%
        mutate(outlier = ifelse(find_outlier(points), points, NA))

#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
  geom_boxplot() +
  geom_text(aes(label=outlier), na. rm = TRUE , hjust= -.5 ) 

ค่าผิดปกติของป้ายกำกับใน boxplots ใน ggplot2

โปรดทราบว่าค่าผิดปกติสองตัวจะมีป้ายกำกับอยู่ในกราฟ

ค่าผิดปกติตัวแรกคือผู้เล่นจากทีม A ที่ทำคะแนนได้ 7.85 คะแนน และค่าผิดปกติอีกคนคือผู้เล่นจากทีม B ที่ได้คะแนน 10.11 คะแนน

โปรดทราบว่าเราสามารถใช้ตัวแปรอื่นเพื่อติดป้ายกำกับค่าผิดปกติเหล่านี้ได้

ตัวอย่างเช่น เราสามารถสลับ point ของ ผู้เล่น ในฟังก์ชัน mutate() เพื่อติดป้ายกำกับค่าผิดปกติตามชื่อของผู้เล่น:

 library (ggplot2)
library (dplyr)

#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
        group_by(team) %>%
        mutate(outlier = ifelse(find_outlier(points), player, NA))

#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
  geom_boxplot() +
  geom_text(aes(label=outlier), na. rm = TRUE , hjust= -.5 ) 

ค่าผิดปกติของทีม A ตอนนี้มีป้ายกำกับ N และค่าผิดปกติของทีม B ตอนนี้มีป้ายกำกับ D เนื่องจากสิ่งเหล่านี้แสดงถึงชื่อของผู้เล่นที่มีค่าผิดปกติสำหรับคะแนน

หมายเหตุ : อาร์กิวเมนต์ hjust ใน geom_text() ใช้เพื่อดันป้ายกำกับในแนวนอนไปทางขวาเพื่อไม่ให้ทับซ้อนจุดลงจุด

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน ggplot2:

วิธีเปลี่ยนขนาดตัวอักษรใน ggplot2
วิธีลบคำอธิบายแผนภูมิใน ggplot2
วิธีหมุนป้ายกำกับแกนใน ggplot2

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *