Setting aes(label=..p.adj..)
in ggpubr::compare_means()
does not
show adjust p values. The returned result of this function can be combined with ggpubr::stat_pvalue_manual()
to fix
this problem.
get_adj_p( data, .col, .grp = "Sample", comparisons = NULL, method = "wilcox.test", p.adjust.method = "fdr", p.digits = 3L, ... )
data | a |
---|---|
.col | column name for comparison. |
.grp | column name for groups. |
comparisons | Default is |
method | a character string indicating which method to be used for comparing means. It can be 't.test', 'wilcox.test' etc.. |
p.adjust.method | correction method, default is 'fdr'. Run |
p.digits | how many significant digits are to be used. |
... | other arguments passed to |
https://github.com/kassambara/ggpubr/issues/143
a data.frame
containing comparison result
More info see ggpubr::compare_means()
, ggpubr::stat_compare_means()
and stats::p.adjust()
.
library(ggpubr) # T-test stat.test <- compare_means( len ~ dose, data = ToothGrowth, method = "t.test", p.adjust.method = "fdr" ) stat.test # Create a simple box plot p <- ggboxplot(ToothGrowth, x = "dose", y = "len") p # Add p values my_comparisons <- list(c("0.5", "1"), c("1", "2"), c("0.5", "2")) p + stat_compare_means(method = "t.test", comparisons = my_comparisons) # Try adding adjust p values # proposed by author of ggpubr # however it does not work p + stat_compare_means(aes(label = ..p.adj..), method = "t.test", comparisons = my_comparisons) # Solution: # calculate adjust p values and their location # then use stat_pvalue_manual() function p_adj <- get_adj_p(ToothGrowth, .col = "len", .grp = "dose") p_adj p + stat_pvalue_manual(p_adj, label = "p.adj") # Show selected comparisons # Of note, p value is ajusted # for three comparisons, but only # two are showed in figure p_adj <- get_adj_p(ToothGrowth, .col = "len", .grp = "dose", comparisons = list(c("0.5", "1"), c("1", "2")) ) p + stat_pvalue_manual(p_adj, label = "p.adj")