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)

Arguments

data

a data.frame containing the variables in the formula.

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.

p.adjust.method

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".

detailed

logical value. Default is FALSE. If TRUE, a detailed result is shown.

Value

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.

Details

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.

References

Dunn, O. J. (1964) Multiple comparisons using rank sums Technometrics, 6(3):241-252.

Examples

# 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