【R语言编程】---根据表达量计算mRNA与lncRNA的皮尔森相关系数

Python020

【R语言编程】---根据表达量计算mRNA与lncRNA的皮尔森相关系数,第1张

前言: 在构建ceRNA 网络时,需要计算lncRNA 与 蛋白编码gene (pc gene) 间的表达相关性,一般采用皮尔逊相关系数。具体如何做呢?

2.获得mRNA的表达矩阵

4个基因在100个样本的表达量矩阵:

3.计算lncRNA 与gene 的表达相关性

使用cor()函数进行皮尔森相关系数计算,就是这么简单:

皮尔逊相关系数理解有两个角度

其一, 按照高中数学水平来理解, 它很简单, 可以看做将两组数据首先做Z分数处理之后, 然后两组数据的乘积和除以样本数

Z分数一般代表正态分布中, 数据偏离中心点的距离.等于变量减掉平均数再除以标准差.(就是高考的标准分类似的处理)

标准差则等于变量减掉平均数的平方和,再除以样本数,最后再开方.

所以, 根据这个最朴素的理解,我们可以将公式依次精简为:

其二, 按照大学的线性数学水平来理解, 它比较复杂一点,可以看做是两组数据的向量夹角的余弦.

皮尔逊相关的约束条件

从以上解释, 也可以理解皮尔逊相关的约束条件:

1 两个变量间有线性关系

2 变量是连续变量

3 变量均符合正态分布,且二元分布也符合正态分布

4 两变量独立

在实践统计中,一般只输出两个系数,一个是相关系数,也就是计算出来的相关系数大小,在-1到1之间另一个是独立样本检验系数,用来检验样本一致性.

先举个手算的例子

使用维基中的例子:

例如,假设五个国家的国民生产总值分别是1、2、3、5、8(单位10亿美元),又假设这五个国家的贫困比例分别是11%、12%、13%、15%、18%。

创建2个向量.(R语言)

x<-c(1,2,3,5,8)

y<-c(0.11,0.12,0.13,0.15,0.18)

按照维基的例子,应计算出相关系数为1出来.我们看看如何一步一步计算出来的.

x的平均数是:3.8

y的平均数是0.138

所以,

sum((x-mean(x))*(y-mean(y)))=0.308

用大白话来写就是:

(1-3.8)*(0.11-0.138)=0.0784

(2-3.8)*(0.12-0.138)=0.0324

(3-3.8)*(0.13-0.138)=0.0064

(5-3.8)*(0.15-0.138)=0.0144

(8-3.8)*(0.18-0.138)=0.1764

0.0784+0.0324+0.0064+0.0144+0.1764=0.308

同理, 分号下面的,分别是:

sum((x-mean(x))^2)=30.8

sum((y-mean(y))^2)= 0.00308

用大白话来写,分别是:

(1-3.8)^2=7.84 #平方

(2-3.8)^2=3.24 #平方

(3-3.8)^2=0.64 #平方

(5-3.8)^2=1.44 #平方

(8-3.8)^2=17.64 #平方

7.84+3.24+0.64+1.44+17.64=30.8

同理,求得:

sum((y-mean(y))^2)= 0.00308

然后再开平方根,分别是:

30.8^0.5=5.549775

0.00308^0.5=0.05549775

用分子除以分母,就计算出最终结果:

0.308/(5.549775*0.05549775)=1