在 R 中识别数据集中的异常值

Identifying the outliers in a data set in R

所以,我有一个数据集,并且知道如何使用 summary 命令获取五个数字的摘要。现在我需要获取高于 Q3 + 1.5IQR 或低于 Q1 - 1.5IQR 的实例,因为这些只是数字 - 我如何 return 来自数据集的实例位于数字之上或之下?

如果您的数据集是 x,您可以使用

获得这些数字
summary(x)[["1st Qu."]]

summary(x)[["3rd Qu."]]

然后你与这些数字进行比较以获得你想要的数字。

您可以使用 boxplot 获取此信息。如果你的变量是x,

OutVals = boxplot(x)$out
which(x %in% OutVals)

如果你对剧情感到厌烦,可以使用

OutVals = boxplot(x, plot=FALSE)$out

可以参考这个回答here中的函数remove_outliers。它完全符合您的要求。

remove_outliers <- function(x, na.rm = TRUE, ...) {
    qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...)
    H <- 1.5 * IQR(x, na.rm = na.rm)
    y <- x
    y[x < (qnt[1] - H)] <- NA
    y[x > (qnt[2] + H)] <- NA
    y
}

如果您尝试使用 1.5 * IQR 标准识别数据集中的离群值,有一个简单的函数可以根据您的分组变量(均在Q1及以上Q3)。它还会创建数据的箱线图,从而深入了解数据的分布。

library(car)

Boxplot(DV ~ IV, data = datafile)

其中:

DV = measured variable
IV = grouping variable