Performs one-sample and two-sample sign tests. Read more: Sign Test in R.
Usage
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,
...
)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 ~ treatment.- 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).
- 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".
- 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 single number representing the value of the population median specified by the null hypothesis.
- conf.level
confidence level of the interval.
- detailed
logical value. Default is FALSE. If TRUE, a detailed result is shown.
- ...
other arguments passed to the function
sign_test()
Value
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.
Examples
# 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.180 0.539 ns
#> 2 1 len OJ VC 10 10 8 10 0.109 0.328 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.signif
#> * <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 len 0.5 1 20 20 1 20 4.01e-5 8.01e-5 ****
#> 2 len 0.5 2 20 20 0 20 1.91e-6 5.72e-6 ****
#> 3 len 1 2 20 20 3 20 2.58e-3 2.58e-3 **
# 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.signif
#> * <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 len 0.5 1 20 20 1 20 4.01e-5 4.01e-5 ****
#> 2 len 0.5 2 20 20 0 20 1.91e-6 3.81e-6 ****