【R语言】——相关性分析和热图绘制

本期介绍了利用R语言进行相关性分析和数据的可视化的方法。

一、什么是相关性分析?

相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。组学测序转录组中需设置多个生物学重复,而对多个生物学重复样本的相关性分析,可从中判断生物学重复样本数据是否可以用于接下来的分析。如有一生物学重复不一致的情况,可去除变异数据,预防某一重复数据不可用进而影响实验数据的分析。

常见的相关性分析方法有三种:皮尔森(pearson)相关系数、斯皮尔曼(spearman)相关系数和肯德尔(kendall)相关系数

表1 相关性关系

极弱相关或无相关

弱相关

中等程度相关

强相关

极强相关

0.0-0.2

0.2-0.4

0.4-0.6

0.6-0.8

0.8-1.0

1 皮尔森相关系数(Pearson)

皮尔森相关系数Pearson),也称为线性相关系数,积差相关系数,1890年由英国统计学家卡尔•皮尔逊提出。是用来反映两个变量线性相关程度的统计量,适用于满足正态分布的数据。相关系数用r表示,其中n为样本量,分别为两个变量的观测值和均值。r描述的是两个变量间线性相关强弱的程度。r的绝对值越大表明相关性越强。r的取值在-1与+1之间,若r>0,表明两个变量是正相关,即一个变量的值越大,另一个变量的值也会越大;若r<0,表明两个变量是负相关,即一个变量的值越大另一个变量的值反而会越小。r 的绝对值越大表明相关性越强,要注意的是这里并不存在因果关系。若r=0,表明两个变量间不是线性相关,但有可能是其他方式的相关(比如曲线方式)。

计算公式为:

其中n为样本容量,xi和yi为两变量的样本值。

2 斯皮尔曼相关性系数(spearman)

斯皮尔曼相关性系数(spearman)又称斯皮尔曼秩相关系数是利用两变量的秩次大小作线性相关分析,而不是根据数据的实际值计算,适用于有序数据和不满足正态分布假设的等间隔数据,与Pearson相关系数相比属于非参数统计方法,具有更广的适用范围。经常用希腊字母ρ表示。

其计算公式为:

其中di表示每对观察值(x,y)的秩之差,n为观察对的个数。

3 肯相关性系数(spearman)

肯德尔相关系数(Kendall),是一种相关系数是对两个有序变量或两个秩变量之间相关程度测量属于非参数统计

二、代码

1 数据准备

数据输入格式(csv格式):

2 R包加载及数据导入

#下载包#install.packages("corrplot")install.packages("ggcorrplot")install.packages("psych")install.packages("vcd")#加载包#library(corrplot)library(ggplot2)library(ggcorrplot)library(vcd)library(psych)library(ggrepel)#数据导入#data<-read.table(file='C:/Rdata/jc/相关性热图数据.csv',row.names= 1,header=TRUE,sep=',')dim(data) #数组维度data<-as.matrix(data) #利用as.matrix()将所需数据集转换为matrix格式,才可在corrplot中跑data=data.frame(scale(data))#数据标准化head(data)

#相关性计算data<-cor(data,method="spearman") #pearson积差相关系数,spearman等级相关系数和kendall秩相关系数round(data, 2)#保留两位小数#相关性计算data<-cor(data,method="spearman") #pearson积差相关系数,spearman等级相关系数和kendall秩相关系数round(data, 2)#保留两位小数

  

3 相关性热图绘制

3.1 ggcorrplot包绘制热图

#相关性热图绘制ggcorrplot(data, method="circle") #圆圈大小变化

图1 相关性基础热图

#调整与美化ggcorrplot(data, method = "circle", #"square", "circle"相比corrplot少了很多种,只有方形和圆形,默认方形。type ="upper" , #full完全(默认),lower下三角,upper上三角ggtheme = ggplot2::theme_minimal,title = "",show.legend = TRUE,  #是否显示图例。legend.title = "Corr", #指定图例标题。show.diag =T ,    #FALSE显示中间colors = c("blue", "white", "red"), #需要长度为3的颜色向量,同时指定low,mid和high处的颜色。outline.color = "gray", #指定方形或圆形的边线颜色。hc.order = FALSE,  #是否按hclust(层次聚类顺序)排列。hc.method = "complete", #相当于corrplot中的hclust.method, 指定方法一样,详情见?hclust。lab =T , #是否添加相关系数。FALSElab_col = "black", #指定相关系数的颜色,只有当lab=TRUE时有效。lab_size = 4, #指定相关系数大小,只有当lab=TRUE时有效。p.mat = NULL,  #p.mat= p_mat,insig= "pch", pch.col= "red", pch.cex= 4,sig.level = 0.05,insig = c("pch", "blank"),tl.cex = 12, #指定变量文本的大小,tl.col = "black", #指定变量文本的颜色,tl.srt = 45, #指定变量文本的旋转角度。digits = 2 #指定相关系数的显示小数位数(默认2)。)

