相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。相关性不等于因果性,也不是简单的个性化,相关性所涵盖的范围和领域几乎覆盖了我们所见到的方方面面,相关性在不同的学科里面的定义也有很大的差异。
相关性分析主要包括pearson和spearman相关分析。
比如比较两个基因之间的相关性,从而确定他们之间是否具有共表达关系。
之前分享的关于GEPIA网站的两个基因相似性分析就是相关性分析:
那么下面我们看看代码如何实现。
首先,我们准备一个数据:
来自TCGA数据库的某两个基因A和B,下面运行代码:
setwd("D:\\")
dir()
data <- read.csv("PCC.csv",header = T,sep = ",")
head(data)
下面用几种方法来计算相关性:
a <- cor(data$GeneA,data$GeneB)
a
> a
[1] 0.376044
单纯用cor函数计算出来只有相关性,没有P值。
下面使用cor.test函数:
a <- cor.test(data$GeneA,data$GeneB,method = "pearson")
a
> a
Pearson's product-moment correlation
data: data$GeneA and data$GeneB
t = 8.1672, df = 405, p-value = 4.057e-15
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.2894192 0.4565593
sample estimates:
cor
0.376044
可以看到P值4.057e-15,是有意义的,相关性0.37。这里用的是pearson相关系数法。
这只能说算是一个中度相关。
一般做生信,相关性的阈值是自己定义的,可以是0.6,可以是0.3,但是一篇文章就必须统一,要么0.6,要么0.3,当然也可以0.5, 0.4。
下面是spearman法:
a <- cor.test(data$GeneA,data$GeneB,method = "spearman")
a
> a
Spearman's rank correlation rho
data: data$GeneA and data$GeneB
S = 3361806, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.7008126
可以看到两种方法相关性差别还是很大的,关于具体怎么选择这两种方法,我们下次再讲。
下面我们可以用一个散点图来展示一下相关性:
plot(data$GeneA,data$GeneB)
但是这个图比较丑,放在文章里面不好看,下一期我们介绍一下做一张好看的散点图。