郑连虎,在数学学院取得理学学位的文科生,中国人民大学硕博连读生在读,山东大学管理学学士、理学学士
个人公众号:阿虎定量笔记
文章(技术贴│Stata回归图表美化)推送之后,有读者问我,能不能给相关系数的报告也美化一下?当然没问题,这期我来介绍用R语言中的5个程序包,绘制13种相关系数矩阵,13种哦~图后直接上代码。
本期使用R语言内置数据集进行练习;查看R包含哪些内置数据,请使用“data()”函数:
我们使用这里面的“mtcars”数据,
包含“mpg”、“cyl”、“disp”、“hp”、“drat”等11个变量的汽车道路测试数据;在R中读取内置数据,直接输入数据名称即可:
corrplot包
# 安装corrplot包并调用
install.packages("corrplot")
library(corrplot)
第1种:简单粗暴
蓝色表示两个变量呈正相关,红色表示变量呈负相关。色彩越深,表示变量相关性越大:
# 计算相关系数
mycor<-cor(mtcars)
# 删除缺失值或字符变量
use="complete.obs"
# 输出为mycor且保留两位小数
round(mycor,digits=2)
# 绘制相关系数矩阵图
corrplot(mycor, method = "shade",shade.col = NA, tl.col ="black", tl.srt = 45, order = "AOE")
第2种:圆圈图
蓝色表示两个变量呈正相关,红色表示变量呈负相关。色彩越深,表示变量相关性越大:
# 计算相关系数
mycor <- cor(mtcars)
# 绘制相关系数矩阵图
corrplot(mycor, method="circle")
第3种:带系数的椭圆图
椭圆越扁,表示相关系数的绝对值较大;椭圆越圆,表示相关系数的绝对值较小;椭圆长轴的方向表示相关系数的正负:右上-左下方向对应正值,左上-右下方向对应负值:
# 计算相关系数
mycor <- cor(mtcars)
# 绘制相关系数矩阵图
corrplot.mixed(mycor, upper = "ellipse")
第4种:三角圆圈图
# 计算相关系数
mycor <- cor(mtcars)
# 绘制相关系数矩阵图
corrplot(mycor, method="circle",type="upper",order="hclust")
第5种:三角颜色图
# 计算相关系数
mycor <- cor(mtcars)
# 绘制相关系数矩阵图
corrplot(mycor,method="color",type="upper",order="hclust",addCoef.col = "black")
corrgram包
# 安装iterators包并调用
install.packages("iterators")
library(iterators)
# 安装corrgram包并调用
install.packages("corrgram")
library(corrgram)
第6种:添加斜线
蓝色和从左下指向右上的斜杠表示两个变量呈正相关,红色和从左上指向右下的斜杠表示变量呈负相关。色彩越深,表示变量相关性越大:
# 绘制相关系数矩阵图
corrgram(mtcars, lower.panel=panel.shade, upper.panel=NULL,text.panel=panel.txt, main="Car Mileage Data (unsorted)")
第7种:添加饼图
上三角区域使用饼图表示相关系数;蓝色和从12点钟处开始顺时针填充饼图表示两个变量呈正相关,红色和逆时针方向填充饼图表示变量负相关:
# 绘制相关系数矩阵图
corrgram(mtcars, order=TRUE, lower.panel=panel.shade, upper.panel=panel.pie,text.panel=panel.txt, main="Correlogram of mtcar intercorrelations")
第8种:添加拟合曲线与置信椭圆
下三角区域使用平滑拟合曲线和置信椭圆,上三角区域使用散点图:
# 绘制相关系数矩阵图
corrgram(mtcars, order=TRUE, lower.panel=panel.ellipse, upper.panel=panel.pts,text.panel=panel.txt, diag.panel=panel.minmax, main="Correlogram of mtcardata using scatterplots and ellipses")
ellipse包
# 安装ellipse包并调用
install.packages("ellipse")
library(ellipse)
第9种:椭圆图
椭圆越扁,表示相关系数的绝对值较大;椭圆越圆,表示相关系数的绝对值较小;椭圆长轴的方向表示相关系数的正负:右上-左下方向对应正值,左上-右下方向对应负值:
# 绘制相关系数矩阵图
col = colors[as.vector(apply(cor, 2, rank))]
plotcorr(cor, col = col, mar = rep(0, 4))
第10种:颜色图
蓝色表示正相关系数,红色表示负相关系数:
# 计算相关系数
fit = lm(mpg ~ ., mtcars)
cor = summary(fit, correlation = TRUE)$correlation
# 相关阵上下倒转再转置
cor2 = t(cor[11:1, ])
# 绘制相关系数矩阵图
colors = c("#A50F15", "#DE2D26","#FB6A4A", "#FCAE91","#FEE5D9","white", "#EFF3FF","#BDD7E7", "#6BAED6", "#3182BD","#08519C")
image(1:11, 1:11, cor2, axes = FALSE, ann = F, col = colors)
text(rep(1:11, 11), rep(1:11, each = 11), round(100 * cor2))
GGally包
# 安装GGally包并调用
install.packages("GGally")
library(GGally)
第11种:三角颜色图
# 绘制相关系数矩阵图
ggcorr(mtcars, label = TRUE, label_alpha = TRUE)
第12种:添加相关类型
# 绘制相关系数矩阵图
ggpairs(mtcars, columns = c("mpg", "cyl", "disp"),upper = list(continuous = wrap("cor", size = 10)), lower =list(continuous = "smooth"))
PerformanceAnalytics包
# 安装PerformanceAnalytics包并调用
install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)
第13种:添加直方图、散点图与P值
显示相关系数大小、相关系数显著性检验的P值、变量的直方图与变量间的散点图:
# 列出待计算变量
mydata <-mtcars[c('mpg','cyl','disp','hp','drat')]
# 绘制相关系数矩阵图
chart.Correlation(mydata, histogram=TRUE, pch=19)
本期参考文献
[1] Robert I. Kabacoff. R in Action-Data analysis and graphics with R. Manning Publications Co. 2015: 283-287.
公众号后台回复关键字即可学习
回复 爬虫 爬虫三大案例实战
回复 Python 1小时破冰入门回复 数据挖掘 R语言入门及数据挖掘
回复 人工智能 三个月入门人工智能
回复 数据分析师 数据分析师成长之路
回复 机器学习 机器学习的商业应用
回复 数据科学 数据科学实战
回复 常用算法 常用数据挖掘算法