Performs one-sample and two-sample sign tests. Read more: Sign Test in R.
sign_test(
data,
formula,
comparisons = NULL,
ref.group = NULL,
p.adjust.method = "holm",
alternative = "two.sided",
mu = 0,
conf.level = 0.95,
detailed = FALSE
)
pairwise_sign_test(
data,
formula,
comparisons = NULL,
ref.group = NULL,
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 ~ treatment
.
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"))
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).
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".
a character string specifying the alternative
hypothesis, must be one of "two.sided"
(default),
"greater"
or "less"
. You can specify just the initial
letter.
a single number representing the value of the population median specified by the null hypothesis.
confidence level of the interval.
logical value. Default is FALSE. If TRUE, a detailed result is shown.
other arguments passed to the function sign_test()
return a data frame with some 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.
statistic
: Test statistic used to compute the p-value. That is
the S-statistic (the number of positive differences between the data and the
hypothesized median), with names attribute "S"
.
df,
parameter
: degrees of freedom. Here, the total number of valid differences.
p
: 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.
estimate
:
estimate of the effect size. It corresponds to the median of the
differences.
alternative
: a character string describing the
alternative hypothesis.
conf.low,conf.high
: Lower and upper
bound on a confidence interval of the estimate.
The returned object has an attribute called args, which is a list holding the test arguments.
sign_test()
: Sign test
pairwise_sign_test()
: performs pairwise two sample Wilcoxon test.
This function is a reimplementation of the function SignTest()
from the DescTools
package.
# Load data
#:::::::::::::::::::::::::::::::::::::::
data("ToothGrowth")
df <- ToothGrowth
# One-sample test
#:::::::::::::::::::::::::::::::::::::::::
df %>% sign_test(len ~ 1, mu = 0)
#> # A tibble: 1 × 7
#> .y. group1 group2 n statistic df p
#> * <chr> <chr> <chr> <int> <dbl> <dbl> <dbl>
#> 1 len 1 null model 60 60 60 1.73e-18
# Two-samples paired test
#:::::::::::::::::::::::::::::::::::::::::
df %>% sign_test(len ~ supp)
#> # A tibble: 1 × 8
#> .y. group1 group2 n1 n2 statistic df p
#> * <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl>
#> 1 len OJ VC 30 30 19 29 0.136
# Compare supp levels after grouping the data by "dose"
#::::::::::::::::::::::::::::::::::::::::
df %>%
group_by(dose) %>%
sign_test(data =., len ~ supp) %>%
adjust_pvalue(method = "bonferroni") %>%
add_significance("p.adj")
#> # A tibble: 3 × 11
#> dose .y. group1 group2 n1 n2 statistic df p p.adj p.adj.signif
#> <dbl> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 0.5 len OJ VC 10 10 7 9 0.18 0.54 ns
#> 2 1 len OJ VC 10 10 8 10 0.109 0.327 ns
#> 3 2 len OJ VC 10 10 4 10 0.754 1 ns
# pairwise comparisons
#::::::::::::::::::::::::::::::::::::::::
# As dose contains more than two levels ==>
# pairwise test is automatically performed.
df %>% sign_test(len ~ dose)
#> # A tibble: 3 × 10
#> .y. group1 group2 n1 n2 statistic df p p.adj p.adj.…¹
#> * <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 len 0.5 1 20 20 1 20 0.0000401 0.0000802 ****
#> 2 len 0.5 2 20 20 0 20 0.00000191 0.00000573 ****
#> 3 len 1 2 20 20 3 20 0.003 0.003 **
#> # … with abbreviated variable name ¹p.adj.signif
# Comparison against reference group
#::::::::::::::::::::::::::::::::::::::::
# each level is compared to the ref group
df %>% sign_test(len ~ dose, ref.group = "0.5")
#> # A tibble: 2 × 10
#> .y. group1 group2 n1 n2 statistic df p p.adj p.adj.…¹
#> * <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 len 0.5 1 20 20 1 20 0.0000401 0.0000401 ****
#> 2 len 0.5 2 20 20 0 20 0.00000191 0.00000382 ****
#> # … with abbreviated variable name ¹p.adj.signif