# Correlation network

March 22, 2011
By

(This article was first published on Quantitative thoughts » EN, and kindly contributed to R-bloggers)

I came up with an idea to draw correlation network to get a grasp about relationship between a list of stocks. An alternative way to show correlation matrix would be head map, which can have limitations with big matrices (>100).
Unfortunately,  ggplot2 package doesn’t have a easy way to draw the networks, so I was left with igraph or network. I tried both, but somehow chose igraph. If you want to master either package I highly recommend to start from theoretical part – it is very well written and it will save your time trying to understand the package’s conception.

Here is correlation matrix of stocks, which correlation coef. is more than 0.5:

?View Code RSPLUS
 ```require(xts) require(quantmod) require(igraph) cor_mat<- matrix( runif(100), nr=10 ) cor_mat[ lower.tri(cor_mat, diag=TRUE) ]<- 0 cor_mat[ abs(cor_mat) < 0.5]<- 0   graph <- graph.adjacency(cor_mat>0.5, weighted=TRUE, mode="upper") E(graph)\$weight<-t(cor_mat)[abs(t(cor_mat))>0.5] E(graph)[ weight>0.7 ]\$color <- "black" E(graph)[ weight>=0.65 & weight<0.7 ]\$color <- "red" E(graph)[ weight>=0.6 &weight<0.65 ]\$color <- "green" E(graph)[ weight>=0.55 &weight<0.6 ]\$color <- "blue" E(graph)[ weight<0.55 ]\$color <- "yellow" V(graph)\$label<- seq(1:10)#V(graph)\$name graph\$layout <- layout.fruchterman.reingold factor<-as.factor(cut(E(graph)\$weight*10,c(4,5,6,7,8),labels=c(1,10,20,30))) png('corr_network.png',width=500) plot(decompose.graph(graph)[[which.max(sapply(decompose.graph(graph), vcount))]],edge.width =as.numeric(factor)*1.5,frame=T) legend("bottomleft", title="Colors", cex=0.75, pch=16, col=c("black", "blue","red", "green","pink"), legend=c(">70%", "65-70","60-65","55-60","50-55"), ncol=2) dev.off()```

The code can be found on github.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

Tags: , , , , , , ,