R语言计算两组数据变量之间相关系数和P值的简单小例子

最近在看植物长链非编码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()可以做

但是这里遇到了一个问题

image.png

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


image.png

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

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

我先模拟两个数据集
df1<-data.frame(Var1=rnorm(10),
                Var2=rnorm(10))

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

计算相关系数和P值

library(correlation)
correlation(data=df1,data2 = df2)

结果如下

image.png

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

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

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

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

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

Hmisc::rcorr(as.matrix(df1),as.matrix(df2))
image.png

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

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]
    )
}
source("flattenCorrMatrix.R")
flattenCorrMatrix(res.cor$r,res.cor$P)
image.png

最后用变量名去匹配

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")
image.png
今天看B站视频

两个矩阵之间的相关性热图这么容易画的吗?零基础学习R语言之相关性分析2_哔哩哔哩_bilibili

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

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

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

你可能感兴趣的:(R语言计算两组数据变量之间相关系数和P值的简单小例子)