Compute the effect size for Kruskal-Wallis test as the eta squared based on the H-statistic: eta2[H] = (H - k + 1)/(n - k); where H is the value obtained in the Kruskal-Wallis test; k is the number of groups; n is the total number of observations.

The eta-squared estimate assumes values from 0 to 1 and multiplied by 100 indicates the percentage of variance in the dependent variable explained by the independent variable. The interpretation values commonly in published litterature are: 0.01- < 0.06 (small effect), 0.06 - < 0.14 (moderate effect) and >= 0.14 (large effect).

Confidence intervals are calculated by bootstap.

  ci = FALSE,
  conf.level = 0.95,
  ci.type = "perc",
  nboot = 1000



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.


If TRUE, returns confidence intervals by bootstrap. May be slow.


The level for the confidence interval.


The type of confidence interval to use. Can be any of "norm", "basic", "perc", or "bca". Passed to


The number of replications to use for bootstrap.


return a data frame with some of the following columns:

  • .y.: the y variable used in the test.

  • n: Sample counts.

  • effsize: estimate of the effect size.

  • magnitude: magnitude of effect size.

  • conf.low,conf.high: lower and upper bound of the effect size confidence interval.


Maciej Tomczak and Ewa Tomczak. The need to report effect size estimates revisited. An overview of some recommended measures of effect size. Trends in Sport Sciences. 2014; 1(21):19-25.


# Load data #::::::::::::::::::::::::::::::::::::::: data("ToothGrowth") df <- ToothGrowth # Kruskal-wallis rank sum test #::::::::::::::::::::::::::::::::::::::::: df %>% kruskal_effsize(len ~ dose)
#> # A tibble: 1 x 5 #> .y. n effsize method magnitude #> * <chr> <int> <dbl> <chr> <ord> #> 1 len 60 0.678 eta2[H] large
# Grouped data df %>% group_by(supp) %>% kruskal_effsize(len ~ dose)
#> # A tibble: 2 x 6 #> supp .y. n effsize method magnitude #> * <fct> <chr> <int> <dbl> <chr> <ord> #> 1 OJ len 30 0.611 eta2[H] large #> 2 VC len 30 0.855 eta2[H] large