Performs Dunn's test for pairwise multiple comparisons of the ranked data. The mean rank of the different groups is compared. Used for post-hoc test following Kruskal-Wallis test.
The default of the rstatix::dunn_test()
function is to perform a
two-sided Dunn test like the well known commercial softwares, such as SPSS
and GraphPad. This is not the case for some other R packages
(dunn.test
and jamovi
), where the default is to perform
one-sided test. This discrepancy is documented at
https://github.com/kassambara/rstatix/issues/50.
dunn_test(data, formula, p.adjust.method = "holm", detailed = FALSE)
a data.frame containing the variables in the formula.
a formula of the form x ~ group
where x
is a
numeric variable giving the data values and group
is a factor with
one or multiple levels giving the corresponding groups. For example,
formula = TP53 ~ cancer_group
.
method to adjust p values for multiple comparisons. Used when pairwise comparisons are performed. Allowed values include "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none". If you don't want to adjust the p value (not recommended), use p.adjust.method = "none".
logical value. Default is FALSE. If TRUE, a detailed result is shown.
return a data frame with some of the following columns:
.y.
: the y (outcome) variable used in the test.
group1,group2
: the compared groups in the pairwise tests.
n1,n2
: Sample counts.
estimate
: mean ranks difference.
estimate1, estimate2
: show the mean rank values of the two
groups, respectively.
statistic
: Test statistic (z-value) used
to compute the p-value.
p
: p-value.
p.adj
: the
adjusted p-value.
method
: the statistical test used to compare
groups.
p.signif, p.adj.signif
: the significance level of
p-values and adjusted p-values, respectively.
The returned object has an attribute called args, which is a list holding the test arguments.
DunnTest performs the post hoc pairwise multiple comparisons procedure appropriate to follow up a Kruskal-Wallis test, which is a non-parametric analog of the one-way ANOVA. The Wilcoxon rank sum test, itself a non-parametric analog of the unpaired t-test, is possibly intuitive, but inappropriate as a post hoc pairwise test, because (1) it fails to retain the dependent ranking that produced the Kruskal-Wallis test statistic, and (2) it does not incorporate the pooled variance estimate implied by the null hypothesis of the Kruskal-Wallis test.
Dunn, O. J. (1964) Multiple comparisons using rank sums Technometrics, 6(3):241-252.
# Simple test
ToothGrowth %>% dunn_test(len ~ dose)
#> # A tibble: 3 × 9
#> .y. group1 group2 n1 n2 statistic p p.adj p.adj.signif
#> * <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <chr>
#> 1 len 0.5 1 20 20 3.55 3.78e- 4 7.56e- 4 ***
#> 2 len 0.5 2 20 20 6.36 1.98e-10 5.95e-10 ****
#> 3 len 1 2 20 20 2.81 4.99e- 3 4.99e- 3 **
# Grouped data
ToothGrowth %>%
group_by(supp) %>%
dunn_test(len ~ dose)
#> # A tibble: 6 × 10
#> supp .y. group1 group2 n1 n2 statistic p p.adj p.adj…¹
#> * <fct> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <chr>
#> 1 OJ len 0.5 1 10 10 2.83 0.00459 0.00918 **
#> 2 OJ len 0.5 2 10 10 4.22 0.0000245 0.0000734 ****
#> 3 OJ len 1 2 10 10 1.39 0.166 0.166 ns
#> 4 VC len 0.5 1 10 10 2.62 0.00887 0.0177 *
#> 5 VC len 0.5 2 10 10 5.01 0.000000557 0.00000167 ****
#> 6 VC len 1 2 10 10 2.39 0.0169 0.0177 *
#> # … with abbreviated variable name ¹p.adj.signif