stat_compare | R Documentation |
Add group mean comparisons to a ggplot. The comparisons can be performed using the t-test, Wilcoxon rank-sum test, one-way ANOVA, or Kruskal-Wallis test.
stat_compare(
mapping = NULL,
data = NULL,
position = "identity",
...,
nudge = 0,
start = NULL,
breaks = NULL,
labels = NULL,
cutoff = NULL,
method = NULL,
ref_group = NULL,
tip_length = 0.02,
parametric = FALSE,
correction = "none",
panel_indep = FALSE,
method_args = NULL,
comparisons = NULL,
step_increase = 0.1,
inherit.aes = TRUE
)
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
position |
A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The
|
... |
additional arguments passed on to |
nudge |
|
start |
|
breaks |
|
labels |
|
cutoff |
|
method |
|
ref_group |
|
tip_length |
|
parametric |
|
correction |
|
panel_indep |
|
method_args |
|
comparisons |
|
step_increase |
|
inherit.aes |
If |
Usually you do not need to specify the test method, you only need to tell stat_compare()
whether you want to perform a parametric test or a nonparametric test, and stat_compare()
will automatically choose the appropriate test method based on your data.
For comparisons between two groups, the p-value is calculated by t-test (parametric) or Wilcoxon rank sum test (nonparametric). For comparisons among more than two groups, the p-value is calculated by One-way ANOVA (parametric) or Kruskal-Wallis test (nonparametric).
LayerInstance
, a layer that can be added to a ggplot.
required: x
, y
p
: p-value of the test.
q
: adjusted p-value of the test.
label
: the label of the bracket.
method
: the method name of the test.
xmin
, xmax
, ymin
, ymax
: the position of the bracket.
HMU-WH
library(ggplot2)
p <- ggplot(mpg, aes(class, displ, color = class)) +
geom_boxplot(show.legend = FALSE) +
theme_test()
# Global comparison: Each x has only one group.
p + stat_compare()
# If you just want to display text, you can set parameters "bracket" to FALSE.
p + stat_compare(bracket = FALSE)
# If you want to display the test method, you can do this.
p + stat_compare(aes(label = after_stat(sprintf("%s: %s", method, label))))
# Comparison between two groups: specify a reference group.
p + stat_compare(ref_group = "minivan")
# If you only want to display the p-value less or equal to 0.01, you can do this.
p + stat_compare(ref_group = "minivan", cutoff = 0.01)
# If you want to display the significance level, you can do this.
p + stat_compare(ref_group = "minivan", breaks = c(0, 0.001, 0.01, 0.05, 1))
# Comparison between two groups: specify the comparison group.
p + stat_compare(tip_length = 0.05,
step_increase = 0,
comparisons = list(c("compact", "midsize"), c("pickup", "suv")),
arrow = grid::arrow(type = "closed", length = unit(0.1, "inches")))
# Yeah, this supports adding arrows.
# Within-group (grouped by the x-axis) population comparison.
ggplot(mpg, aes(drv, displ, fill = class)) +
geom_boxplot() +
stat_compare() +
stat_compare(aes(group = drv), nudge = 0.1, color = "gray") + # add global comparison
theme_test()
# Better adaptation to faceting.
ggplot(mpg, aes(drv, displ)) +
geom_boxplot() +
stat_compare(comparisons = combn(unique(mpg$drv), 2, simplify = FALSE)) +
facet_grid(cols = vars(class), scales = "free") +
theme_test()
# P-value correction
p <- ggplot(mpg, aes(class, displ)) +
geom_boxplot() +
facet_grid(cols = vars(cyl), scales = "free") +
theme_test()
# Layer-level P-value correction
p + stat_compare(ref_group = 1, correction = "fdr")
# Panel-level P-value correction
p + stat_compare(ref_group = 1, correction = "fdr", panel_indep = TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.