Pearson corelation and p-value for matrix
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