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

ggpubr柱状图显著性标注缺失问题:stat.test.melt.dfi3.agree排查

显著性标注缺失问题排查与解决方案

问题根源

你的stat.test.melt.dfi3.agree数据框存在两个核心问题:

  • 第3、4、5行的p值为NA,说明对应的组间统计检验未得到有效结果(可能是样本量不足、对比组设置错误或数据存在缺失值);
  • 这几行的y.position为非有限值(Inf/NaN),导致stat_bracket()无法识别并渲染标注,最终触发“Removed 3 rows containing non-finite values”警告。

修复方案

1. 清理原始数据,确保检验有效性

先移除数据中的缺失值,避免统计检验因数据不完整返回NA:

melt.dfi3_clean <- melt.dfi3 %>% 
  drop_na(value, group) %>% 
  filter(variable == "agree") # 聚焦目标变量

2. 重新执行统计检验,生成有效结果

使用rstatix的pairwise_t_test()重新计算,同时用add_y_position()自动生成合理的标注位置(避免手动计算导致的非有限值):

stat.test_fixed <- melt.dfi3_clean %>%
  pairwise_t_test(value ~ group, 
                  paired = FALSE, # 根据你的实验设计调整该参数
                  p.adjust.method = "bonferroni") %>%
  add_y_position(step.increase = 0.1) # 控制标注间的垂直间距

3. 过滤无效行,保留可渲染的标注

移除检验结果为NA的行,确保传入stat_bracket()的数据都是有效数据:

stat.test_fixed <- stat.test_fixed %>% filter(!is.na(p))

4. 重新绘制带完整标注的柱状图

使用清理后的统计结果绘图:

ggbarplot(melt.dfi3_clean, 
          x = "group", 
          y = "value", 
          fill = "group") +
  stat_bracket(data = stat.test_fixed,
               xmin = "group1", 
               xmax = "group2", 
               label = "p.signif",
               y.position = "y.position")

额外注意事项

  • 如果某些组确实无法得到有效检验结果(比如样本量为0),建议检查实验设计或数据采集流程;
  • 若需要保留这些对比组的标注(即使p值为NA),可以手动给这些行的p值赋值(如p = 1)并手动设置合理的y.position,但这种做法不符合统计规范,需谨慎使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:07:22