R语言相关性分析

Python029

R语言相关性分析,第1张

1.  R语言自带函数cor(data, method=" ")可以快速计算出相关系数 ,数据类型:data.frame

 如data.frame为:zz, 绘图如下:

a. single protein:线性回归画法

1. ggplot(zz,aes(x=a, y=HDL))+

   geom_point(alpha=1,colour="#FFA54F")+

   geom_smooth(method = lm,colour="#8B658B")+

   #scale_color_brewer(palette = "Set1")+

   theme_bw()+

   labs(x="Ferritin",y="HDL.C",title="Pearson’s correlation test of ferritin and HDL.C")+

   annotate("text", x = 1000, y = 2.5, label = "r = -0.51",colour="black",size=4)

2. library(ggstatsplot)

 ggscatterstats(data = alldata,

               y = TRANSFUSION.UNIT,

                x = NPTXR,

                centrality.para = "mean",  #"mean" or "median"                         

               margins = "both",                                       

                xfill = "#D8BFD8",

                yfill = "#EEDD82",

                #line.size= ,

                line.color="#8B6969",

               point.color="#2F4F4F",

                marginal.size=4,

               marginal.type = "density", # "histogram", "boxplot", "density", "violin", "densigram")

                title = "Relationship between TRANSFUSION.UNIT and NPTXR")

b. ggcorrplot, 全部蛋白 global correlation map 画法

ggcorrplot(cor(alldata))

2.  summary(lm(y~x),method=" ") %>%.[["coefficients"]]   正规线性回归

     (其实就是:a<-lm(y~x1+x2+...,data)

      plot(summary(lm(y~x),method=" ")) #绘图

3.  ggcor部分数据绘图:  数据类型为data.frame,纵坐标为各指标or各蛋白,行为观测值。

data <- fortify_cor(alldata[,10:11],alldata,cluster.type = "col")

ggcor<-ggcor(data,label_size=0.5) +

  geom_colour()+

  theme(axis.text.x = element_text(colour = "black",size = 4.7),

                                                        axis.text.y=element_text(size=5.5),

                                                        axis.ticks=element_blank())+

  geom_num(aes(num=r),colour="black",size=1.5)

4. corrr包画法

datasets::mtcars %>%

  correlate() %>%

  focus(-cyl, -vs, mirror = TRUE) %>%

  rearrange() %>%

  network_plot(min_cor = .2)

相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性分析旨在研究两个或两个以上随机变量之间相互依存关系的方向和密切程度。

一般来讲研究对象(样品或处理组)之间使用距离分析,而元素(物种或环境因子)之间进行相关性分析 。两个变量之间的相关性可以用简单相关系数(例如皮尔森相关系数等)进行表示,相关系数越接近1,两个元素相关性越大,相关系数越接近0,两个元素越独立。

Pearson相关系数是用于表示相关性大小的最常用指标,数值介于-1~1之间,越接近0相关性越低,越接近-1或1相关性越高。正负号表明相关方向,正号为正相关、负号为负相关。适用于两个正态分布的连续变量。

利用两变量的秩次大小来进行分析,属于非参数统计方法。适用于不满足Pearson相关系数正态分布要求的连续变量。也可以用于有序分类变量的之间的相关性测量。

Kendall's Tau相关系数是一种非参数检验,适用于两个有序分类变量。

此外衡量两个变量之间关系的方法还有:卡方检验、Fisher精确检验等。

Pearson、Spearman、Kendall相关系数都可以通过cor函数实现,cov协方差函数参数同cor函数。

ggcorrplot包内只有2个函数,一个cor_pmat()用于计算p值,一个ggcorrplot()用于绘图。ggcorrplot相当于精简版的corrplot包,只有主题更加丰富多样。

This function computes and returns the distance matrix computed by using the specified distance measure to compute the distances between the rows of a data matrix.

这个函数用特定的方法计算矩阵的行之间的距离,并返回距离矩阵。

scale是对矩阵的每一列进行标准化,如果要对行标准化需要先转置。如 heatmapdata <- t(scale(t(heatmapdata)))

生物统计学中运用比较普遍的一个概念就是相关系数,可以通过相关系数这一基本概念,衍生到构建基因共表达网络。大部分基因网络分析的方法,都是基因表达量相关系数的计算的推广和衍生,即使复杂算法,也是以相关系数的计算作为基础。所以理解相关系数,对后续的分析都有很大的影响。

皮尔森相关系数是最常见的相关性计算。

皮尔森相关百度百科解释:皮尔森相关系数(Pearson correlation coefficient)也称皮尔森积差相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数。皮尔森相关系数是用来反映两个变量线性相关程度的统计量。相关系数用r表示,其中n为样本量,分别为两个变量的观测值和均值。r描述的是两个变量间线性相关强弱的程度。r的绝对值越大表明相关性越强。

从皮尔森相关系数的定义看,如果两个基因的表达量呈现为线性关系那么两个基因表达量就有显著的皮尔森相关性。

我们用R模拟几组数据

a, b, c三组数据,a和b为线性关系,相关性分析采用Pearson相关性分析为1,a和c的关系为指数型关系,使用Pearson相关性分析,发现其相关性为0.769,而使用spearman相关性分析,发现其相关性为1。

从上面的分析可以看出,两个基因的表达呈现为线性关系,那么则具有显著的皮尔森相关性,可以是正相关关系,也可以是负相关关系。

斯皮尔曼等级相关(Spearman’s correlation coefficient for ranked data)主要用于解决名称数据和顺序数据相关的问题。适用于两列变量,而且具有等级线性关系的资料。由英国心理学家、统计学家斯皮尔曼根据积差相关的概念推到而来,一些人把斯皮尔曼等级相关看做积差相关的特殊形式。

其中 是指等级个数, 是指两列变量等级的差数。

怎么理解上面说到的等级个数和等级差,这个就有点类似于非参数检验的方法,无论两个变量的数据如何变化,符合怎样的分布,我们只关注每个数值在变量内的排列顺序,如果两个变量的的对应值在各组内的排序是类似的,那么则具有显著的相关性。

此处引用其他帖子的一张图,有助于理解

我们把表中的数据输入R,利用cor.test 进行实践检验。

我们可以看到使用两种不同的检验方式,Pearson检验得到的相关系数是r = 0.7658951 ,使用Spearman 检验方式得到的相关系数是ρ = 1。所以采用不同的方式进行检验,要根据具体的问题进行取舍,并且通过检验之后,要得到一个合理的解释才是关键。 检验是方法,结论解释才是重心。

最后,还是回到刚开始的例子,a,b,c,d四组数据,分别有线性,幂指数的关系,使用不同的相关性方法得到的相关性系数有所不同。关键在于怎样选择,并做出合理的解释,由此进一步阐述规律。

R语言中,还有进行多组相关性检验,并可视化结果,下一篇中使用R语言对两组数据,数据集进行操作并可视化。

参考文章

皮尔森相关和斯皮尔曼等级相关

R语言-相关系数计算

R语言 相关性分析

R 相关性分析

R语言相关分析