[R] Testing the equality of correlations

Paul Hewson paul.hewson at plymouth.ac.uk
Wed Sep 27 17:40:09 CEST 2006


Marc,

Off the top my head (i.e. this could all be horribly wrong), I think
Anderson gave an asymptotic version for such a test, whereby under the
null hypothesis, the difference between Fisher's z for each sample, z1 -
z2, is normal with zero mean.   If I recall correctly, the 1984 edition
gave a test statistic something like:
 
 $\frac{\vert z_{1} - z_{2} \rvert}{ \sqrt{\frac{1}{N_{1} - 3} +
\frac{1}{N_{2} - 3}}}$, 

as the test.   I ***think*** N = n+1.   Assuming that part is correct,
it can be coded up quite simply (and crudely and hopefully correctly)
as:

## estimate Fisher's z for the sample
fishz <- function(x1,x2){
r <- cor(x1,x2)
z <- 0.5 * log( (1+r)/(1-r) )
 }

## apply the correlation test
cortest <- function(x1,x2,x3,x4){
   numer <- abs(fishz(x1,x2) - fishz(x3,x4) )
   denom <- sqrt( 1/( length(x1) - 2) + 1/( length(x2) - 2) )
   test.stat <- numer / denom
return(test.stat)
}


A quick demo with some simulated data:

require(MASS)
X1 <- mvrnorm(1000, c(0,0), matrix(c(1,0.7,0.7,1),2,2))
X2 <- mvrnorm(1000, c(0,0), matrix(c(1,0.9,0.9,1),2,2))

cortest(X1[,1], X1[,2], X2[,1], X2[,2])

Is above 1.96 indicating they are different

X2 <- mvrnorm(1000, c(0,0), matrix(c(1,0.7,0.7,1),2,2))
cortest(X1[,1], X1[,2], X2[,1], X2[,2])

Is below 1.96 indicating they are not different.   All that needs to be
done for these pair is to get the pooled estimate of the populations
Fisher's z $ \frac{ (N_{1} - 3)z_{1} + (N_{2} - 3)z_{2}}{N_{1} + N_{2} -
6}$ and solve fisher's z to get an estimate of rho.

Just dabbling around with this suggests either I've missed something, or
that we need quite a large sample size before the asymptotics are any
use.   If this is of any use I'll double check on N.

Paul


-=-=-=-=-=-=-=-=-=-=-=-=
Paul Hewson 
Lecturer in Statistics 
School of Mathematics and Statistics 
University of Plymouth 
Drake Circus 
Plymouth PL4 8AA 

tel (01752) 232778 (Campus) 
tel (01752) 764437 (Tamar Science Park) 
fax (01752) 232780 

email: paul.hewson at plymouth.ac.uk
web: http://www.plymouth.ac.uk/staff/phewson
-=-=-=-=-=-=-=-=-=-=-=-=




-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Marc Bernard
Sent: 27 September 2006 14:42
To: r-help at stat.math.ethz.ch
Subject: [R] Testing the equality of correlations


Dear All, 
   
  I wonder if there is any  implemented statistical test in R to test
the  equality between many correlations. As an example, let X1, X2, X3
X4 be four random  variables.  let 
  Phi(X1,X2) , Phi(X1,X3) and Phi(X1,X4) be the corresponding
correlations.  
  How to test Phi(X1,X2) = Phi(X1,X3) = P(X1,X4)?
   
  Many thanks in advance,
   
  Bernard
   
   
   
   

 		
---------------------------------

	[[alternative HTML version deleted]]

______________________________________________
R-help at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list