热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

R语言之相关系数计算篇

R语言之相关系数计算篇简介:在环境微生物类的文章中,经常出现计算物种与基因、基因与基因、基因与代谢物之间的相关系数的内容,在这个计算的

R语言之相关系数计算篇


简介:

在环境微生物类的文章中,经常出现计算物种与基因、基因与基因、基因与代谢物之间的相关系数的内容,在这个计算的基础之上再进行相关的可视化。例如相关性热图、网络图等等。文献中常出现的相关系数有Spearman、Pearson两种。


案例:

之间课题组一个师兄想代谢组学中代谢物与基因之间的相关性,共选择了95种代谢物,3313个相关基因,三个实验组一个对照组(每组三个生物学重复,共计12个样本)如下:

在这里插入图片描述
在这里插入图片描述

想分析每种代谢物和基因之间的关系,需要求解P值和R值,如下:
在这里插入图片描述


求解思路:


方法一:cor() 函数与cor.test()函数

这两种函数是R自带的函数,使用简单,操作过程如下:


cor()函数

代码:

metabolite <- read.csv(&#39;metabolite.csv&#39;,row.names = 1)
gene <- read.csv(&#39;gene.csv&#39;,row.names = 1) #导入数据
R_pearson <- cor(metabolite,gene,method = &#39;pearson&#39;) #求解相关系数

结果:

在这里插入图片描述

成功求解相关系数,but,该函数不能求解P值,失败*1。


cor.test()函数

代码:

metabolite <- read.csv(&#39;metabolite.csv&#39;,row.names = 1)
gene <- read.csv(&#39;gene.csv&#39;,row.names = 1)
R_pearson <- cor.test(metabolite,gene,method = &#39;pearson&#39;)

结果:

> R_pearson <- cor.test(metabolite,gene,method = &#39;pearson&#39;)
Error in cor.test.default(metabolite, gene, method = "pearson") : &#39;x&#39;和&#39;y&#39;的长度必需相同

cor.test()函数只能进行同维度的数据计算,但是相较于cor()函数,cor.test()函数可以计算出P值,如下:

代码:

metabolite <- read.csv(&#39;metabolite.csv&#39;,row.names = 1)
gene <- read.csv(&#39;gene.csv&#39;,row.names = 1)
R_pearson <- cor.test(metabolite$X2.Hydroxypyridine,gene$Cluster.1184.0,method = &#39;pearson&#39;) #只选择其中一列数据进行计算

结果:

在这里插入图片描述

But!我们需要计算的是不同维度的数据,失败*2


方法二:Hmisc包中的rcorr()函数以及Psych包中的corr.test()函数


Hmisc包中的rcorr()函数

代码:

metabolite <- read.csv(&#39;metabolite.csv&#39;,row.names = 1)
gene <- read.csv(&#39;gene.csv&#39;,row.names = 1)
library(Hmisc) #载入包(前提是你安装了这个包)
rcorr_test_pearson <- rcorr(as.matrix(gene),as.matrix(metabolite),type = &#39;pearson&#39;)#这里的编写规则和前两个不一样,数据需要转化为矩阵as.matrix()

结果:

该计算过程需要耗费一丢丢时间,当然不超过30s的样子

在这里插入图片描述

该结果包含了相关系数和P值,算是成功求解,但是一看结果:

R_pearson$r

在这里插入图片描述
该结果中包含了gene、metabolite本身的相关系数以及P值,原因是啥俺也不知道/(ㄒoㄒ)/~~,失败*3


Psych包中的corr.test()函数

代码:

metabolite <- read.csv(&#39;metabolite.csv&#39;,row.names = 1)
gene <- read.csv(&#39;gene.csv&#39;,row.names = 1)
library(psych) #载入包(前提是你安装了这个包)
R_pearson <- corr.test(gene,metabolite,method = &#39;pearson&#39;)

结果:

结果就是出不来结果,┭┮﹏┭┮。好像是因为数量较大和corr.test()函数还包括了P值矫正的过程,这里需要指明的是虽然我没有写出矫正的方法但是corr.test()函数会有一个默认的矫正过程,所以大家在使用corr.test()的时候一定要注意这里有默认矫正的过程!!!!

在这里插入图片描述

代码一直停不下来,最后我按了ESC中止了代码。

后续:

只运行部分数据进行求解:

metabolite <- read.csv(&#39;metabolite.csv&#39;,row.names = 1)
gene <- read.csv(&#39;gene.csv&#39;,row.names = 1)
library(psych) #载入包(前提是你安装了这个包)
R_pearson <- corr.test(gene[1:3],metabolite[1:6],method = &#39;pearson&#39;)

后续的结果:

在这里插入图片描述

至少说明在数据量比较小的时候,corr.test()函数有着比较好的优势。失败*3


结果:

最后还是决定使用Hmisc包中的rcorr()函数进行求解:

代码:

metabolite <- read.csv(&#39;metabolite.csv&#39;,row.names = 1)
gene <- read.csv(&#39;gene.csv&#39;,row.names = 1)
library(Hmisc) #载入包(前提是你安装了这个包)
rcorr_test_pearson <- rcorr(as.matrix(gene),as.matrix(metabolite),type = &#39;pearson&#39;)#这里的编写规则和前两个不一样,数据需要转化为矩阵as.matrix()
rcorr_test_pearson_R <- rcorr_test_pearson$r[1:3313,3314:3408]
rcorr_test_pearson_P <- rcorr_test_pearson$P[1:3313,3314:3408]#后来琢磨了一下,我只选择结果里面我需要的数据即可
write.csv(rcorr_test_pearson_R,&#39;R.csv&#39;)#导出数据
write.csv(rcorr_test_pearson_P,&#39;P.csv&#39;)

结果:
在这里插入图片描述
在这里插入图片描述
芜湖!下班!么么哒!


推荐阅读
  • 在Windows 7 64位系统中,使用DNW进行mini2440开发板的USB连接时遇到驱动不兼容问题。本文介绍了一种替代工具——SuperVivi-USB-Transfer-Tool,并详细说明其安装步骤和使用方法。 ... [详细]
  • 2022年单片机课程(机器人工程)教学反思
    本文对2022年单片机类课程的教学进行了全面反思,分析了教学过程中遇到的问题,并探讨了未来改进的方向。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文介绍 Java 中如何使用 Year 类的 atMonth 方法将年份和月份组合成 YearMonth 对象,并提供代码示例。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • vivo Y5s配备了联发科Helio P65八核处理器,这款处理器采用12纳米工艺制造,具备两颗高性能Cortex-A75核心和六颗高效能Cortex-A55核心。此外,它还集成了先进的图像处理单元和语音唤醒功能,为用户提供卓越的性能体验。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
  • 中断向量是计算机系统中用于指向中断服务程序的入口地址。每个中断向量对应一个特定的中断事件,存储在内存中的中断向量表中。该表通常包含256个条目,每个条目占用4个字节,用于存放跳转指令或直接指向中断处理程序的地址。 ... [详细]
  • [Vue.js 3.0] Guide – Scaling Up – State Management
    [Vue.js 3.0] Guide – Scaling Up – State Management ... [详细]
  • cJinja:C++编写的轻量级HTML模板引擎
    本文介绍了cJinja,这是一个用C++编写的轻量级HTML模板解析库。它利用ejson来处理模板中的数据替换(即上下文),其语法与Django Jinja非常相似,功能强大且易于学习。 ... [详细]
  • 尾花|花萼_相关性Correlations 皮尔逊相关系数(pearson)和斯皮尔曼等级相关系数(spearman)
    尾花|花萼_相关性Correlations 皮尔逊相关系数(pearson)和斯皮尔曼等级相关系数(spearman) ... [详细]
  • QNX 微内核(procnto-instr)的监测版本内置了高级跟踪与分析工具,能够实现实时系统监控。该模块适用于单处理器及多处理器系统。 ... [详细]
  • 本文介绍了如何通过ARM编译器组件重定向标准C运行时库的I/O函数,以适应不同的硬件平台。原文链接:https://www.keil.com/pack/doc/compiler/RetargetIO/html/retarget_overview.html ... [详细]
  • 在使用高德地图内置导航功能时遇到AMapNavi组件出现空指针异常,经过多次排查发现问题是由于so库的兼容性引起的。本文将详细介绍如何通过调整项目配置来解决这一问题。 ... [详细]
author-avatar
刘刘刘存乐_626
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有