2015-10-02 40 views
4

理論上vioplot包的小提琴圖是boxplot +密度函數。小提琴劇情:如何確定相鄰數值範圍,以及它與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) 
    

Benerated通過上面:

Box vs Vio generated by above lines

Hintze, J. L. and R. D. Nelson (1998). Violin plots: a box plot-density trace synergism. The American Statistician, 52(2):181-4.

回答

1

讓我說明這一個簡單的例子:

b <- c(1:10, 20) 

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

enter image description here

的r箱線圖的定義爲(在話題借貸從ggplot's help):

上部晶須從鉸鏈延伸至是內 1.5 *鉸鏈,其中的IQR的最高值IQR是四分位數間距,或者第一和第三四分位數之間的距離爲 。

瀏覽vioplot的source code,我們看到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 
+0

感謝,特別是對生殖的例子!因此,**在vioplot **中,min()函數僅保護no以在最後一個數據點之外繪製相鄰值線,而boxplot **中的**檢查+ 1.5 * IQR內的實際最高值範圍,因此它對於您的實際數據更有意義。 –

+0

@ bud.dugong是的,正好。別客氣! – tonytonov

相關問題