[R] Pearson corelation and p-value for matrix

Marc Schwartz MSchwartz at MedAnalytics.com
Sat Apr 16 02:07:31 CEST 2005


Here is what might be a slightly more efficient way to get to John's
question:

cor.pvals <- function(mat)
{
  rows <- expand.grid(1:nrow(mat), 1:nrow(mat))
  matrix(apply(rows, 1,
               function(x) cor.test(mat[x[1], ], mat[x[2], ])$p.value),
         ncol = nrow(mat))
}

HTH,

Marc Schwartz

On Fri, 2005-04-15 at 18:26 -0400, John Fox wrote:
> Dear Dren,
> 
> How about the following?
> 
>  cor.pvalues <- function(X){
>     nc <- ncol(X)
>     res <- matrix(0, nc, nc)
>     for (i in 2:nc){
>         for (j in 1:(i - 1)){
>             res[i, j] <- res[j, i] <- cor.test(X[,i], X[,j])$p.value
>             }
>         }
>     res
>     }
> 
> What one then does with all of those non-independent test is another
> question, I guess.
> 
> I hope this helps,
>  John

> > -----Original Message-----
> > From: r-help-bounces at stat.math.ethz.ch 
> > [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Dren Scott
> > Sent: Friday, April 15, 2005 4:33 PM
> > To: r-help at stat.math.ethz.ch
> > Subject: [R] Pearson corelation and p-value for matrix
> > 
> > Hi,
> >  
> > I was trying to evaluate the pearson correlation and the 
> > p-values for an nxm matrix, where each row represents a 
> > vector. One way to do it would be to iterate through each 
> > row, and find its correlation value( and the p-value) with 
> > respect to the other rows. Is there some function by which I 
> > can use the matrix as input? Ideally, the output would be an 
> > nxn matrix, containing the p-values between the respective vectors.
> >  
> > I have tried cor.test for the iterations, but couldn't find a 
> > function that would take the matrix as input.
> >  
> > Thanks for the help.
> >  
> > Dren




More information about the R-help mailing list