Skip to contents

Compute Wilcoxon effect size (r) for:

  • one-sample test (Wilcoxon one-sample signed-rank test);

  • paired two-samples test (Wilcoxon two-sample paired signed-rank test) and

  • independent two-samples test ( Mann-Whitney, two-sample rank-sum test).

It can also returns confidence intervals by bootstap.

The effect size r is calculated as Z statistic divided by square root of the sample size (N) (\(Z/\sqrt{N}\)). The Z value is extracted from either coin::wilcoxsign_test() (case of one- or paired-samples test) or coin::wilcox_test() (case of independent two-samples test).

Here, N is the number of independent observations contributing to the test: the total sample size for the independent two-samples test, and the number of pairs (equivalently, the number of difference scores) for the one-sample and paired tests. This is because the paired test reduces to a one-sample signed-rank test on the pairwise differences, so each pair counts once. This convention matches the default of rcompanion::wilcoxonPairedR() (its cases = TRUE setting).

Some references instead define N as the total number of observations, i.e. twice the number of pairs (Field, 2012; Tomczak & Tomczak, 2014), which yields a smaller r. If you need that convention for a paired test, divide the reported r (or the Z) by \(\sqrt 2\); it is also available via rcompanion::wilcoxonPairedR(..., cases = FALSE).

The r value varies from 0 to close to 1. The interpretation values for r commonly in published litterature and on the internet are: 0.10 - < 0.3 (small effect), 0.30 - < 0.5 (moderate effect) and >= 0.5 (large effect).

Usage

wilcox_effsize(
  data,
  formula,
  comparisons = NULL,
  ref.group = NULL,
  paired = FALSE,
  alternative = "two.sided",
  mu = 0,
  ci = FALSE,
  conf.level = 0.95,
  ci.type = "perc",
  nboot = 1000,
  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.

comparisons

A list of length-2 vectors specifying the groups of interest to be compared. For example to compare groups "A" vs "B" and "B" vs "C", the argument is as follow: comparisons = list(c("A", "B"), c("B", "C"))

ref.group

a character string specifying the reference group. If specified, for a given grouping variable, each of the group levels will be compared to the reference group (i.e. control group).

If ref.group = "all", pairwise two sample tests are performed for comparing each grouping variable levels against all (i.e. basemean).

paired

a logical indicating whether you want a paired test.

alternative

a character string specifying the alternative hypothesis, must be one of "two.sided" (default), "greater" or "less". You can specify just the initial letter.

mu

a number specifying an optional parameter used to form the null hypothesis.

ci

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

conf.level

The level for the confidence interval.

ci.type

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

nboot

The number of replications to use for bootstrap.

detailed

logical value. Default is FALSE. If TRUE, the output additionally includes the Z statistic (extracted from the coin package and used to compute r = Z/sqrt(N)), the p-value (p) and the test method/alternative, so the effect size and the underlying Z are reported together in one data frame.

...

Additional arguments passed to the functions coin::wilcoxsign_test() (case of one- or paired-samples test) or coin::wilcox_test() (case of independent two-samples test).

Value

return a data frame with some of the following columns:

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

  • group1,group2: the compared groups in the pairwise tests.

  • n,n1,n2: Sample counts.

  • effsize: estimate of the effect size (r value).

  • magnitude: magnitude of effect size.

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

  • statistic: the Z statistic and p: the p-value (only when detailed = TRUE).

References

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.

Examples

if(require("coin")){

# One-sample Wilcoxon test effect size
ToothGrowth %>% wilcox_effsize(len ~ 1, mu = 0)

# Independent two-samples wilcoxon effect size
ToothGrowth %>% wilcox_effsize(len ~ supp)


# Paired-samples wilcoxon effect size
ToothGrowth %>% wilcox_effsize(len ~ supp, paired = TRUE)

# Pairwise comparisons
ToothGrowth %>% wilcox_effsize(len ~ dose)

# Grouped data
ToothGrowth %>%
  group_by(supp) %>%
  wilcox_effsize(len ~ dose)

}
#> Loading required package: coin
#> Loading required package: survival
#> 
#> Attaching package: ‘coin’
#> The following objects are masked from ‘package:rstatix’:
#> 
#>     chisq_test, conover_test, fligner_test, friedman_test,
#>     kruskal_test, sign_test, wilcox_test
#> # A tibble: 6 × 8
#>   .y.   group1 group2 effsize supp     n1    n2 magnitude
#> * <chr> <chr>  <chr>    <dbl> <fct> <int> <int> <ord>    
#> 1 len   0.5    1        0.719 OJ       10    10 large    
#> 2 len   0.5    2        0.846 OJ       10    10 large    
#> 3 len   1      2        0.398 OJ       10    10 moderate 
#> 4 len   0.5    1        0.846 VC       10    10 large    
#> 5 len   0.5    2        0.845 VC       10    10 large    
#> 6 len   1      2        0.795 VC       10    10 large