Re: [R] Correlation matrix one side with significance

From: Chuck Cleland <ccleland_at_optonline.net>
Date: Thu, 06 Mar 2008 14:35:06 -0500

On 3/6/2008 2:07 PM, Martin Kaffanke wrote:
> Am Mittwoch, den 05.03.2008, 14:38 -0300 schrieb Henrique Dallazuanna:

>> Try this:
>>
>> On 05/03/2008, Martin Kaffanke <technik_at_roomandspace.com> wrote:
>>> Hi there!
>>>
>>>  In my case,
>>>
>>>  cor(d[1:20])
>>>
>>>  makes me a good correlation matrix.
>>>
>>>  Now I'd like to have it one sided, means only the left bottom side to be
>>>  printed (the others are the same) and I'd like to have * where the
>>>  p-value is lower than 0.05 and ** lower than 0.01.
>>>
>>>  How can I do this?
>> d <- matrix(rexp(16, 2), 4)
>> corr <- cor(d)
>> sign <- symnum(cor(d), cutpoints=c(0.05, 0.01), corr = T,
>> symbols=c("***", "**", "*"), abbr=T, diag=F)
>>
>> noquote(mapply(function(x, y)paste(x, format(y, dig=3), sep=''),
>> as.data.frame(unclass(sign)), as.data.frame(corr)))

>
> Seems that we mark the value itself, but not the p-value.
>
> So lets say, in a way I have to get the lower left half of a
>
> cor(el[1:20])
>
> Then I need to calc all the values with a cor.test() to see for the
> p-value. And the p-value should be lower than .05 or .01 -> this should
> make the * to the value.
>
> Thanks,
> Martin

   Do you want something like the following, but with the upper triangle removed?

corstars <- function(x){
require(Hmisc)

x <- as.matrix(x)
R <- rcorr(x)$r
p <- rcorr(x)$P

mystars <- ifelse(p < .01, "**|", ifelse(p < .05, "* |", " |")) R <- format(round(cbind(rep(-1.111, ncol(x)), R), 3))[,-1] Rnew <- matrix(paste(R, mystars, sep=""), ncol=ncol(x)) diag(Rnew) <- paste(diag(R), " |", sep="") rownames(Rnew) <- colnames(x)
colnames(Rnew) <- paste(colnames(x), "|", sep="") Rnew <- as.data.frame(Rnew)
return(Rnew)
}

corstars(swiss[,1:4])

             Fertility| Agriculture| Examination| Education|
Fertility     1.000  |     0.353* |    -0.646**|  -0.664**|
Agriculture   0.353* |     1.000  |    -0.687**|  -0.640**|
Examination  -0.646**|    -0.687**|     1.000  |   0.698**|
Education    -0.664**|    -0.640**|     0.698**|   1.000  |

   I will leave the removing the upper triangle part to you - should be examples in the archives.

> ------------------------------------------------------------------------
>
> ______________________________________________
> R-help_at_r-project.org 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.

-- 
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 512-0171 (M, W, F)
fax: (917) 438-0894

______________________________________________
R-help_at_r-project.org 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.
Received on Thu 06 Mar 2008 - 19:40:09 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 07 Mar 2008 - 20:30:20 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive