【问题标题】:Indicating the statistically significant difference in bar graph USING R使用 R 指示条形图中的统计显着差异
【发布时间】:2013-02-04 04:10:19
【问题描述】:

这是对最初在此处提出的问题的重复:Indicating the statistically significant difference in bar graph 但要求使用 R 而不是 python。

我的问题很简单。如果可能,我想在 R 中使用 ggplot2 生成条形图,并表明不同条形之间存在显着差异,例如产生这样的东西。我进行了搜索,但找不到另一个完全相同的问题。

【问题讨论】:

  • 所以只有相邻的列? A-C、B-D 或 A-D 没有 p 值?
  • 很烦人(不是你的错),我的本地防火墙中的某些东西正在扼杀你的形象。能发个链接吗?
  • 抱歉耽搁了。图片在这里:i.stack.imgur.com/3I6El.jpg
  • 我想要一个简单的选择来做 A-C/A-D 等,而且方式不太繁琐,但不确定我是否期望太多

标签: r ggplot2 bar-chart


【解决方案1】:

您可以使用geom_path()annotate() 获得类似的结果。对于此示例,您必须自己确定合适的位置。在geom_path() 中提供了四个数字来获取用于连接线的小刻度。

df<-data.frame(group=c("A","B","C","D"),numb=c(12,24,36,48))
g<-ggplot(df,aes(group,numb))+geom_bar(stat="identity")
g+geom_path(x=c(1,1,2,2),y=c(25,26,26,25))+
  geom_path(x=c(2,2,3,3),y=c(37,38,38,37))+
  geom_path(x=c(3,3,4,4),y=c(49,50,50,49))+
  annotate("text",x=1.5,y=27,label="p=0.012")+
  annotate("text",x=2.5,y=39,label="p<0.0001")+
  annotate("text",x=3.5,y=51,label="p<0.0001")

【讨论】:

  • 谢谢 - 好的,这有点繁琐,但这就是我想要的!我想没有现成的通用(自动!)方法来做到这一点
  • 哎呀,使用 faceting 时有什么方法可以控制 geom_path?
  • @JimBo 然后,您将需要 geom_path() 值的数据框,并且在此数据框中,您还必须包含与用于分面的名称和级别相同的列。
【解决方案2】:

我使用了上面建议的方法,但我发现 annotate 函数比 geom_path 函数更容易制作线条。只需使用“段”而不是“文本”。您必须按段分解并为每个线段定义起始和结束 x 和 y 值。

制作3条线段的例子:

annotate("segment", x=c(1,1,2),xend=c(1,2,2), y= c(125,130,130), yend=c(130,130,125))

【讨论】:

    【解决方案3】:

    我知道这是一个老问题,Didzis Elferts 的回答已经为这个问题提供了一个解决方案。但是我最近创建了一个 ggplot-extension 来简化添加重要性条的整个过程:ggsignif

    无需繁琐地将geom_pathannotate 添加到您的绘图中,您只需添加一个层geom_signif

    library(ggplot2)
    library(ggsignif)
    
    ggplot(iris, aes(x=Species, y=Sepal.Length)) + 
      geom_boxplot() +
      geom_signif(comparisons = list(c("versicolor", "virginica")), 
                  map_signif_level=TRUE)
    

    包的完整文档可在CRAN 获得。

    【讨论】:

    • 除了散点图和回归线还有什么类似的吗?
    • @EmmanuelGoldstein,结帐github.com/IndrajeetPatil/ggstatsplot
    • 我想使用 chisq.test 但是当用 geom_signif 计算它时,我得到的结果与我自己做的不同。是否有可能只为函数提供预先计算的 p 值?
    • 可以,只需设置annotation 参数即可。 const-ae.github.io/ggsignif/#example 上的第二个示例向您展示了如何做到这一点:)
    猜你喜欢
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2020-07-04
    • 2021-04-09
    • 2016-11-14
    相关资源
    最近更新 更多