R语言统计分析——相关图

时间:2024-10-14 06:57:46

参考资料: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")