outline = FALSE用什么方法来确定异常值?

时间:2013-02-07 20:05:22

标签: r boxplot outliers

在R中,我使用outline = FALSE参数在绘制特定集合的方框和胡须时排除异常值。它的工作非常出色,但让我想知道它究竟是如何确定哪些元素是异常值的。

boxplot(x, horizontal = TRUE, axes = FALSE, outline = FALSE)

3 个答案:

答案 0 :(得分:7)

“盒须图”术语中的“异常值”是数据集中距离中位数指定距离更远的任何点,通常大约 2.5倍的差异。中位数和0.25(下)或0.75(上)分位数。要实现这一目标,请参阅?boxplot.stats:首先,查看输出中out的定义

  

out:任何数据点的值超出了胡须的极限(if(do.out))。

这些是“异常值”。

其次,查看胡须的定义,它基于coef参数,默认为1.5:

  

胡须延伸到最极端的数据点,不超过盒子长度的coef倍。

最后,看一下“铰链”的定义,它是盒子的两端:

  

两个'铰链'是第一和第三四分位数的版本,即接近分位数(x,c(1,3)/ 4)。

将这些放在一起,你得到的离群值(大约)是距离中位数的距离,而不是中位数和相关四分位数之间距离的2.5倍。这些有些错综复杂的定义的原因(我认为)部分是历史性的,部分是希望将图的组成部分反映出数据中存在的实际值(而不是两个数据点之间的中间点)尽可能。 (您可能需要回到帮助页面中引用的原始文献,以获得完整的理由和解释。)

需要注意的是,通过此算法定义为“异常值”的点不一定是通常统计意义上的异常值(例如,根据数据的特定统计模型出乎意料地极端的点)< / strong>即可。特别是,如果你有一个大的数据集,你必然会看到很多“异常值”(一个迹象表明你可能想要切换到更加数据需求的图形摘要,如小提琴情节或豆图)。

答案 1 :(得分:2)

对于boxplot,异常值是高于或低于“胡须”的点。默认情况下,这一个扩展到不超过四分位数范围乘以框中range参数的数据点。默认情况下,range值为1.5,但您可以更改它,因此您也可以更改离群值列表。

您还可以使用boxplot.stats函数查看该函数,该函数执行绘图使用的计算。

例如,如果您有以下向量:

v <- c(runif(10), -0.5, -1)
boxplot(v)

enter image description here

默认情况下,只有-1值被视为异常值。您可以使用boxplot.stats

查看
boxplot.stats(v)$out
[1] -1

但是如果您更改range参数(或coef的{​​{1}}),则不再将-1视为异常值:

boxplot.stats

enter image description here

boxplot(v, range=2)

答案 2 :(得分:1)

boxplot()开始,这一点无法立即证明。查看range参数:

  

这决定了情节胡须从盒子中伸出多远。如果“范围”为正,则晶须延伸到最极端的数据点,该数据点不超过盒子四分位数范围的“范围”。值为零会导致晶须延伸到极端数据。

因此使用range的值,以及四分位数范围和方框(由四分位数给出)来确定胡须结束的位置。而胡须之外的一切都是异常值。

我是第一个同意这个定义不直观的人。可悲的是,它现在确立了。