Data-Visualization

“把手”圖的替代圖形

  • August 3, 2010

在我的研究領域,顯示數據的一種流行方式是使用條形圖與“把手”的組合。例如,

在此處輸入圖像描述

根據作者的不同,“把手”在標準誤差和標準偏差之間交替。通常,每個“條”的樣本量相當小——大約六個。

這些圖似乎在生物科學中特別流行——例如,參見BMC Biology 第 3 卷的前幾篇論文。

那麼你將如何呈現這些數據呢?

為什麼我不喜歡這些情節

我個人不喜歡這些情節。

  1. 當樣本量很小時,為什麼不只顯示單個數據點。
  2. 顯示的是 sd 還是 se?沒有人同意使用哪個。
  3. 為什麼要使用酒吧。數據不會(通常)從 0 開始,但圖表上的第一次通過表明它確實如此。
  4. 這些圖表沒有給出關於數據范圍或樣本大小的概念。

R 腳本

這是我用來生成繪圖的 R 代碼。這樣您就可以(如果您願意)使用相同的數據。

                                       #Generate the data
set.seed(1)
names = c("A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3")
prevs = c(38, 37, 31, 31, 29, 26, 40, 32, 39)

n=6; se = numeric(length(prevs))
for(i in 1:length(prevs))
 se[i] = sd(rnorm(n, prevs, 15))/n

                                       #Basic plot
par(fin=c(6,6), pin=c(6,6), mai=c(0.8,1.0,0.0,0.125), cex.axis=0.8)
barplot(prevs,space=c(0,0,0,3,0,0, 3,0,0), names.arg=NULL, horiz=FALSE,
       axes=FALSE, ylab="Percent", col=c(2,3,4), width=5, ylim=range(0,50))

                                       #Add in the CIs
xx = c(2.5, 7.5, 12.5, 32.5, 37.5, 42.5,  62.5, 67.5, 72.5)
for (i in 1:length(prevs)) {
 lines(rep(xx[i], 2), c(prevs[i], prevs[i]+se[i]))
 lines(c(xx[i]+1/2, xx[i]-1/2), rep(prevs[i]+se[i], 2))
}

                                       #Add the axis
axis(2, tick=TRUE, xaxp=c(0, 50, 5))
axis(1, at=xx+0.1, labels=names, font=1,
    tck=0, tcl=0, las=1, padj=0, col=0, cex=0.1)

感謝您的所有回答。為了完整起見,我認為我應該包括我通常做的事情。我傾向於結合給出的建議:點、箱線圖(當 n 很大時)和 se(或 sd)範圍。

被版主刪除,因為託管圖像的網站似乎不再正常工作。

從點圖中可以清楚地看出,數據比“手柄條”圖所建議的要分散得多。其實A3裡面有一個負值!


我已將此答案設為 CW,因此我不會獲得代表

引用自:https://stats.stackexchange.com/questions/1173

comments powered by Disqus

相關問答