使用boxplot检测到更少的异常值

时间:2016-08-03 17:39:17

标签: r boxplot quantile iqr

我想使用分位数和1.5 * IQR来确定数据框中的异常值。我使用了boxplot函数,并将得到的异常值与使用分位数和iqr计算的异常值进行了比较。

我注意到这两种方法之间的区别。 boxplot方法检测到的异常值低于Q1-1.5 * IQR,Q3 + 1.5 * IQR计算。我已经尝试将boxplot中的range设置为1.5,但它仍会检测到更少的异常值。范围是设置正确的boxplot选项还是我需要设置另一个选项?

非常感谢任何帮助。

x <- c(-8.4849, -8.4848, -8.8485, -8.4848, -8.4848, -8.4848, -8.7879, -8.4848,
       -8.4849, -8.6061, -8.3838, -8.2424, -8.4849, -8.3636, -8.2424, -8.7273)
qnt = quantile(x, probs=c(.25, .75))
iqt = 1.5 * IQR(x)
x[x < (qnt[1] - iqt)]
[1] -8.8485 -8.7879 -8.6061 -8.7273
x[x > (qnt[2] + iqt)]
[1] -8.2424 -8.3636 -8.2424

boxplot(x, range = 1.5)$out
[1] -8.8485 -8.7879 -8.2424 -8.2424 -8.7273

1 个答案:

答案 0 :(得分:2)

R中的quantile()和IQR()函数都有&#34;类型&#34;论点。有9种(!)类型的分位数。它们中的大多数为这个最初不连续的函数添加了一些平滑的行为您可以在quantile()文档中阅读类型的完整定义。

boxplot()中使用的分位数的确切定义可以在boxplot.stats()文档中找到,它接近2型分位数。

所以,答案是没有选项使boxplot()表现得像分位数(),但是有一个选项可以使quantile()表现得(几乎)像boxplot()

相关问题