相关系数图可视化

参考:刘顺祥作品

虽然cor()函数可以非常方便快捷的计算出连续变量之间的相关系数,但当变量非常多时,返回的相关系数一定时读者看的眼花缭乱。

下面就以R自带的mtcars数据集为例,讲讲相关系数图的绘制:

cor(mtcars[1:7])
##             mpg        cyl       disp         hp        drat         wt
## mpg   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.68117191 -0.8676594
## cyl  -0.8521620  1.0000000  0.9020329  0.8324475 -0.69993811  0.7824958
## disp -0.8475514  0.9020329  1.0000000  0.7909486 -0.71021393  0.8879799
## hp   -0.7761684  0.8324475  0.7909486  1.0000000 -0.44875912  0.6587479
## drat  0.6811719 -0.6999381 -0.7102139 -0.4487591  1.00000000 -0.7124406
## wt   -0.8676594  0.7824958  0.8879799  0.6587479 -0.71244065  1.0000000
## qsec  0.4186840 -0.5912421 -0.4336979 -0.7082234  0.09120476 -0.1747159
##             qsec
## mpg   0.41868403
## cyl  -0.59124207
## disp -0.43369788
## hp   -0.70822339
## drat  0.09120476
## wt   -0.17471588
## qsec  1.00000000

很显然,这么多数字堆在一起肯定很难快速的发现变量之间的相关性大小,如果可以将相关系数可视化,就能弥补一大堆数字的缺陷了。这里介绍corrplot包中的corrplot()函数进行相关系数的可视化,首先来看看该函数的语法和一些重要参数: corrplot(corr, method = c(“circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”), type = c(“full”, “lower”, “upper”), add = FALSE, col = NULL, bg = “white”, title = “”, is.corr = TRUE, diag = TRUE, outline = FALSE, mar = c(0,0,0,0), addgrid.col = NULL, addCoef.col = NULL, addCoefasPercent = FALSE, order = c(“original”, “AOE”, “FPC”, “hclust”, “alphabet”), hclust.method = c(“complete”, “ward”, “single”, “average”, “mcquitty”, “median”, “centroid”), addrect = NULL, rect.col = “black”, rect.lwd = 2, tl.pos = NULL, tl.cex = 1, tl.col = “red”, tl.offset = 0.4, tl.srt = 90, cl.pos = NULL, cl.lim = NULL, cl.length = NULL, cl.cex = 0.8, cl.ratio = 0.15, cl.align.text = “c”,cl.offset = 0.5, addshade = c(“negative”, “positive”, “all”), shade.lwd = 1, shade.col = “white”, p.mat = NULL, sig.level = 0.05, insig = c(“pch”,“p-value”,“blank”, “n”), pch = 4, pch.col = “black”, pch.cex = 3, plotCI = c(“n”,“square”, “circle”, “rect”), lowCI.mat = NULL, uppCI.mat = NULL, …) corr:需要可视化的相关系数矩阵 method:指定可视化的方法,可以是圆形、方形、椭圆形、数值、阴影、颜色或饼图形 type:指定展示的方式,可以是完全的、下三角或上三角 col:指定图形展示的颜色,默认以均匀的颜色展示 bg:指定图的背景色 title:为图形添加标题 is.corr:是否为相关系数绘图,默认为TRUE,同样也可以实现非相关系数的可视化,只需使该参数设为FALSE即可 diag:是否展示对角线上的结果,默认为TRUE outline:是否绘制圆形、方形或椭圆形的轮廓,默认为FALSE mar:具体设置图形的四边间距 addgrid.col:当选择的方法为颜色或阴影时,默认的网格线颜色为白色,否则为灰色 addCoef.col:为相关系数添加颜色,默认不添加相关系数,只有方法为number时,该参数才起作用 addCoefasPercent:为节省绘图空间,是否将相关系数转换为百分比格式,默认为FALSE order:指定相关系数排序的方法,可以是原始顺序(original)、特征向量角序(AOE)、第一主成分顺序(FPC)、层次聚类顺序(hclust)和字母顺序,一般”AOE”排序结果都比”FPC”要好 hclust.method:当order为hclust时,该参数可以是层次聚类中ward法、最大距离法等7种之一 addrect:当order为hclust时,可以为添加相关系数图添加矩形框,默认不添加框,如果想添加框时,只需为该参数指定一个整数即可 rect.col:指定矩形框的颜色 rect.lwd:指定矩形框的线宽 tl.pos:指定文本标签(变量名称)的位置,当type=full时,默认标签位置在左边和顶部(lt),当type=lower时,默认标签在左边和对角线(ld),当type=upper时,默认标签在顶部和对角线,d表示对角线,n表示不添加文本标签 tl.cex:指定文本标签的大小 tl.col:指定文本标签的颜色 cl.pos:图例(颜色)位置,当type=upper或full时,图例在右表(r),当type=lower时,图例在底部,不需要图例时,只需指定该参数为n addshade:只有当method=shade时,该参数才有用,参数值可以是negtive/positive和all,分表表示对负相关系数、正相关系数和所有相关系数添加阴影。注意:正相关系数的阴影是45度,负相关系数的阴影是135度 shade.lwd:指定阴影的线宽 shade.col:指定阴影线的颜色

