zoukankan      html  css  js  c++  java
  • 相关系数图可视化

    參考:刘顺祥作品

    尽管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")

    #这幅图将颜色、圆的大小和数值型相关系数相结合,更easy发现变量之间的相关性
    
    #混合方法之上三角为圆形。下三角为方形
    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()函数的帮助文档。文档中还包含了非常多案例。感兴趣的能够去參考的看看。

  • 相关阅读:
    HDU 5938 Four Operations 【贪心】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5935 Car 【模拟】 (2016年中国大学生程序设计竞赛(杭州))
    HDU 5934 Bomb 【图论缩点】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5933 ArcSoft's Office Rearrangement 【模拟】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5929 Basic Data Structure 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
    【转】LaTeX 符号命令大全
    HDU 5922 Minimum’s Revenge 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
    HDU 5927 Auxiliary Set 【DFS+树】(2016CCPC东北地区大学生程序设计竞赛)
    数据结构之稀疏矩阵
    C++中引用(&)的用法和应用实例
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7227965.html
Copyright © 2011-2022 走看看