[R] Code find exact distribution for runs test?

Peter Ehlers ehlers at ucalgary.ca
Fri Feb 12 22:41:04 CET 2010


Here's a simple function (same idea):

f <- function(x){
   lenx <- length(x)
   negx <- sum(x < 0)
   mat <- matrix(1, lenx, choose(lenx,negx))
   for(i in seq_len(choose(lenx, negx))){
     mat[combn(lenx,negx)[, i], i] <- -1
   }
   mat
}

x <- c(-1,-1,-1,1,1,1,1)
f(x)

[combn() is now in utils]

  -Peter Ehlers

Greg Snow wrote:
> Here is one quick way using the combinat package:
> 
>> library(combinat)
>>
>> tmpfun <- function(x) {
> + tmp <- rep(1,5)
> + tmp[x] <- -1
> + tmp
> + }
>> combn(5,2, tmpfun)
>      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
> [1,]   -1   -1   -1   -1    1    1    1    1    1     1
> [2,]   -1    1    1    1   -1   -1   -1    1    1     1
> [3,]    1   -1    1    1   -1    1    1   -1   -1     1
> [4,]    1    1   -1    1    1   -1    1   -1    1    -1
> [5,]    1    1    1   -1    1    1   -1    1   -1    -1
> 
> Of course in this case the tmpfun function needs to be rewritten for each vector size, so is not generalizable.
>



More information about the R-help mailing list