基本概念
相关关系:当一个或几个相互联系的变量取一定的数值时,与之相对应的另一变量的值虽然不确定,但它仍按某种规律一定的范围内变化。变量间的这种相互关系,称为具有不确定性的相关关系。
⑴完全相关:两个变量之间的关系,一个变量的数量变化由另一个变量的数量变化所惟一确定,即函数关系。
⑵不完全相关:两个变量之间的关系介于不相关和完全相关之间。
⑶不相关:如果两个变量彼此的数量变化互相独立,没有关系。
⑴正相关:两个变量的变化趋势相同,从散点图可以看出各点散布的位置是从左下角到右上角的区域,即一个变量的值由小变大时,另一个变量的值也由小变大。
⑵负相关:两个变量的变化趋势相反,从散点图可以看出各点散布的位置是从左上角到右下角的区域,即一个变量的值由小变大时,另一个变量的值由大变小。
相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量,一般用字母 r 表示。由于研究对象的不同,相关系数有多种定义方式,较为常用的是皮尔逊相关系数。
相关表和相关图可反映两个变量之间的相互关系及其相关方向,但无法确切地表明两个变量之间相关的程度。相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数是按积差方法计算,同样以两变量与各自平均值的离差为基础,通过两个离差相乘来反映两变量之间相关程度;着重研究线性的单相关系数。
绘图实例解读
了解了原理,下面我们来看看相关性散点图。先来看看我们所用的测试数据:
这个数据非常简单,为了能够给大家演示批量的相关性分析,我们在这里制作了这样一个测试数据,首先因变量有6个,自变量1个,我们要做的就是分别计算这6个因变量和自变量的相关性。好了,看了数据,我们再来看看图,大家在文章中见到的比较高级的散点图一般长这样:
图上有什么呢?散点,趋势线,95%置信区间,相关系数,p值。好,接下来让我们自己来画一画!在这里我们用的是ggpubr包,这个是一个极力推荐的绘图包,希望大家能够收藏。
#首先加载包,准备好数据
library(ggpubr)
#读入数据
data<-read.csv("data.csv",header=T,row.names=1)
#画图,一句话就搞定
ggscatter(data,x="x",y="t3",
size=3,
rug=T,
add="reg.line",
conf.int=T,
conf.int.level=0.95,
cor.coef=T,
cor.method="pearson",
ggtheme=theme_pubr()
)
#再看看其他变量
ggscatter(data,x="x",y="t1",
size=3,
rug=T,
add="reg.line",
conf.int=T,
conf.int.level=0.95,
cor.coef=T,
cor.method="pearson",
ggtheme=theme_pubr()
)
发现上面的代码是如何工作的了吗?只要改下参数y的变量名就可以了(这里我们可以分别定义y为t1,t2,t3等),是不是很简单呢!但是这时候你可能要问了,要是我想进行批量的相关分析,而且把这么多个散点图拼在一起,比如文件中的六个变量。按照上面的方法,岂不是要做6张图,还得导出矢量图,然后用AI拼接在一起吗?这显然工作量就大了,而且,这似乎和用Graphpad也没啥区别嘛。怎么办呢?我们当然不能把大量的时间浪费在拼图(美图秀秀)上,那么这个问题让我来帮你解决吧!
library(cowplot)
colnames(data)
names = c("t1", "t2", "t3", "t4", "t5", "t6")
#创建plot列表
plist<-list()
#循环
for(i in names){
p<-ggscatter(data,x="x",y=i,
size=1,
rug=T,
add="reg.line",
conf.int=T,
conf.int.level=0.95,
cor.coef=T,
cor.method="pearson",
ggtheme=theme_pubr()
)
plist[[i]]<-p
}
plot_grid(plotlist=plist,labels = LETTERS[1:length(names)])
在这里,我们用到了一个比较神奇的R包,叫做cowplot,它会帮我们自动拼图,自动排版,非常方便,直接提交一个图形的列表就可以了,是不是一下子就搞定了呢!
此外,在实际科研中大家可能还会有这样一个需求,比如我想要看下某一个基因在不同亚组(比如上面的t1,t2, t3)中表达是不是都是正相关的,那我该怎么画图呢?一种做法就是把数据分开,分别画几个图(t1, t2, t3), 就像上面的图形一样。不过,如果要比较不同的分组,绘制在不同的图形中,可能比较起来会不太方便。当然啦,大家也可以其他的方法啦,比如我可能会选择用这种表达方式:
是不是一目了然呢!赶快联系客服小姐姐获取代码吧!