图2 调整与美化后的热图

3.2 gcorrplot包绘制相关性热图3.2.1 gcorrplot包基础热图#corrplot包绘图#corrplot(data)corrplot(data, method="circle", #square方形,ellipse, 椭圆形,number数值,shade阴影,color颜色,pie饼图title = "pearson",   #指定标题type="full",  #full完全(默认),lower下三角,upper上三角#col=c("#FF6666", "white", "#0066CC"), #指定图形展示的颜色,默认以均匀的颜色展示。支持grDevices包中的调色板,也支持RColorBrewer包中调色板。outline = T,  #是否添加圆形、方形或椭圆形的外边框,默认为FALSE。diag = TRUE,  #是否展示对角线上的结果,默认为TRUEmar = c(0,0,0,0), #设置图形的四边间距。数字分别对应(bottom, left, top, right)。bg="white", #指定背景颜色add = FALSE, #表示是否添加到已经存在的plot中。默认FALSE生成新plot。is.corr = TRUE, #是否为相关系数绘图,默认为TRUE,FALSE则可将其它数字矩阵进行可视化。addgrid.col = "darkgray", #设置网格线颜色,当指定method参数为color或shade时, 默认的网格线颜色为白色,其它method则默认为灰色,也可以自定义颜色。addCoef.col = NULL, #设置相关系数值的颜色,只有当method不是number时才有效addCoefasPercent = FALSE, #是否将相关系数转化为百分比形式,以节省空间,默认为FALSE。order = "original", #指定相关系数排序的方法, 可以是original原始顺序,AOE特征向量角序,FPC第一主成分顺序,hclust层次聚类顺序,alphabet字母顺序。hclust.method = "complete", # 指定hclust中细分的方法,只有当指定order参数为hclust时有效。有7种可选:complete,ward,single,average,mcquitty,median,centroid。addrect = NULL, #是否添加矩形框,只有当指定order参数为hclust时有效, 默认不添加, 用整数指定即可添加。rect.col = "black", #指定矩形框的颜色。rect.lwd = 2, #指定矩形框的线宽。tl.pos = NULL,  #指定文本标签(变量名称)相对绘图区域的位置,为"lt"(左侧和顶部),"ld"(左侧和对角线),"td"(顶部和对角线),"d"(对角线),"n"(无);当type="full"时默认"lt"。当type="lower"时默认"ld"。当type="upper"时默认"td"。tl.cex = 1,  #设置文本标签的大小tl.col = "black", #设置文本标签的颜色。cl.pos = NULL #设置图例位置,为"r"(右边),"b"(底部),"n"(无)之一。当type="full"/"upper"时,默认"r"; 当type="lower"时,默认"b"。#addshade = c("negative", "positive", "all"), # 表示给增加阴影,只有当method="shade"时有效。#为"negative"(对负相关系数增加阴影135度);"positive"(对正相关系数增加阴影45度);"all"(对所有相关系数增加阴影)。#shade.lwd = 1,  #指定阴影线宽。#shade.col = "white",  #指定阴影线的颜色。    #p.mat= res1$p,sig.level= 0.01,insig= "pch", pch.col= "blue", pch.cex= 3,#只有指定矩阵的P值,sig.level,pch等参数才有效。只有当insig = "pch"时,pch.col和pch.cex参数才有效。)

图3 corrplot包绘图

3.2.2 corrplot包图形与数值混合

