6

R boxplot 函数是查看数据的一种非常有用的方法:它可以快速为您提供数据的大致位置和方差以及异常值数量的可视化摘要。另外,我想识别异常值,以便快速发现数据集中的问题。

可以使用 访问这些异常值的值myplot$out。不幸的是,这些异常值的标签似乎不可用。有一些包旨在在绘图本身上显示标签:http ://www.r-statistics.com/2011/01/how-to-label-all-the-outliers-in-a-boxplot/ ,但是它们效果不佳,我只想列出这些异常值,我不需要它们出现在情节本身上。

有任何想法吗?

4

3 回答 3

18

你自己完成了大部分艰苦的工作。剩下的就是比较:

##First create some data 
##You should include this in your question)
set.seed(2)
dd = data.frame(x = rlnorm(26), y=LETTERS)

抓住异常值

outliers = boxplot(dd$x, plot=FALSE)$out

从原始数据框中提取异常值

dd[dd$x %in% outliers,]

进一步说明:

变量dd$x是 26 个数字的向量。该变量outliers包含异常值的值(只需在 R 控制台中键入dd$x和)。outliers命令

dd$x %in% outliers

匹配 dd$x 和异常值的值,即:

[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE <snip>

方括号表示法dd[dd$x %in% outliers,]返回数据框的行dd,其中dd$x %in% outliersreturn TRUE

于 2012-06-21T08:49:00.940 回答
2

我建议which(x < myplot$stats[1] | x > myplot$stats[5])x 是您的数据。

于 2012-06-21T08:50:45.427 回答
2

如果输入的数据是具有命名元素的向量,则箱线图会保留名称。

set.seed(2)
x <- rlnorm(26)
names(x) <- LETTERS
outliers <- boxplot(x, plot=FALSE)$out
outliers
       I        O        U        X 
7.275219 5.943089 8.091541 7.061459 
于 2012-06-21T08:59:32.060 回答