热门标签 | 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;)

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


推荐阅读
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 本文深入探讨了MDK链接脚本的应用与优化技巧。首先,文章介绍了链接脚本的基本概念及其在嵌入式系统开发中的重要性。接着,通过具体实例详细分析了链接脚本的结构和功能,特别是在程序在FLASH中运行时,如何优化链接脚本以提高系统性能。此外,文章还讨论了无需将程序加载到SRAM中的技术细节,为开发者提供了实用的参考和指导。 ... [详细]
  • 在 CentOS 6.7 系统维护中,常用的巡检命令包括:`uname -a` 用于查看内核、操作系统和 CPU 信息;`head -n 1 /etc/issue` 用于查看操作系统的版本;`cat /proc/cpuinfo` 用于获取详细的 CPU 信息;`hostname` 用于显示当前主机名;`ls` 命令则用于列出目录内容。这些命令可以帮助系统管理员快速了解系统的运行状态和配置信息,确保系统的稳定性和安全性。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文详细介绍了批处理技术的基本概念及其在实际应用中的重要性。首先,对简单的批处理内部命令进行了概述,重点讲解了Echo命令的功能,包括如何打开或关闭回显功能以及显示消息。如果没有指定任何参数,Echo命令会显示当前的回显设置。此外,文章还探讨了批处理技术在自动化任务执行、系统管理等领域的广泛应用,为读者提供了丰富的实践案例和技术指导。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 本文详细介绍了在 Android 7.1 系统中调整屏幕分辨率和默认音量设置的方法。针对系统默认音量过大的问题,提供了具体的步骤来降低系统、铃声、媒体和闹钟的默认音量,以提升用户体验。此外,还涵盖了如何通过系统设置或使用第三方工具来优化屏幕分辨率,确保设备显示效果更加清晰和流畅。 ... [详细]
  • 深入理解排序算法:集合 1(编程语言中的高效排序工具) ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 深入解析 OpenSSL 生成 SM2 证书:非对称加密技术与数字证书、数字签名的关联分析
    本文深入探讨了 OpenSSL 在生成 SM2 证书过程中的技术细节,重点分析了非对称加密技术在数字证书和数字签名中的应用。非对称加密通过使用公钥和私钥对数据进行加解密,确保了信息传输的安全性。公钥可以公开分发,用于加密数据或验证签名,而私钥则需严格保密,用于解密数据或生成签名。文章详细介绍了 OpenSSL 如何利用这些原理生成 SM2 证书,并讨论了其在实际应用中的安全性和有效性。 ... [详细]
  • Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战?
    Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战? ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些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社区 版权所有