[R] Correlation matrix one side with significance

Martin Kaffanke technik at roomandspace.com
Fri Mar 7 20:15:50 CET 2008


Thank you, thats really good and gives me very good information.

Thanks,
Martin

Am Donnerstag, den 06.03.2008, 14:35 -0500 schrieb Chuck Cleland:
> 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.
> 
-- 
Ihr Partner für Webdesign, Webapplikationen und Webspace.
http://www.roomandspace.com/
Martin Kaffanke +43 650 4514224
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Dies ist ein digital signierter Nachrichtenteil
Url : https://stat.ethz.ch/pipermail/r-help/attachments/20080307/2c7ef6c9/attachment.bin 


More information about the R-help mailing list