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,
  ...
)

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 ~ 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.

Functions

  • sign_test(): Sign test

  • pairwise_sign_test(): performs pairwise two sample Wilcoxon test.

Note

This function is a reimplementation of the function SignTest() from the DescTools package.

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.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