Performs one- and two-sample sign tests on vectors of data.

SignTest(x, ...)

# Default S3 method
SignTest(x, y = NULL, alternative = c("two.sided", "less", "greater"), 
         mu = 0, conf.level = 0.95, ... )

# S3 method for class 'formula'
SignTest(formula, data, subset, na.action, ...)

Arguments

x

numeric vector of data values. Non-finite (e.g. infinite or missing) values will be omitted.

y

an optional numeric vector of data values: as with x non-finite values will be omitted.

mu

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

alternative

is a character string, one of "greater", "less", or "two.sided", or the initial letter of each, indicating the specification of the alternative hypothesis. For one-sample tests, alternative refers to the true median of the parent population in relation to the hypothesized value of the median.

conf.level

confidence level for the returned confidence interval, restricted to lie between zero and one.

formula

a formula of the form lhs ~ rhs where lhs gives the data values and rhs the corresponding groups.

data

an optional matrix or data frame (or similar: see model.frame) containing the variables in the formula formula. By default the variables are taken from environment(formula).

subset

an optional vector specifying a subset of observations to be used.

na.action

a function which indicates what should happen when the data contain NAs. Defaults to getOption("na.action").

...

further arguments to be passed to or from methods.

Details

The formula interface is only applicable for the 2-sample test.

SignTest computes a “Dependent-samples Sign-Test” if both x and y are provided. If only x is provided, the “One-sample Sign-Test” will be computed.

For the one-sample sign-test, the null hypothesis is that the median of the population from which x is drawn is mu. For the two-sample dependent case, the null hypothesis is that the median for the differences of the populations from which x and y are drawn is mu. The alternative hypothesis indicates the direction of divergence of the population median for x from mu (i.e., "greater", "less", "two.sided".)

The confidence levels are exact.

Value

A list of class htest, containing the following components:

statistic

the S-statistic (the number of positive differences between the data and the hypothesized median), with names attribute “S”.

parameter

the total number of valid differences.

p.value

the p-value for the test.

null.value

is the value of the median specified by the null hypothesis. This equals the input argument mu.

alternative

a character string describing the alternative hypothesis.

method

the type of test applied.

data.name

a character string giving the names of the data.

conf.int

a confidence interval for the median.

estimate

the sample median.

References

Gibbons, J.D. and Chakraborti, S. (1992): Nonparametric Statistical Inference. Marcel Dekker Inc., New York.

Kitchens, L. J. (2003): Basic Statistics and Data Analysis. Duxbury.

Conover, W. J. (1980): Practical Nonparametric Statistics, 2nd ed. Wiley, New York.

Author

Andri Signorell <andri@signorell.net>

See also

t.test, wilcox.test, ZTest, binom.test, SIGN.test in the package BSDA (reporting approximative confidence intervals).

Examples

x <- c(1.83,  0.50,  1.62,  2.48, 1.68, 1.88, 1.55, 3.06, 1.30)
y <- c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29)

SignTest(x, y)
#> 
#> 	Dependent-samples Sign-Test
#> 
#> data:  x and y
#> S = 7, number of differences = 9, p-value = 0.1797
#> alternative hypothesis: true median difference is not equal to 0
#> 96.1 percent confidence interval:
#>  -0.080  0.952
#> sample estimates:
#> median of the differences 
#>                      0.49 
#> 
wilcox.test(x, y, paired = TRUE)
#> 
#> 	Wilcoxon signed rank exact test
#> 
#> data:  x and y
#> V = 40, p-value = 0.03906
#> alternative hypothesis: true location shift is not equal to 0
#> 


d.light <- data.frame( 
  black = c(25.85,28.84,32.05,25.74,20.89,41.05,25.01,24.96,27.47),
  white <- c(18.23,20.84,22.96,19.68,19.5,24.98,16.61,16.07,24.59),
  d <- c(7.62,8,9.09,6.06,1.39,16.07,8.4,8.89,2.88)
)

d <- d.light$d