#虽然该函数的参数比较多,但可以组合各种参数,灵活实现各种各样的相关系数图。下面就举几个例子:
library(corrplot)
## Warning: package 'corrplot' was built under R version 3.2.4
corr <- cor(mtcars[1:7])

#1)参数全部默认情况下的相关系数图
corrplot(corr=corr)

#2)指定数值方法的相关系数图
corrplot(corr=corr, method = "number", col="black", cl.pos="n")

#3)按照特征向量角序(AOE)排序相关系数图
corrplot(corr=corr, order="AOE")

#4)同时添加相关系数值
corrplot(corr=corr, order = "AOE", addCoef.col = "grey")

#5)选择方法为color
corrplot(corr=corr, method = "color", order="AOE", addCoef.col = "grey")

#我觉得这幅图比上面的圆形图要清爽很多

#6)绘制圆形轮廓相关系数图
corrplot(corr = corr, col = "gray", order = "AOE", outline = T, cl.pos = "n")

#7)自定义背景色
corrplot(corr = corr, col="gray", bg="gold2", order = "AOE", cl.pos = "n")

#8)混合方法之上三角为圆形,下三角为数字
corrplot(corr=corr, order="AOE", type="upper", tl.pos = "d")
corrplot(corr=corr, add=T, type="lower", method = "number", order = "AOE", diag = F, tl.pos = "n", cl.pos = "n")

#这幅图将颜色、圆的大小和数值型相关系数相结合,更容易发现变量之间的相关性

#混合方法之上三角为圆形,下三角为方形
corrplot(corr = corr,order="AOE",type="upper",tl.pos="d")
corrplot(corr = corr,add=TRUE, type="lower", method="square",order="AOE",diag=FALSE,tl.pos="n", cl.pos="n")

#混合方法之上三角为圆形,下三角为黑色数字
corrplot(corr = corr,order="AOE",type="upper",tl.pos="tp")
corrplot(corr = corr,add=TRUE, type="lower", method="number",order="AOE", col="black",diag=FALSE,tl.pos="n", cl.pos="n")

#个人更倾向于上图的展现形式,既清爽又能很好的反映变量间的相关系数。

#以层次聚类法排序
corrplot(corr = corr, order = "hclust")

#以层次聚类法排序,并绘制3个矩形框
corrplot(corr = corr, order="hclust", addrect = 3, rect.col = "black")

 有关更多相关系数图的绘制可参见corrplot()函数的帮助文档,文档中还包括了很多案例,感兴趣的可以去参考的看看。

皮尔逊相关系数是衡量两个随机变量之间线性关系强度及方向的统计量。它的取值范围在[-1, 1]之间,绝对值越接近1,表明两个变量之间的相关性越强。当皮尔逊相关系数为1时,表示两个变量呈现完全正线性相关;当皮尔逊相关系数为-1时,表示两个变量呈现完全负线性相关。当皮尔逊相关系数为0时,表示两个变量没有线性关系。 可视化皮尔逊相关系数矩阵可以帮助我们更直观地理解变量之间的相关性。一种常见的可视化方法是使用热力。在热力中,相关系数的值用颜色的深浅来表示,深色表示相关性较强,浅色表示相关性较弱。通过观察热力,我们可以快速发现相关性较强的变量对,从而帮助我们进行进一步的分析和决策。 另外,使用Spark ML库可以方便地计算皮尔逊相关系数矩阵。通过创建Maven项目,添加依赖与构建插件,创建日志属性文件,创建包与单例对象等步骤,我们可以运行程序并查看结果。具体操作可以参考中提供的相关步骤。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [利用Spark ML计算皮尔逊相关系数矩阵](https://blog.csdn.net/howard2005/article/details/124953473)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值