我想创建一个带有胡须的盒子图。我想比较几项研究。对于我的每项研究
我怎样才能在Stata 13中这样做?
通常我会输入
graph box var
但var
不是意思........
答案 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)
重申一下,这是合成数据的绘制,假设研究结果的特定分布形式。如果您需要绘制研究结果,您需要有关每项研究的更多信息 - 最小和最大,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)
这一切都非常快速和肮脏,但希望这会让你开始。