首页 > 解决方案 > 如何将 Benjamini-Hochberge 校正的 p 值添加到箱线图中,而不是 R 中默认的“holm”校正 p 值?

问题描述

我计划使用 Kruskal Wallis 检验比较四组数据集,进行成对比较,然后使用 Benjamin-Hochberg 校正 p 值。我曾经stat_compare_mean()成功地展示了全局 p 值,但是,根据这个网站,在我的研究中,需要使用 BH 校正由成对比较产生的 p 值,而p.adjR 中的所有值似乎都是“holm”校正的 p 值(http://www.sthda.com/english/articles/24-ggpubr-publication-ready-plots/76-add-p-values-and-significance-levels-to-ggplots/)。

我试过 stat_compare_means(comparisons = compares, aes(label = ..p.adj.. ), method = "wilcox.test", p.adjust.method = "BH")。

这是我的完整代码:

comparisons <- lapply(as.data.frame(combn(Treatment, m =2 , simplify = TRUE)), function(pair) {
  as.character(pair)
}) 

for (metabolite in metabolites) {
  metabolite_dat_during <- setNames(subset(dat_P_BI_QUANT_during, select = c(metabolite, "Treatment")), nm = c("metabolite", "Treatment"))

  gg_during <- ggboxplot(metabolite_dat_during, x = "Treatment", y = "metabolite",title = metabolite, color = "Treatment", palette = "jco",
                         add = c("median_iqr", "jitter")) +
    stat_compare_means(comparisons = comparisons, aes(label = ..p.adj.. ), method = "wilcox.test", p.adjust.method = "BH")+ 
    stat_compare_means(label.y=0.0001) + 
    scale_y_continuous(name = "conc(mmol/L)")
  ggsave(filename = paste0(save_dir, "metabolite-", metabolite, ".png"), plot = gg_during)

}

我希望可以使用上面的代码使用 BH 来纠正 p 值。然而,p 值似乎没有被纠正,即使不使用“holm”,因为 p 值与未纠正的 p 值相同。此外,我还遇到了一些错误:

在 wilcox.test.default(c(0.07, 0.07, 0.06, 0.08, 0.06, ... : 无法计算精确的 p 值与关系。

标签: r

解决方案


推荐阅读