View source: R/stat_kruskal_test.R
stat_kruskal_test | R Documentation |
Add Kruskal-Wallis test p-values to a ggplot, such as box blots, dot plots and stripcharts.
stat_kruskal_test( mapping = NULL, data = NULL, group.by = NULL, label = "{method}, p = {p.format}", label.x.npc = "left", label.y.npc = "top", label.x = NULL, label.y = NULL, step.increase = 0.1, p.adjust.method = "holm", significance = list(), geom = "text", position = "identity", na.rm = FALSE, show.legend = FALSE, inherit.aes = TRUE, parse = FALSE, ... )
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
group.by |
(optional) character vector specifying the grouping variable; it should be used only for grouped plots. Possible values are :
|
label |
the column containing the label (e.g.: label = "p" or label =
"p.adj"), where |
label.x.npc, label.y.npc |
can be
|
label.x, label.y |
|
step.increase |
numeric vector with the increase in fraction of total height for every additional comparison to minimize overlap. |
p.adjust.method |
method for adjusting p values (see
|
significance |
a list of arguments specifying the signifcance cutpoints
and symbols. For example, In other words, we use the following convention for symbols indicating statistical significance:
|
geom |
The geometric object to use to display the data, either as a
|
position |
Position adjustment, either as a string naming the adjustment
(e.g. |
na.rm |
If FALSE (the default), removes missing values with a warning. If TRUE silently removes missing values. |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
parse |
If TRUE, the labels will be parsed into expressions and displayed
as described in |
... |
other arguments passed to the function |
statistic: the Kruskal-Wallis rank sum chi-squared statistic used to compute the p-value.
p: p-value.
p.adj: Adjusted p-values.
p.signif: P-value significance.
p.adj.signif: Adjusted p-value significance.
p.format: Formated p-value.
p.adj.format: Formated adjusted p-value.
n: number of samples.
# Data preparation #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Transform `dose` into factor variable df <- ToothGrowth df$dose <- as.factor(df$dose) # Add a random grouping variable set.seed(123) df$group <- sample(factor(rep(c("grp1", "grp2", "grp3"), 20))) df$len <- ifelse(df$group == "grp2", df$len+2, df$len) df$len <- ifelse(df$group == "grp3", df$len+7, df$len) head(df, 3) # Basic boxplot #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Create a basic boxplot # Add 5% and 10% space to the plot bottom and the top, respectively bxp <- ggboxplot(df, x = "dose", y = "len") + scale_y_continuous(expand = expansion(mult = c(0.05, 0.1))) # Add the p-value to the boxplot bxp + stat_kruskal_test() # Change the label position # Using coordinates in data units bxp + stat_kruskal_test(label.x = "1", label.y = 10, hjust = 0) # Format the p-value differently custom_p_format <- function(p) { rstatix::p_format(p, accuracy = 0.0001, digits = 3, leading.zero = FALSE) } bxp + stat_kruskal_test( label = "Kruskal-Wallis, italic(p) = {custom_p_format(p)}{p.signif}" ) # Show a detailed label in italic bxp + stat_kruskal_test(label = "as_detailed_italic") # Faceted plots #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Create a ggplot facet bxp <- ggboxplot(df, x = "dose", y = "len", facet.by = "supp") + scale_y_continuous(expand = expansion(mult = c(0.05, 0.1))) # Add p-values bxp + stat_kruskal_test() # Grouped plots #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% bxp2 <- ggboxplot(df, x = "group", y = "len", color = "dose", palette = "npg") # For each x-position, computes tests between legend groups bxp2 + stat_kruskal_test(aes(group = dose), label = "p = {p.format}{p.signif}") # For each legend group, computes tests between x variable groups bxp2 + stat_kruskal_test(aes(group = dose, color = dose), group.by = "legend.var")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.