小提琴曲线:如何确定相邻的数值范围,为什么它与箱线图不同?

bud*_*ong 5 r boxplot iqr violin-plot

理论上,vioplot包的小提琴图是盒图+密度函数.

在"boxplot部分"中,

  • 黑匣子对应于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 )
    
    Run Code Online (Sandbox Code Playgroud)

上面提到:

Box vs Vio由上面的行生成

Hintze,JL和RD Nelson(1998).小提琴图:箱形图 - 密度跟踪协同作用.美国统计学家,52(2):181-4.

ton*_*nov 3

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

b <- c(1:10, 20)

par(mfrow = c(1,2))
boxplot(b, range=1.5)
vioplot(b, range=1.5 )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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
Run Code Online (Sandbox Code Playgroud)