参考资料:R语言实战【第2版】
相关系数矩阵是多元统计分析的一个基本方面。哪些被考察的变量与其他变量相关性很强,而哪些并不强?随着变量数的增加,这类问题将变得很难回答。相关图作为一种相对现代的方法,可以通过相关系数矩阵的可视化来回答这些问题。
以mtcars数据集的变量相关性为例,它含有11个变量,对每个变量都测量了32辆汽车。利用corrgram包中的corrgram()函数来展示相关系数矩阵,如下:
# 设置小数显示位数
options(digits=2)
# 查看相关系数矩阵
cor(mtcars)
# 导入corrgram包
library(corrgram)
# 绘制相关图
corrgram(mtcars,
order=TRUE,
lower.panel = panel.shade,
upper.panel = panel.pie,
text.panel = panel.txt,
main="Corrgram of mtcars intercorrelations")
首先看上图中下三角区域(主对角线下方的单元格):默认地,蓝色和从左下指向右上的斜杠表示单元格中的两个变量呈正相关;而红色和从左上到右下的斜杠表示变量呈负相关。色彩越深,饱和度越高,说明变量间相关性越大。相关性接近于0的单元格基本无色。
上三角区域用饼图展示了相同的相关信息。颜色的功能同上,而相关性大小由被填充的饼图块的大小来展示。正相关是顺时针填充饼图,负相关是逆时针填充饼图。
corrgram()函数的格式如下:
corrgram(x,order=,panel=,text.panel=,diag.panel=)
其中,x是一行一个观测的数据框。当order=TRUE时,相关矩阵将使用主成分分析法对变量重排序,这将使得二元变量的关系模式更为明显。
位置 | 面板选项 | 描述 |
非对角线 | panel.pie | 用饼图的填充比例来表示相关性大小 |
panel.shade | 用阴影的深度来表示相关性大小 | |
panel.ellipse | 画一个置信椭圆和平滑曲线 | |
panel.pts | 画一个散点图 | |
panel.conf | 画处相关性和及置信区间 | |
主对角线 | panel.txt | 输出变量名 |
panel.minmax | 输出变量的最大最小值和变量名 | |
panel.ednsity | 输出核密度曲线和变量名 |
library(corrgram)
corrgram(mtcars,
order=TRUE,
lower.panel=panel.ellipse,
upper.panel=panel.pts,
text.panel=panel.txt,
diag.panel=panel.minmax,
main="Corrgram of mtcars data using scatter plots and ellipses")
library(corrgram)
corrgram(mtcars,
lower.panel=panel.shade,
upper.panel=NULL,
text.panel=panel.txt,
main="Car Mileage Data(unsorted)")
我们还可以自主控制corrgram()函数中使用的颜色。比如,我们可以在col.corrgram()函数中用colorRampPallette()函数来指定四种颜色:
library(corrgram)
cols<-colorRampPalette(c("darkgoldenrod4","burlywood1",
"darkkhaki","darkgreen"))
corrgram(mtcars,
order=TRUE,
col.regions=cols,
lower.panel=panel.shade,
upper.panel=panel.conf,
text.panel=panel.txt,
main="A corrgram(or Horse) of a Difference Color")