在Stata(或R)中用胡须创建箱形图

时间:2014-03-13 18:32:01

标签: r stata boxplot

我想创建一个带有胡须的盒子图。我想比较几项研究。对于我的每项研究

  1. 意味着
  2. 标准差sd
  3. 名称
  4. 观察次数n
  5. 我怎样才能在Stata 13中这样做?

    通常我会输入

    graph box var
    

    var不是意思........

2 个答案:

答案 0 :(得分:2)

如果您从每项研究中得到的只是平均值,标准偏差和观察次数,则无法生成准确的箱线图。但是,您可以假设结果遵循特定分布(例如正态分布),并使​​用这些汇总统计信息绘制合成生成的数据集的箱线图:

set.seed(144)
dat <- data.frame(study=c("A", "B", "C"), mean=c(1, 1.5, 1.2), sd=c(1, 2, 3),
                  n=c(40, 100, 12))
synthetic <- do.call(rbind, lapply(split(dat, seq(nrow(dat))), function(row) {
  data.frame(study=row$study, y=rnorm(row$n, row$mean, row$sd))
}))
boxplot(y~study, data=synthetic)

enter image description here

重申一下,这是合成数据的绘制,假设研究结果的特定分布形式。如果您需要绘制研究结果,您需要有关每项研究的更多信息 - 最小和最大,25,50和75四分位数以及任何异常值。

答案 1 :(得分:0)

这是在R中执行此操作的方法。如果您可以访问各个数据点,则可以执行以下操作:

# Fake data
y = rnorm(100)

boxplot(y)

如果您只有摘要统计信息,则可以手动更改box-and-whisker统计信息的值,如下所示:

plot1 = boxplot(y)
plot1$stats
           [,1]
[1,] -2.1433772
[2,] -0.5599737
[3,]  0.1944167
[4,]  0.6697005
[5,]  2.2113372

以上数字依次为:较低的晶须,下部的盒子,中线,上部盒子,上部晶须。您可以将这些数字更改为您拥有的任何值,如下所示:

plot1$stats = c(-1.5, -1.2, 0.3, 1.2, 2.6) 

或者按如下方式更改单个值:

plot1$stats[2] = -1.2

然后重绘图:

boxplot(plot1$stats)

这一切都非常快速和肮脏,但希望这会让你开始。