#显示数字与图形混合corrplot(data, method="circle", #square方形,ellipse, 椭圆形,number数值,shade阴影,color颜色,pie饼图title = "pearson",   #指定标题type="full", #full完全(默认),lower下三角,upper上三角#col=c("#FF6666", "white", "#0066CC"), #指定图形展示的颜色,默认以均匀的颜色展示。支持grDevices包中的调色板,也支持RColorBrewer包中调色板。outline = F,  #是否添加圆形、方形或椭圆形的外边框,默认为FALSE。diag = TRUE,  #是否展示对角线上的结果,默认为TRUEmar = c(0,0,0,0), #设置图形的四边间距。数字分别对应(bottom, left, top, right)。bg="white", #指定背景颜色add = FALSE, #表示是否添加到已经存在的plot中。默认FALSE生成新plot。is.corr = TRUE, #是否为相关系数绘图,默认为TRUE,FALSE则可将其它数字矩阵进行可视化。addgrid.col = "darkgray", #设置网格线颜色,当指定method参数为color或shade时, 默认的网格线颜色为白色,其它method则默认为灰色,也可以自定义颜色。addCoef.col = NULL, #设置相关系数值的颜色,只有当method不是number时才有效addCoefasPercent = FALSE, #是否将相关系数转化为百分比形式,以节省空间,默认为FALSE。order = "original", #指定相关系数排序的方法, 可以是original原始顺序,AOE特征向量角序,FPC第一主成分顺序,hclust层次聚类顺序,alphabet字母顺序。hclust.method = "complete", # 指定hclust中细分的方法,只有当指定order参数为hclust时有效。有7种可选:complete,ward,single,average,mcquitty,median,centroid。addrect = NULL, #是否添加矩形框,只有当指定order参数为hclust时有效, 默认不添加, 用整数指定即可添加。rect.col = "black", #指定矩形框的颜色。rect.lwd = 2, #指定矩形框的线宽。tl.pos = NULL,  #指定文本标签(变量名称)相对绘图区域的位置,为"lt"(左侧和顶部),"ld"(左侧和对角线),"td"(顶部和对角线),"d"(对角线),"n"(无);当type="full"时默认"lt"。当type="lower"时默认"ld"。当type="upper"时默认"td"。tl.cex = 1,  #设置文本标签的大小tl.col = "black", #设置文本标签的颜色。cl.pos = NULL #设置图例位置,为"r"(右边),"b"(底部),"n"(无)之一。当type="full"/"upper"时,默认"r"; 当type="lower"时,默认"b"。#addshade = c("negative", "positive", "all"), # 表示给增加阴影,只有当method="shade"时有效。#为"negative"(对负相关系数增加阴影135度);"positive"(对正相关系数增加阴影45度);"all"(对所有相关系数增加阴影)。#shade.lwd = 1,  #指定阴影线宽。#shade.col = "white",  #指定阴影线的颜色。    #p.mat= res1$p,sig.level= 0.01,insig= "pch", pch.col= "blue", pch.cex= 3,#只有指定矩阵的P值,sig.level,pch等参数才有效。只有当insig = "pch"时,pch.col和pch.cex参数才有效。)

