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

问题描述

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

当前图

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()) 

enter image description here

现在,我想在cut变量的所有级别之间的clarity变量的每个级别内添加比较。我更喜欢使用ggpubr,但看不到可以在哪里实现。

解决方法

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

啊...好吧,我克服了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),]

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

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


ggboxplot(dsub,add='jitter'
) +
  stat_pvalue_manual(dsub_stats,tip.length = 0.01) 

enter image description here