星期五, 二月 10, 2012

用图形和颜色来表现相关关系

进行数据分析建模首先要了解变量间的关系。对于连续数据来说,散点图可能是最为有效的一种工具。散点图通常对两组连续数据比较合适,如果是多元数据,那么可以使用散点图矩阵(ScatterMatrix)来两两展示数据相关关系。

R语言中包含了各种不同版本的散点图函数,魏太云在这篇文章里就对这些函数进行了讲解举例,如果需要更完整的文档,可以参考R官方站的一份关于多元数据可视化的资料。还可参考笔者之前的博文。但我们在这里希望用图形和颜色来表现这种相关关系,而非散点图矩阵。用到的R语言包是corrgram包和ellipse包。


首先我们载入DMwR包以利用其中的algae数据集。抽取其中的一部分连续数据作为研究对象。
library(DMwR)
data <- algae[,4:11]

然后用corrgram函数来绘图,其中用order参数进行了相关系数排序,相关系数阵是对称的,下半部分用颜色的深浅表现相关程度,蓝色为正相关,红色为负相关,上半部分则是用饼图的扇形来表现这种关系。

library(corrgram)
corrgram(order = T, data, lower.panel = panel.shade, upper.panel = panel.pie)


另一种方法是用ellipse包绘制相关图,要略为复杂一点,它也是rattle包在进行数据挖掘时的默认图形。加载包之后要先生成相关系数矩阵,再进行排序生成一个新的相关系数阵。然后构建包括了13种颜色的色彩库。最后用plotcorr绘图,6*corr + 7实际上是将0-1的数值映射到1-13。将其作为索引从色彩库mycolors中调取颜色。

library(ellipse)
corr.data <- cor(data,use = 'complete.obs')
corr.ord <- order(corr.data[1,])
corr <- corr.data[corr.ord,corr.ord]
mycolors <- colorRampPalette(c("red", "white", "blue"))(13)
plotcorr(corr,col = mycolors[6*corr + 7])


没有评论:

发表评论