使用箱线图检测到的异常值更少

Fewer outliers detected using boxplot

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

我注意到这两种方法之间存在差异。箱线图方法检测到的异常值少于 Q1-1.5*IQR、Q3+1.5*IQR 计算。我尝试将箱线图中的 range 设置为 1.5,但它仍然检测到较少的离群值。范围是要设置的正确箱线图选项还是我需要设置的其他选项?

非常感谢任何帮助。

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

R 中的 quantile() 和 IQR() 函数都有一个 "type" 参数。有 9(!) 种类型的分位数。他们中的大多数为这个原本不连续的函数添加了一些平滑的行为。您可以在 quantile() 文档中阅读类型的完整定义。

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

所以,答案是没有让 boxplot() 表现得像 quantile() 的选项,但是有一个选项让 quantile() 表现得(几乎)像 boxplot()