前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言计算两组数据变量之间的相关系数和P值的简单小例子~应用于lncRNA的trans-act

R语言计算两组数据变量之间的相关系数和P值的简单小例子~应用于lncRNA的trans-act

作者头像
用户7010445
发布2021-07-30 11:00:42
5.8K0
发布2021-07-30 11:00:42
举报

最近在看植物长链非编码RNA的内容,数据分析里有个一内容是预测lncRNA的反式作用元件,通常的做法是利用表达量数据计算皮尔逊相关系数,然后设置一定的阈值进行筛选

比如 Horticulture Research 中的论文 Comparative analysis of long noncoding RNAs in angiosperms and characterization of long noncoding RNAs in response to heat stress in Chinese cabbage 方法部分写道

The PCC was used to analyze the correlations between lncRNAs and mRNAs in samples at five different treatment stages. The lncRNA-mRNA pairs were considered to be coexpressed when the |PCC | was >0.95 and the p value was <0.01, and the mRNA was predicted to act in trans on the corresponding lncRNA genes.

这里相当于是计算两个数据集中的变量之间的相关性,之前发现correlation这个R包里的函数correlation()可以做

但是这里遇到了一个问题

关掉这个报错界面以后就会提示

暂时还不知道如何解决,自己搜索了一下暂时还没有找到解决办法

只能把输入法切换成中文,然后一次性把函数名输入完

我先模拟两个数据集
代码语言:javascript
复制
df1<-data.frame(Var1=rnorm(10),
                Var2=rnorm(10))

df2<-data.frame(Var4=rnorm(10),
                Var5=rnorm(10),
                Var6=rnorm(10))

计算相关系数和P值

代码语言:javascript
复制
library(correlation)
correlation(data=df1,data2 = df2)

结果如下

但是mRNA的表达量有上万个,用这个函数计算的时候是非常慢的

找到了另外一个函数是Hmisc这个包中的rcorr()函数

这个速度快很多,但是他不能计算两个数据集之间变量的相关性,

这样的话可以先计算,然后再筛选

这个函数要求的输入数据是矩阵格式

代码语言:javascript
复制
Hmisc::rcorr(as.matrix(df1),as.matrix(df2))

自定义函数将这个结果转换成一个四列的数据框格式

代码语言:javascript
复制
flattenCorrMatrix <- function(cormat, pmat) {
  ut <- upper.tri(cormat)
  data.frame(
    row = rownames(cormat)[row(cormat)[ut]],
    column = rownames(cormat)[col(cormat)[ut]],
    cor  =(cormat)[ut],
    p = pmat[ut]
    )
}
代码语言:javascript
复制
source("flattenCorrMatrix.R")
flattenCorrMatrix(res.cor$r,res.cor$P)

最后用变量名去匹配

代码语言:javascript
复制
lncRNA<-data.frame(gene_id=colnames(df1))
mRNA<-data.frame(gene_id=colnames(df2))
lncRNA
mRNA
library(dplyr)
res.cor.1 %>% 
  merge(lncRNA,by.x="row",by.y = "gene_id") %>% 
  merge(mRNA,by.x = "column",by.y = "gene_id")
今天看B站视频

两个矩阵之间的相关性热图这么容易画的吗?零基础学习R语言之相关性分析 https://www.bilibili.com/video/BV1vb4y1k7kv

psych这个包里的corr.test()函数也是可以直接计算两个数据集变量之间的相关性的,这个结果里也有显著性检验的p值

但是这个如果数量量比较大的话速度也很慢

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我先模拟两个数据集
  • 今天看B站视频
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档