Description Usage Arguments Details Value Author(s) References See Also Examples

Performs a test whether the elements of `x`

are serially independent - say, whether
they occur in a random order - by counting how many runs there are above and below a threshold.
If `y`

is supplied a two sample Wald-Wolfowitz-Test testing the equality of two distributions against general alternatives will be computed.

1 2 3 4 5 6 7 8 |

`x` |
a dichotomous vector of data values or a (non-empty) numeric vector of data values. |

`y` |
an optional (non-empty) numeric vector of data values. |

`formula` |
a formula of the form |

`data` |
an optional matrix or data frame (or similar: see |

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

`alternative` |
a character string specifying the alternative hypothesis, must be one of |

`exact` |
a logical indicating whether an exact p-value should be computed. By default exact values will be calculated for small vectors with a total length <= 30 and the normal approximation for longer ones. |

`correct` |
a logical indicating whether to apply continuity correction when computing the test statistic. Default is |

`na.rm` |
defines if |

`...` |
further arguments to be passed to or from methods. |

The runs test for randomness is used to test the hypothesis
that a series of numbers is random. The 2-sample test is known as the Wald-Wolfowitz test.

For a categorical variable, the number of runs correspond to the number of times the category changes, that is,
where *x_i* belongs to one category and *x_(i+1)* belongs to the other. The number of runs is the number of sign changes plus one.

For a numeric variable x containing more than two values, a run is a set of sequential values that are either all above or below a specified cutpoint, typically the median. This is not necessarily the best choice. If another threshold should be used use a code like: `RunsTest(x > mean(x))`

.

The exact distribution of runs and the p-value based on it are described in the manual of SPSS "Exact tests" http://www.sussex.ac.uk/its/pdfs/SPSS_Exact_Tests_21.pdf.

The normal approximation of the runs test is calculated with the expected number of runs under the null

*μ_r=\frac{2 n_0 n_1}{n_0 + n_1} + 1*

and its variance

*σ_r^2 = \frac{2 n_0 n_1 (2 n_0 n_1 - n_0 - n_1) }{(n_0 + n_1)^2 \cdot (n_0 + n_1 - 1)}*

as

*\hat{z}=\frac{r - μ_r + c}{σ_r}*

where *n_0, n_1* the number of values below/above the threshold and *r* the number of runs.

Setting the continuity correction `correct = TRUE`

will yield the normal approximation as SAS (and SPSS if n < 50) does it, see http://support.sas.com/kb/33/092.html.
The c is set to *c = 0.5* if *r < \frac{2 n_0 n_1}{n_0 + n_1} + 1*
and to *c = -0.5* if *r > \frac{2 n_0 n_1}{n_0 + n_1} + 1*.

A list with the following components.

`statistic` |
z, the value of the standardized runs statistic, if not exact p-values are computed. |

`parameter` |
the number of runs, the total number of zeros (m) and ones (n) |

`p.value` |
the p-value for the test. |

`data.name` |
a character string giving the names of the data. |

`alternative` |
a character string describing the alternative hypothesis. |

Andri Signorell <[email protected]>, exact p-values by Detlew Labes <[email protected]>

Wackerly, D., Mendenhall, W. Scheaffer, R. L. (1986): *Mathematical Statistics with Applications*, 3rd Ed., Duxbury Press, CA.

Wald, A. and Wolfowitz, J. (1940): On a test whether two samples are from the same population, *Ann. Math Statist*. 11, 147-162.

Run Length Encoding `rle`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | ```
# x will be coerced to a dichotomous variable
x <- c("S","S", "T", "S", "T","T","T", "S", "T")
RunsTest(x)
x <- c(13, 3, 14, 14, 1, 14, 3, 8, 14, 17, 9, 14, 13, 2, 16, 1, 3, 12, 13, 14)
RunsTest(x)
# this will be treated as
RunsTest(x > median(x))
plot( (x < median(x)) - 0.5, type="s", ylim=c(-1,1) )
abline(h=0)
set.seed(123)
x <- sample(0:1, size=100, replace=TRUE)
RunsTest(x)
# As you would expect of values from a random number generator, the test fails to reject
# the null hypothesis that the data are random.
# SPSS example
x <- c(31,23,36,43,51,44,12,26,43,75,2,3,15,18,78,24,13,27,86,61,13,7,6,8)
RunsTest(x)
RunsTest(x, exact=TRUE)
# SPSS example small dataset
x <- c(1, 1, 1, 1, 0, 0, 0, 0, 1, 1)
RunsTest(x)
RunsTest(x, exact=FALSE)
# if y is not NULL, the Wald-Wolfowitz-Test will be performed
A <- c(35,44,39,50,48,29,60,75,49,66)
B <- c(17,23,13,24,33,21,18,16,32)
RunsTest(A, B, exact=TRUE)
RunsTest(A, B, exact=FALSE)
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.