6

理论上vioplot包的小提琴图是箱线图+密度函数。

在“箱线图部分”中,

  • 黑框对应于 IQR(确实,见下文),并且

  • 中线应该对应相同的范围(相邻值,默认 1.5 IQR),但它不是(见下文)。任何人都可以解释为什么它们不同?

    require("vioplot")
    a = rnorm(100)
    range (a)
    a = c(a,2,8,2.9,3,4, -3, -5) # add some outliers
    
    par ( mfrow = c(1,2))
    boxplot(a, range=1.5)
    vioplot(a, range=1.5 )
    

由以上计算:

由以上行生成的 Box vs Vio

Hintze、JL 和 RD 尼尔森 (1998)。小提琴图:箱线图-密度迹线协同作用。美国统计学家,52(2):181-4。

4

1 回答 1

3

让我用一个简单的例子来说明这一点:

b <- c(1:10, 20)

par(mfrow = c(1,2))
boxplot(b, range=1.5)
vioplot(b, range=1.5 )

在此处输入图像描述

R的箱线图的定义是(借用ggplot关于该主题的帮助):

上须线从铰链延伸到铰链 1.5 * IQR 内的最大值,其中 IQR 是四分位数间距,或第一和第三四分位数之间的距离。

浏览 vioplot 的源代码,我们看到upper[i] <- min(q3[i] + range*iqd, data.max).

因此,让我们尝试重现上胡须值:

# vioplot draws
quantile(b, 0.75) + 1.5 * IQR(b)
# 16

# boxplot draws
max(b[b <= quantile(b, 0.75) + 1.5 * IQR(b)])
# 10
于 2015-10-02T13:05:09.607 回答