在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

我想创建一个带有胡须的箱线图。我想比较几项研究。我的每一项研究

  • 卑鄙
  • 标准差标准差
  • 名字
  • 观察次数n
  • 在Stata 13我怎么做

    通常我会打字

    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如果您愿意假设数据是正常的,您可以直接计算铰链/栅栏等的位置(您不需要模拟,尽管它可以很好地解决问题)。