The difference between mean scores from model 1 and mean scores from model 2 is used as the test statistic. Under the null hypothesis of no difference, the actually observed difference between mean scores should not be notably different from the distribution of the test statistic under permutation. As the computation of all possible permutations is only feasible for small datasets, a random sample of permutations is used to obtain the null distribution. The resulting p-value thus depends on the .Random.seed.

Usage

permutationTest(score1, score2, nPermutation = 9999,
plot = FALSE, verbose = FALSE)

Arguments

score1, score2

numeric vectors of scores from models 1 and 2, respectively.

nPermutation

number of Monte Carlo replicates.

plot

logical indicating if a truehist of the nPermutation permutation test statistics should be plotted with a vertical line marking the observed difference of the means. To customize the histogram, plot can also be a list of arguments for truehist replacing internal defaults.

verbose

logical indicating if the results should be printed in one line.

Details

For each permutation, we first randomly assign the membership of the n individual scores to either model 1 or 2 with probability 0.5. We then compute the respective difference in mean for model 1 and 2 in this permuted set of scores. The Monte Carlo p-value is then given by (1 + #{permuted differences larger than observed difference (in absolute value)}) / (1 + nPermutation).

Value

a list of the following elements:

diffObs

observed difference in mean scores, i.e., mean(score1) - mean(score2)

pVal.permut

p-value of the permutation test

pVal.t

p-value of the corresponding t.test(score1, score2, paired=TRUE)

Author

Michaela Paul with contributions by Sebastian Meyer

References

Paul, M. and Held, L. (2011): Predictive assessment of a non-linear random effects model for multivariate time series of infectious disease counts. Statistics in Medicine, 30 (10), 1118-1136. doi:10.1002/sim.4177

permutationTest(rnorm(50, 1.5), rnorm(50, 1), plot = TRUE)