[R] Code find exact distribution for runs test?
Dale Steele
dale.w.steele at gmail.com
Thu Feb 11 02:15:33 CET 2010
I've been attempting to understand the one-sample run test for
randomness. I've found run.test{tseries} and run.test{lawstat}. Both
use a large sample approximation for distribution of the total number
of runs in a sample of n1 observations of one type and n2 observations
of another type.
I've been unable to find R code to generate the exact distribution and
would like to see how this could be done (not homework).
For example, given the data:
dtemp <- c(12, 13, 12, 11, 5, 2, -1, 2, -1, 3, 2, -6, -7, -7, -12, -9,
6, 7, 10, 6, 1, 1, 3, 7, -2, -6, -6, -5, -2, -1)
The Monte Carlo permutation approach seems to get me part way.
# calculate the number of runs in the data vector
nruns <- function(x) {
signs <- sign(x)
runs <- rle(signs)
r <- length(runs$lengths)
return(r)
}
MC.runs <- function(x, nperm) {
RUNS <- numeric(nperm)
for (i in 1:nperm) {
RUNS[i] <- nruns(sample(x))
}
cdf <- cumsum(table(RUNS))/nperm
return(list(RUNS=RUNS, cdf=cdf, nperm=nperm))
}
MC.runs(dtemp, 100000)
Thanks. --Dale
More information about the R-help
mailing list