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 ~ groupwherexis a numeric variable giving the data values andgroupis 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
Zstatistic(extracted from thecoinpackage and used to computer = Z/sqrt(N)), the p-value (p) and the testmethod/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) orcoin::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 (rvalue).magnitude: magnitude of effect size.conf.low,conf.high: lower and upper bound of the effect size confidence interval.statistic: theZstatistic andp: the p-value (only whendetailed = 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