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

时间:2017-05-20 19:14:55

标签: r outliers

所以,我有一个数据集,知道如何使用summary命令获取五个数字摘要。现在我需要让实例高于Q3 + 1.5IQR或低于Q1 - 1.5IQR,因为这些只是数字 - 我如何从高于数字或低于数字的数据集返回实例?

4 个答案:

答案 0 :(得分:9)

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

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

如果您对该情节感到恼火,可以使用

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

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:0)

您可以在此回答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
}

答案 3 :(得分:0)

如果您尝试使用1.5 * IQR标准识别数据集中的离群值,则有一个简单的函数可以为您提供每种情况的行号,该行号是基于分组变量的离群值(在Q1和高于第三季度)。还将创建数据的箱形图,以深入了解数据的分布。

library(car)

Boxplot(DV ~ IV, data = datafile)

位置:

DV = measured variable
IV = grouping variable