corrperm-package {corrperm} | R Documentation |
Three permutation tests of correlation useful when there are repeated measurements
Package: | corrperm |
Type: | Package |
Version: | 1.0 |
Date: | 2008-02-26 |
License: | GPL-3 |
The function cp.test tests the null hypothesis of no correlation of two variables (x and y) that are measured in repeated independent experiments. Each experiment measures either x or y on the same fixed number of populations. Inference is based on permutation tests. Three different statistics are used in the tests, which are one-sided, and are computed at the same time.
In the absence of ties, the Spearman correlation, r, equals 1 - 6 sum d^2/(n^3 - n) where d is the difference in ranks for a x,y pair, n is the number of populations (x,y pairs) and the summation is over all d. Under the null hypothesis the variance of r is 1/(n-1). The tests are based on the combining the Spearman correlations or p-values for all possible combinations of x and y experiments.
The inverse-variance weighted average Spearman correlation is: S = sum (njk - 1) rjk/(m sum (njk - 1)), where m is the total number of combinations of x and y experiments, njk is the number of x,y pairs and rjk is the correlation for the jth x and the kth y experiment, and the summation is over all possible pairs.
The unweighted Fisher's combining function is: F = -2 sum ln(pjk) , where pjk is the p-value of the Spearman test for the jth x and the kth y experiment.
The weighted Fisher's combining function is: Fw = -2 sum (njk - 1)log(pjk)/sum (njk - 1).
Each experiment must sample the same populations, but the number of experiments measuring x and y can differ. Missing values are allowed.
Douglas M. Potter
Maintainer: Douglas M Potter <potter@upci.pitt.edu>
Potter, D.M. and Acilan C., Permutation Tests of Correlation for Data with Repeated Measurements, available from D. Potter via email.
##9 different populations on which 7 experiments ##measure x and 5 measure y npop<-9 nxexpt<-7 nyexpt<-5 ##population effects popeff<-rnorm(npop,0,.5) x<-rnorm(nxexpt*npop) y<-rnorm(nyexpt*npop) x<-matrix(x,nrow=npop) y<-matrix(y,nrow=npop) for(i in 1:npop){ for(j in 1:nxexpt){ x[i,j]<-x[i,j]+popeff[i] } for(j in 1:nyexpt){ y[i,j]<-y[i,j]+popeff[i] } } cp.test(x,y,100)