在 R 中隐藏 NS 显著性和括号,使用 geom_pwc、stat_pvalue_manual 或 stat_compare_means

Hiding NS significance and brackets in R, using geom_pwc, stat_pvalue_manual, or stat_compare_means

提问人:Saud Lingawi 提问时间:7/12/2023 最后编辑:MarkSaud Lingawi 更新时间:9/1/2023 访问量:427

问:

我面临 、 和 的问题。问题如下:stat_compare_meansgeom_pwcstat_pvalue_manual

  1. stat_compare_means实际上在大多数情况下工作得不错,除了我似乎无法摆脱 NS 重要性的括号。 只去掉了标签本身,而不是去掉了括号,我似乎不能让这些括号不出现。hide.ns

  2. 对于两者 和 ,我读到这也隐藏了括号。但是,当我将这些函数中的任何一个与 一起使用时,我的所有意义都被删除了(尽管并非所有意义都是 ns)。geom_pwcstat_pvalue_manualhide.nshide.ns=TRUE

我的数据是一个包含三个相关变量的 df:意愿(y 轴)、性别(x 轴)和风险(方面)。我的图是一个箱线图。有三个方面(风险:0.1%、2% 和 10%),四个性别类别(男性、女性、非二元性别和一般),意愿是一个连续的 0-100 量表。“一般”性别只是其他三个性别类别的综合数据,以观察非性别特异性的总体趋势,应排除在统计比较之外。

我的代码如下:

ggboxplot(combined_data,x = "gender", y = "willingness", color = "black", fill="gender", palette = c("coral4","#BBD1EA","#FFBB99","#FFF6BD"), facet.by = "Risk", short.panel.labs = FALSE, outlier.shape = NA) +
geom_point(aes(x=gender,y=willingness,fill=gender),position=position_jitterdodge(),alpha=0.3,size=1,shape=20) + 
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) + 
theme(legend.position="none", axis.text.x=element_blank(),axis.ticks.x=element_blank(),axis.title.x = element_blank()) + 
stat_compare_means(comparisons = my_comparisons, label="p.signif", hide.ns = TRUE)

其中,在 中,“my_comparisons”为:stat_compare_means

my_comparisons <- list(c("Men", "Women"), c("Men", "Non-binary"), c("Women", "Non-binary"))

这将生成下面附加的第一张图像。

using stat_compare_means

当我尝试使用 或 时,它们都会产生相同的数字。注意:这个似乎不允许我指定比较,所以这里包括“一般”。如果有人知道如何指定比较,那就太好了。代码为:geom_pwcstat_pvalue_manual

ggboxplot(combined_data,x = "gender", y = "willingness", color = "black", fill="gender", palette = c("coral4","#BBD1EA","#FFBB99","#FFF6BD"), facet.by = "Risk", short.panel.labs = FALSE, outlier.shape = NA) + 
geom_point(aes(x=gender,y=willingness,fill=gender),position=position_jitterdodge(),alpha=0.3,size=1,shape=20) + 
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) + 
theme(legend.position="none", axis.text.x=element_blank(),axis.ticks.x=element_blank(),axis.title.x = element_blank()) + 
geom_pwc(group.by="x.var",label="p.signif",hide.ns=TRUE)

下图如下图所示。

using geom_pwc, hide.ns=true

这就是它的样子,注意当前的重要性水平:hide.ns=false

hide.ns=false

使用 会产生与 相同的结果,请注意以下代码:stat_pvalue_manualgeom_pwc

stat.test <- compare_means(willingness ~ gender, data = combined_data, 
              group.by = "Risk")
ggboxplot(.......same as above) + 
stat_pvalue_manual(stat.test, label = "p.signif", hide.ns = TRUE)

因此,如果有人可以提供帮助:

  1. 删除带 stat_compare_means 的 ns 括号,或者
  2. 指定比较并使用 或 修复问题hide.nsgeom_pwcstat_pvalue_manual

我将不胜感激。谢谢!

r ggplot2 p 值 ggpubr rstatix

评论

0赞 Mark 7/12/2023
嗨,沙特!欢迎来到 StackOverflow。如果你能让你的例子可重复,那就太好了!参见:stackoverflow.com/questions/5963269/...
0赞 Reed Merrill 7/12/2023
我不知道它的存在,但我做了一个分组的箱形图,我认为它符合您的规格。如果您有兴趣查看代码示例,请告诉我,我会在第二天左右发布答案。ggpubr::ggboxplotggplot::geom_boxplot

答:

0赞 Francisco Lopes 9/1/2023 #1

您可以在绘图之前自动计算 p 值,并据此决定比较。就我而言stat_compare_means usus wilcoxin,所以我使用seurat findMarkers,它很快,也含有wilcoxin。就像我的例子一样:

comparisonsi <- list(c("AL", "DR"), c("AL", "SR100"))

pval_AL_vs_DR <- FindMarkers(sne_subset, ident.1 = "AL", ident.2 = "DR", features = c(gene), min.pct = 0, logfc.threshold = 0)[gene, "p_val"]
pval_AL_vs_SR100 <- FindMarkers(sne_subset, ident.1 = "AL", ident.2 = "SR100", features = c(gene), min.pct = 0, logfc.threshold = 0)[gene, "p_val"]

if (pval_AL_vs_DR<=0.05 & pval_AL_vs_SR100<=0.05) {comparisonsi <- list(c("AL", "DR"), c("AL", "SR100"))}
if (pval_AL_vs_DR<=0.05 & pval_AL_vs_SR100>0.05) {comparisonsi <- list(c("AL", "DR"))}
if (pval_AL_vs_DR>0.05 & pval_AL_vs_SR100<=0.05) {comparisonsi <- list(c("AL", "SR100"))}
if (pval_AL_vs_DR>0.05 & pval_AL_vs_SR100>0.05) {comparisonsi <- list()}
    
    
p_violin <- VlnPlot(sne_subset, features = gene, group.by = "diet", pt.size = 0, log = T) + 
stat_compare_means(comparisons = comparisonsi, method = "wilcox.test", label = "p.signif", hide.ns = T)