8.2 相关系数图(correlation matrix)
8.2.1 认识相关系数图
相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量,一般用字母r表示。取值范围为[-1,1],“(0,1]”为正相关,“[-1,0)”为负相关,“0”表示线性不相关。研究两个变量间相关可以通过散点图展示,当变量较多时,可通过相关系数矩阵展示,相关系数图就是相关系数矩阵的可视化。
从左上到右下方向的对角线上,均是两个相同变量的相关,其数值均是 1,对角线以上部分的相关系数与以下部分的相关系数是对称的。
相关系数矩阵图主要包括热力图、气泡图或方块图、椭圆图。
热力图:将一个网格矩阵映射到指定的颜色序列上,恰当地选取颜色来展示数据。
所有的数据都在-1到1之间,正负号表示正相关和负相关,红色表示正相关系数,蓝色表示负相关系数。热图适用于显示多个变量之间的差异;显示当中任何模式;显示是否有彼此相似的变量;以及检测彼此之间是否存在任何相关性。
气泡图:将一个网格矩阵映射到气泡的面积大小和颜色序列上。
气泡图使用三个值来确定每个数据序列,其中 X轴和Y轴分别代表不同的两个维度的数据,气泡的面积代表第三个维度的数据,即相关矩阵的绝对值大小;红色表示正相关系数,蓝色表示负相关系数。也可以将圆圈换成方块;
椭圆图:利用椭圆的形状来表示相关系数:离心率越大,椭圆越扁,对应绝对值 较大的相关系数;离心率越小,椭圆越圆,对应绝对值较小的相关系数。
8.2.2 绘制相关关系图
1、ggplot2 绘制热图
library(RColorBrewer) # 调用RColorBrewer包。
data2 <- mtcars[5:8] # 选取mtcars数据集5到8列数据为例。
data2_cor <- round(cor(data2), 1) # 求算data2数据集相关系数。library(reshape2) # 调用reshape2包。
mydata <- melt(data2_cor) # 相关系数矩阵转长数据格式。
colnames(mydata)<-c("Var1","Var2","value") # 定义mydata数据集列名。
ggplot(mydata, aes(x = Var1, y = Var2, fill = value, label = value)) +
geom_tile(colour = "black") +
geom_text(size = 3,colour = "white")+
coord_equal()+ scale_fill_gradientn(colours = c(brewer.pal(7, "Set1")[2], "white", brewer.pal(7, "Set1")[1]), na.value = NA) # 绘制相关系数图。
绘制气泡图
mydata$AbsValue <- abs(mydata$value)
ggplot(mydata, aes(x = Var1, y = Var2)) +
geom_point(aes(size = AbsValue, fill = value), shape=21, colour = "black") +
scale_fill_gradientn(colours = c(brewer.pal(7,"Set1")[2], "white", brewer.pal(7,"Set1")[1]), na.value = NA)+ scale_size_area(max_size = 12, guide = "none") # 绘制气泡相关系数图。
2、corrplot包
library(corrplot) # 调用corrplot包。
## corrplot 0.92 loaded
corrplot.mixed(data2_cor) # 绘制相关系数图。默认为圆形。
corrplot(data2_cor, method = "ellipse", type = "upper") # 椭圆图。
corrplot(data2_cor, method = "square", type = "upper") # 方块图。
corrplot(data2_cor, method = "color", type = "upper") # 颜色填充。
corrplot(data2_cor, method = "number", type = "upper") # 数值。
3、performanceAnalytics包
library(PerformanceAnalytics) # 调用PerformanceAnalytics包。
chart.Correlation(data2, histogram = TRUE, pch = 15) # 绘制相关系数图。
4、GGally包
library(GGally) # 调用GGally包。
ggpairs(data2) # 相关系数图。
ggpairs(df, columns = 5:9, ggplot2::aes(colour = nitrogen)) # 按分组绘制相关系数图。
ggcorr(df[5:9], method = c("everything", "pearson")) # ggcorr函数绘制相关系数图。
5、corrgram包
library(corrgram) # 调用corrgram包。corrgram(data2) # 基本相关系数图。
corrgram(data2, lower.panel = panel.shade, upper.panel = panel.pie) # 基本相关系数图。
默认地,蓝色和从左下指向右上的斜杠表示单元格中的两个变量呈正相关。反过来,红色和从左上指向右下的斜杠表示变量呈负相关。色彩越深,饱和度越高,说明变量相关性越大。相关性接近于0的单元格基本无色。
参考资料
ggplot2: 数据分析与图形艺术,西安交通大学出版社,2013.
R语言数据可视化之美:专业图表绘制指南,电子工业出版社,2019.
R数据科学,人民邮电出版社,2018.
R数据可视化手册,人民邮电出版社,2014.
本文使用 文章同步助手 同步