通过分组变量绘制 pvalue 信息以进行均值比较

Plot pvalue information for mean comparisons by grouping variable

我已经制作了一个图来分别查看组,但现在想在图中包含平均成对比较的显着性水平。虽然我可以在绘图之外进行比较,但我想知道在绘图中包含比较的最有效方法是什么?

当前剧情

library(tidyverse)

dsub <- diamonds[ sample(nrow(diamonds), 10000), ]

dsub <- dsub %>%
  filter(clarity %in% c('VS2', 'VS1', 'VVS2'))

ggplot(dsub, aes(x = cut, y = carat, fill = clarity)) +
  geom_boxplot(outlier.size = 0) +
  geom_point(pch = 21, position = position_jitterdodge()) 

现在我想在 cut 变量的每个级别 中添加比较 的所有级别 12=] 变量。我更喜欢使用 ggpubr,但看不出在哪里可以实现。

已编辑以考虑 OP 对输出的偏好

啊啊...好吧好吧让我至少为你省下一堆垂直 space 并通过克服 rstatix 不遵守你的因素的顺序这一事实来整理事情ggpubr 希望其组作为字符而不是因素。

library(ggplot2)
library(dplyr)

dsub <- diamonds[ sample(nrow(diamonds), 10000), ]
dsub <- dsub %>%
   filter(clarity %in% c('VS2', 'VS1', 'VVS2'))

dsub <- droplevels(dsub)

dsub_stats <- 
   dsub %>%
   group_by(cut) %>%
   rstatix::wilcox_test(carat~clarity) %>% 
   mutate(group1 = factor(group1, 
                          ordered = TRUE, 
                          levels = c("VS2", "VS1", "VVS2"))) %>%
   arrange(cut, group1) %>% 
   mutate(group1 = as.character(group1)) %>%
   rstatix::add_xy_position(x='cut')

ggpubr::ggboxplot(dsub, x = "cut", y = "carat",
                  color = "clarity",
                  add='jitter') +
   ggpubr::stat_pvalue_manual(dsub_stats, 
                              label = "p.adj.signif", 
                              tip.length = 0.01)

reprex package (v0.3.0)

于 2020-09-24 创建
library(tidyverse)
library(rstatix)
library(ggpubr)

dsub <- diamonds[ sample(nrow(diamonds), 10000), ]

dsub <- dsub %>%
  filter(clarity %in% c('VS2', 'VS1', 'VVS2'))

dsub_stats <- dsub %>%
  group_by(cut) %>%
  wilcox_test(carat~clarity) %>% add_xy_position(x='cut')


ggboxplot(dsub, x = "cut", y = "carat", 
          color = "clarity", 
          add='jitter'
) +
  stat_pvalue_manual(dsub_stats, label = "p.adj.signif", tip.length = 0.01)