从五数汇总统计中删除离群值

Remove outlier from five-number summary statistics

如何强制 fivenum 函数 不将 异常值作为我的 maximum/minimum 值?

我希望能够在我的箱线图中看到上部和下部胡须数。

我的代码:

boxplot(data$`Weight(g)`)
text(y=fivenum(data$`Weight(g)`),labels=fivenum(data$`Weight(g)`),x=1.25, title(main = "Weight(g)"))

boxplot returns 一个 named-list,其中包含可用于在调用 fivenum:

时删除异常值的内容
  • $out 包括文字异常值。使用 setdiff(data$`Weight(g)`) 可能很诱人,但由于 R FAQ 7.31(和 floating-point 相等)可能容易出现问题,所以我建议不要这样做;相反,

  • $stats 包括用于箱线图本身的数字,没有异常值。我建议我们使用这个。

(顺便说一句,title(.) 通过 side-effect 完成工作,text(.) 没有使用它,我建议你移动那个电话。)

可重现data/code:

vec <- c(1, 10:20, 30)
bp <- boxplot(vec)
str(bp)
# List of 6
#  $ stats: num [1:5, 1] 10 12 15 18 20
#  $ n    : num 13
#  $ conf : num [1:2, 1] 12.4 17.6
#  $ out  : num [1:2] 1 30
#  $ group: num [1:2] 1 1
#  $ names: chr "1"

five <- fivenum(vec[ vec >= min(bp$stats) & vec <= max(bp$stats)])
text(x=1.25, y=five, labels=five)
title("Weight(g)")