corrplot(data, title = "",         method = "number", #square方形,ellipse, 椭圆形,number数值,shade阴影,color颜色,pie饼图        outline = F, #是否添加圆形、方形或椭圆形的外边框,默认为FALSE。     add = TRUE, #表示是否添加到已经存在的plot中。默认FALSE生成新plot。type = "lower", #full完全(默认),lower下三角,upper上三角        order="original",col="black", #指定图形展示的颜色,默认以均匀的颜色展示。支持grDevices包中的调色板,也支持RColorBrewer包中调色板。diag=FALSE, #是否展示对角线上的结果,默认为TRUEtl.pos="n",  #指定文本标签(变量名称)相对绘图区域的位置,为"lt"(左侧和顶部),"ld"(左侧和对角线),"td"(顶部和对角线),"d"(对角线),"n"(无)cl.pos=NULL #设置图例位置,为"r"(右边),"b"(底部),"n"(无)之一。)

图4 gcorrplot包数值与图形混合绘图

#椭圆加数值#corrplot(data, method = "ellipse", order = "original",          addCoef.col = "black",#设置相关系数值的颜色,只有当method不是number时才有效type="full", #full完全(默认),lower下三角,upper上三角title = "椭圆与黑色系数值",add = FALSE, #表示是否添加到已经存在的plot中。默认FALSE生成新plot。diag = TRUE, #是否展示对角线上的结果,默认为TRUEtl.cex = 1,  #设置文本标签的大小tl.col = "black", #设置文本标签的颜色。cl.pos = NULL, #设置图例位置,为"r"(右边),"b"(底部),"n"(无)之一。当type="full"/"upper"时,默认"r"; 当type="lower"时,默认"b"。mar = c(1,1,1,1)) #设置图形的四边间距。数字分别对应(bottom, left, top, right)。

图5 椭圆加全部数值

#百分比表示#corrplot(data, method = "ellipse", order = "original",          addCoef.col = "black",#设置相关系数值的颜色,只有当method不是number时才有效addCoefasPercent = TRUE, #是否将相关系数转化为百分比形式,以节省空间,默认为FALSE。type="full", #full完全(默认),lower下三角,upper上三角title = "椭圆与黑色百分比",add = FALSE, #表示是否添加到已经存在的plot中。默认FALSE生成新plot。diag = TRUE, #是否展示对角线上的结果,默认为TRUEtl.cex = 1,  #设置文本标签的大小tl.col = "black", #设置文本标签的颜色。cl.pos = NULL, #设置图例位置,为"r"(右边),"b"(底部),"n"(无)之一。当type="full"/"upper"时,默认"r"; 当type="lower"时,默认"b"。mar = c(1,1,1,1)) #设置图形的四边间距。数字分别对应(bottom, left, top, right)。

图6 数值百分比

好了本次分享就到这里。

关注公众号,发送“相关性热图5”获得完整代码以及演示数据包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/231137.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

矩阵代数与MATLAB实现(特征值、广义特征值、酋矩阵、)

矩阵代数的相关知识 目录 一、特征值与特征向量 1、特征值与特征向量 2、MATLAB计算 二、广义特征值与广义特征向量 1、广义特征值与广义特征向量 2、MATLAB计算 三、酋矩阵 1、酋矩阵 2、MATLAB计算 四、未完待续 总结 提示&#xff1a;以下是本篇文章正文内容&…

网工内推 | 中高级网工,IE认证优先,带薪年假,五险一金

01 敏于行&#xff08;北京&#xff09;科技有限公司 招聘岗位&#xff1a;高级网络开发工程师 职责描述&#xff1a; 1、负责设计、参与数字身份安全中网络安全模块相关项目&#xff08;零信任SDP、VPN等&#xff09;&#xff1b; 2、深入研究和理解网络底层协议和通信机制&…

Aruba无线控制器新增加AP

1、将网线连接上AP的Eth端口&#xff0c;console线也连接上console口 2、在console后台可以看到AP获取到的IP地址 3、确认网络可以联通&#xff0c;通过https访问web界面 AP205默认账号密码&#xff1a;admin AP505账号为admin&#xff0c;密码为设备SN 4、右上角点击"维…

手势识别4:C/C++实现手部检测和手势识别(含源码下载)

手势识别4&#xff1a;C/C实现手部检测和手势识别(含源码下载) 目录 手势识别4&#xff1a;C/C实现手部检测和手势识别(含源码下载) 1. 前言 2. 手势识别模型&#xff08;YOLOv5&#xff09; &#xff08;1&#xff09;手势识别模型训练 &#xff08;2&#xff09;将Pyto…

Mac单独修改应用语言

方法1: 方法2: defaults write com.microsoft.Excel AppleLanguages ("zh-cn") defaults write com.microsoft.Word AppleLanguages ("zh-cn")参考&#xff1a;https://www.zhihu.com/question/24976020

Python中对数组连续赋值的问题

问题描述 在python中&#xff0c;首先用两个等号对两个数组进行初始化并赋值。之后&#xff0c;对任何一个数组进行赋值&#xff0c;都会将其赋予相同值。 import numpy as np Array1 Array2 np.empty(2) Array1[0],Array2[0]70,80 print(Array1[0],Array2[0])80.0 80.0 …

配电网重构单时段+多时段(附带matlab代码)

配电网重构单时段多时段 对于《主动配电网最优潮流研究及其应用实例》的基本复现 简介&#xff1a;最优潮流研究在配电网规划运行中不可或缺&#xff0c;且在大量分布式能源接入的主动配电网环境下尤为重要。传统的启发式算法在全局最优解和求解速度上均无法满足主动配电网运行…

群晖安装portainer

一、下载镜像 打开【Container Manager】 ,搜索portainer&#xff0c;双击【6053537/portainer-ce】下载汉化版本 二、创建映射文件夹 打开【File Station】&#xff0c;在docker目录下创建【portainer】文件夹 三、开启SSH 群晖 - 【控制面板】-【终端机和SNMP】 勾选【启动…

231129 刷题日报

本周值班第3天&#xff0c;今天终于收到二面电话&#xff0c;一度以为挂了。。加油卷&#xff01; 今天尊重下艾宾浩斯遗忘曲线&#xff0c;重复下前几天看的01背包&#xff0c;子集背包&#xff0c;完全背包。 416. 分割等和子集 518. 零钱兑换 II 38min做了一道新题&#…

Oracle 11g安装过程

文章目录 前言1.下载安装包2.安装2.1本地安装文件2.2 安装过程 3.查看是否安装成功3.1 查看oracle是否安装成功3.2 查看oracle服务 前言 本文仅用于记录亲自安装oracle的过程 1.下载安装包 官网地址&#xff1a; Oracle Database 11g Release 2 (11.2.0.1.0) 注意&#xff…

分布式锁之基于zookeeper实现分布式锁(三)

3. 基于zookeeper实现分布式锁 实现分布式锁目前有三种流行方案&#xff0c;分别为基于数据库、Redis、Zookeeper的方案。这里主要介绍基于zk怎么实现分布式锁。在实现分布式锁之前&#xff0c;先回顾zookeeper的相关知识点 3.1. 知识点回顾 3.1.1. 安装启动 安装&#xff1a…

聚焦 6G 无线技术——目标和需求

从 3G 到 5G 乃至之后的每一种无线标准&#xff0c;都在设计时加入了推动行业发展的具体目标。例如&#xff0c;4G 专注于以 IP 为中心的灵活语音、数据和视频通信&#xff0c;而 5G 则在此基础上进行了改进。6G 的目标是提供更加无处不在、更高效、更身临其境的无线连接。6G 系…