在Stata(或R)中创建带有胡须的长方体图
我想创建一个带有胡须的箱线图。我想比较几项研究。我的每一项研究在Stata(或R)中创建带有胡须的长方体图,r,stata,boxplot,R,Stata,Boxplot,我想创建一个带有胡须的箱线图。我想比较几项研究。我的每一项研究 卑鄙 标准差标准差 名字 观察次数n 在Stata 13我怎么做 通常我会打字 graph box var 但是var不是平均值……。这里有一种在R中实现的方法。如果您可以访问各个数据点,您可以执行以下操作: # Fake data y = rnorm(100) boxplot(y) 如果只有摘要统计信息,则可以按如下方式手动更改长方体和胡须统计信息的值: plot1 = boxplot(y) plot1$stats
graph box var
但是
var
不是平均值……。这里有一种在R中实现的方法。如果您可以访问各个数据点,您可以执行以下操作:
# Fake data
y = rnorm(100)
boxplot(y)
如果只有摘要统计信息,则可以按如下方式手动更改长方体和胡须统计信息的值:
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
以上数字按顺序排列:下须、下框、中线、上框、上须。您可以将这些数字更改为您拥有的任何值,如下所示:
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
或按如下方式更改单个值:
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)
这一切都是非常快速和肮脏的,但希望这能让你开始。如果你从每项研究中得到的只是平均值、标准偏差和观察次数,你就不可能生成准确的箱线图。但是,您可以假设结果遵循特定分布(例如正态分布),并使用这些汇总统计数据绘制合成生成数据集的箱线图:
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)
set.seed(144)
dat我有相同的数据加载到R中。因此,如果有人知道如何在R中执行它,那么我就可以了。我尝试了使用>箱线图和>bxpPost将数据或结构上相同的示例数据发布为。您可以访问所有数据点吗?如果不是,则最好使用显示平均值+/-SD的简单条形图。正如其他人所暗示的,可以通过使用相同的平均值和SD假装正态分布来回答这个问题。但是答案是:(1)除非使用相同的种子和相同的程序,否则不可能完全重现;(2)在统计上被广泛认为是站不住脚的;至少,这需要非常仔细的解释和理由。这是一个统计评论,但我的观点是,我们不应该鼓励为选择不当的目的使用统计软件。否则,我同意@TWL:将SD的平均值+/-某些倍数显示为一个粗略的汇总图。感谢您的所有评论。我确实同意TWL,并且知道它不是一个精确的箱线图。但是给出正态分布,我想我可以作为一个例子。我来做柱状图。谢谢//trxtrif如果您愿意假设数据是正常的,您可以直接计算铰链/栅栏等的位置(您不需要模拟,尽管它可以很好地解决问题)。