You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R ggplot箱线图stat_compare_means显著性标记显示异常问题

问题定位与解决方案

核心问题原因

你的代码和数据存在3个直接导致显著性标注异常的问题:

  • 参数冲突:stat_compare_means中同时设置了ref.group = ".all."和comparisons参数,二者功能互斥,设置ref.group后你自定义的组间比较对不会被执行,函数只会计算每个组和全体样本均值的差异。
  • 分组样本量不符合检验要求:control组仅1个生物学重复,无法支撑组间差异检验,涉及control的比较天然不具备统计效力。
  • 检验方法与实验设计不匹配:从core列可以看出,paring-rind和prime是同一样本的配对处理(4个core各对应一组paring-rind+prime观测),你默认使用的是独立样本Wilcoxon秩和检验,没有指定配对参数,检验效能被大幅拉低。

补充统计结果验证:对paring-rind和prime组做独立样本Wilcoxon检验,双侧p值为0.057,刚好高于0.05的常规显著性阈值;就算指定配对设计,受限于每组仅4个样本的极小样本量,p值约为0.06,仍属于边缘不显著,不存在计算错误。

修正后代码

library(ggpubr)

# 仅保留样本量满足检验要求的比较对,control组n=1暂不纳入比较
sh.comparisons <- list(c("paring-rind","prime"))

# 配对检验需要按配对ID排序数据
div.sh <- div.sh[order(div.sh$core, div.sh$type), ]

p.sh <- ggplot(data=div.sh,
               aes(x=type, y=diversity.otu_ord..index....shannon..)) +
  geom_boxplot(width=0.25) +
  # 整体组间差异检验
  stat_compare_means(label.y=2.8, method = "kruskal.test") +
  # 指定配对比较,移除冲突的ref.group参数
  stat_compare_means(label="p.signif",
                     hide.ns = FALSE,
                     comparisons = sh.comparisons,
                     method = "wilcox.test",
                     paired = TRUE, # 匹配你的配对实验设计
                     label.y = 2.6) 
print(p.sh)

补充说明

如果需要得到稳定可靠的显著性结果,不能通过调整检验参数强行凑显著性,建议补充生物学重复增大样本量,当前4 vs 4的样本量统计效能极低,结果可靠性本身不足。

内容的提问来源于stack exchange,提问作者Geomicro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:18:21