离群值(outlier),是指在数据中有一个或几个数值与其他数值相比差异较大的数值。一般我们通过箱形图来直观判断,如果观测值距箱式图底线Q1(下四分位数)或顶线Q3(上四分位数)过远,如超出箱体高度(四分位数间距)的两倍以上,则可视该观测值为离群值/异常值。

图片来自网络

计算:

  • Q1 = 数据集的中位数
  • Q2 = 较小数据集的中位数(根据Q1分成两段)
  • Q3 = 较大数据集的中位数
  • IQR = Q3 – Q1

一般我们定义Q1 – 1.5 IQR以下 或 超过 Q3 + 1.5 IQR的数据为离群值。

下面利用ggstatsplot来计算绘制箱形图并添加标签:


# 安装包ggstatsplot
# install.packages("ggstatsplot")

library(ggstatsplot)
library(dplyr)

# 加载数据集
data <- warpbreaks %>% as.data.frame()
data$label <- paste0("L", row.names(data))

# 标注离群值,此处选择了默认的小提琴+箱形图绘制,也可以选择只用箱形图
ggbetweenstats(data,
               wool, 
               breaks, 
               mean.plotting = F,
               bf.message = F,
               results.subtitle = F,
               outlier.tagging = T,
               # 添加标签
               outlier.label = label,
               # 小提琴设置参数
               violin.args = list(width = 0.8, alpha = 0.2))

参考资料:

1.https://www.r-bloggers.com/2020/01/how-to-remove-outliers-in-r/