《R语言数据可视化系列(6)散点图矩阵》中已经讲过利用散点图矩阵可以对变量之间的相关性做一定探索,今天要介绍的相关图则是专门为解决众多二元变量两两之间相关关系的可视化而设计的图形,它将以更加简单直观的方式展示多个变量两两之间相关性的强弱。
相关系数图是检验定量变量中众多二元变量两两之间关系的一种有效方式。
查看数据
head(mtcars)
原始数据
mtcars数据集共有11个变量,32个样本,代表32辆汽车。
相关系数
相关系数矩阵是多元统计分析的一个重要工具,通过相关系数矩阵可以找到哪些变量之间的相关性强,并进一步可以做聚类分析等,分析不同变量出现的模式。
但是,随着变量数量的增多,相关系数矩阵就变得没有那么直观了,这时将相关系数矩阵可视化,得到相关图,就比较容易发现变量间的相关关系。
通过 cor( ) 函数计算变量之间两两的相关系数。
options(digits = 2) #设置保留小数点后两位数字 cor(mtcars)
相关系数矩阵
从相关系数矩阵来看,我们很难很快地发现哪些变量之间的相关性较强,是否存在某种聚集模式,通过相关图对矩阵进行可视化,则使问题变得简单很多。
相关图
使用 corrgram 包中的 corrgram( ) 函数对相关系数矩阵可视化。
library(corrgram) corrgram(mtcars, order=TRUE, lower.panel = panel.shade, upper.panel = panel.pie,text.panel = panel.txt, main='mtcars数据集变量的相关图')
mtcars数据集变量的相关图
先看下三角单元格部分:
默认(lower.panel = panel.shade),蓝色和从左下到右上的斜杠表示单元格中的两个变量呈正相关,反过来,红色和从左上到右下的斜杠表示变量呈负相关。并且色彩越深,饱和度越高,说明变量相关性越大。相关性接近于 0 的单元格基本无色。
本图为了将有相似相关模式的变量聚集在一起,对矩阵的行和列都重新进行了排序(默认使用主成分分析法,order=TRUE)
从图中可以看出,gear、am、drat 和 mpg 相互间呈正相关,wt、disp、hp 和 carb 相互间也呈正相关。但刚刚说得两组变量之间呈负相关。同时也可以看到, carb 和 am、vs 和 gear 以及 drat 和 qsec 之间的相关性很弱。
再看上三角单元格部分:
上三角单元格用饼图展示了相同的信息。颜色的功能同上,但相关性的大小由被填充的饼图块的大小来展示( upper.panel = panel.pie)。正相关将从12点钟开始顺时针填充饼图,而负相关则逆时针方向填充饼图。
corrgram( ),函数的参数说明:
lower.panel = 和 upper.panel = ,分别用来设置下三角形和下三角形的元素类型。
text.panel = 和 diag.panel = ,控制主对角线的元素类型。
corrgram(mtcars, order=TRUE, lower.panel = panel.ellipse, upper.panel = panel.pts,text.panel = panel.txt,diag.panel = panel.minmax, main='mtcars数据集变量的相关图')
mtcars数据集变量的相关图
如图,在下三角区域使用了平滑拟合曲线和置信椭圆(lower.panel = panel.ellipse),上三角区域使用了散点图(upper.panel = panel.pts),同时在主对角线上输出了对应变量的最大最小值(diag.panel = panel.minmax)。
当然若你设置upper.panel = NULL则只显示下半区域。
当然相关图中的颜色也是可以自己设置的,在col.corrgram( )函数中用colorRampPallette( )函数来指定四种颜色,这里不再做过多介绍了,一般使用默认的就行。