SignTest(x=d, mu = 4)
#> 
#> 	One-sample Sign-Test
#> 
#> data:  d
#> S = 7, number of differences = 9, p-value = 0.1797
#> alternative hypothesis: true median is not equal to 4
#> 96.1 percent confidence interval:
#>  2.88 9.09
#> sample estimates:
#> median of the differences 
#>                         8 
#> 
wilcox.test(x=d, mu = 4, conf.int = TRUE)
#> 
#> 	Wilcoxon signed rank exact test
#> 
#> data:  d
#> V = 41, p-value = 0.02734
#> alternative hypothesis: true location is not equal to 4
#> 95 percent confidence interval:
#>   4.505 11.845
#> sample estimates:
#> (pseudo)median 
#>           7.81 
#> 

SignTest(x=d, mu = 4, alternative="less")
#> 
#> 	One-sample Sign-Test
#> 
#> data:  d
#> S = 7, number of differences = 9, p-value = 0.9805
#> alternative hypothesis: true median is less than 4
#> 98 percent confidence interval:
#>  -Inf 8.89
#> sample estimates:
#> median of the differences 
#>                         8 
#> 
wilcox.test(x=d, mu = 4, conf.int = TRUE, alternative="less")
#> 
#> 	Wilcoxon signed rank exact test
#> 
#> data:  d
#> V = 41, p-value = 0.9902
#> alternative hypothesis: true location is less than 4
#> 95 percent confidence interval:
#>  -Inf 9.09
#> sample estimates:
#> (pseudo)median 
#>           7.81 
#> 

SignTest(x=d, mu = 4, alternative="greater")
#> 
#> 	One-sample Sign-Test
#> 
#> data:  d
#> S = 7, number of differences = 9, p-value = 0.08984
#> alternative hypothesis: true median is greater than 4
#> 98 percent confidence interval:
#>  2.88  Inf
#> sample estimates:
#> median of the differences 
#>                         8 
#> 
wilcox.test(x=d, mu = 4, conf.int = TRUE, alternative="greater")
#> 
#> 	Wilcoxon signed rank exact test
#> 
#> data:  d
#> V = 41, p-value = 0.01367
#> alternative hypothesis: true location is greater than 4
#> 95 percent confidence interval:
#>  5.14  Inf
#> sample estimates:
#> (pseudo)median 
#>           7.81 
#> 

# test die interfaces
x <- runif(10)
y <- runif(10)
g <- rep(1:2, each=10) 
xx <- c(x, y)

SignTest(x ~ group, data=data.frame(x=xx, group=g ))
#> 
#> 	Dependent-samples Sign-Test
#> 
#> data:  x by group
#> S = 5, number of differences = 10, p-value = 1
#> alternative hypothesis: true median difference is not equal to 0
#> 97.9 percent confidence interval:
#>  -0.3462162  0.3913314
#> sample estimates:
#> median of the differences 
#>             -0.0001440268 
#> 
SignTest(xx ~ g)
#> 
#> 	Dependent-samples Sign-Test
#> 
#> data:  xx by g
#> S = 5, number of differences = 10, p-value = 1
#> alternative hypothesis: true median difference is not equal to 0
#> 97.9 percent confidence interval:
#>  -0.3462162  0.3913314
#> sample estimates:
#> median of the differences 
#>             -0.0001440268 
#> 
SignTest(x, y)
#> 
#> 	Dependent-samples Sign-Test
#> 
#> data:  x and y
#> S = 5, number of differences = 10, p-value = 1
#> alternative hypothesis: true median difference is not equal to 0
#> 97.9 percent confidence interval:
#>  -0.3462162  0.3913314
#> sample estimates:
#> median of the differences 
#>             -0.0001440268 
#> 

SignTest(x - y)
#> 
#> 	One-sample Sign-Test
#> 
#> data:  x - y
#> S = 5, number of differences = 10, p-value = 1
#> alternative hypothesis: true median is not equal to 0
#> 97.9 percent confidence interval:
#>  -0.3462162  0.3913314
#> sample estimates:
#> median of the differences 
#>             -0.0001440268 
#>