上一期(Stata回归图表美化)推送之后,有读者问我,能不能给相关系数的报告也美化一下?当然没问题,这期我来介绍用R语言中的5个程序包,绘制13种相关系数矩阵,13种哦~图后直接上代码。 本期使用R语言内置数据集进行练习;查看R包含哪些内置数据,请使用“data()”函数: 我们使用这里面的“mtcars”数据,包含“mpg”、“cyl”、“disp”、“hp”、“drat”等11个变量的汽车道路测试数据;在R中读取内置数据,直接输入数据名称即可:
# 安装corrplot包并调用 install.packages('corrplot') library(corrplot) 第1种:简单粗暴 蓝色表示两个变量呈正相关,红色表示变量呈负相关。色彩越深,表示变量相关性越大: # 计算相关系数 mycor<> # 删除缺失值或字符变量 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 <-> # 绘制相关系数矩阵图 corrplot(mycor, method='circle') 第3种:带系数的椭圆图 椭圆越扁,表示相关系数的绝对值较大;椭圆越圆,表示相关系数的绝对值较小;椭圆长轴的方向表示相关系数的正负:右上-左下方向对应正值,左上-右下方向对应负值: # 计算相关系数 mycor <-> # 绘制相关系数矩阵图 corrplot.mixed(mycor, upper = 'ellipse') 第4种:三角圆圈图 # 计算相关系数 mycor <-> # 绘制相关系数矩阵图 corrplot(mycor, method='circle',type='upper',order='hclust') 第5种:三角颜色图 # 计算相关系数 mycor <-> # 绘制相关系数矩阵图 corrplot(mycor,method='color',type='upper',order='hclust',addCoef.col = 'black')
# 安装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包并调用 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包并调用 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包并调用 install.packages('PerformanceAnalytics') library(PerformanceAnalytics) 第13种:添加直方图、散点图与P值 显示相关系数大小、相关系数显著性检验的P值、变量的直方图与变量间的散点图: # 列出待计算变量 mydata <> # 绘制相关系数矩阵图 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. |
|