生物学实验中,常常需要设置重复,例如技术重复、生物学重复,以此确保不是个体的偶然变异对结果产生影响。以转录组数据为例,一般会设置3-5个生物学重复,如何确认生物学重复的效果好坏呢,方法有很多,可以计算两两样本之间的相关性,可以进行样本的PCA分析,或者绘制聚类热图,这里首先介绍样本相关性方法。
我们将在R,使用Rstudio进行计算绘图。
转录组数据分析完成以后,我们会拿到基因表达矩阵,格式如下,行为基因,列为样本(也可以是行为样本,列为基因,在R中转置函数t()
可以秒秒种搞定)。
何谓相关?简单来说若你高我也高,你低我也低,或者你高我低都可以叫做相关。数理统计上通过计算相关系数来衡量,取值[-1, 1],负数表示负相关,正数表示正相关。在显著性的前提下,绝对值越大,相关性越强。绝对值为0, 无线性关系;绝对值为1表示完全线性相关。有Pearson, Spearman和 Kendall 三类相关系数,它们的特点是:
相关系数 | 适用变量类型 | 假设条件 |
---|---|---|
Pearson | 连续变量 | 1.服从正态分布,2.两个变量的标准差不为0 |
Spearman | 连续变量/等级数据 | 成对等级相关数据即可 |
Kendall | 有序分类变量 | 成对等级相关数据即可 |
可以看到除了Pearson相关系数对数据有严格要求外,其他两种的适用范围都比较广,当你不确定数据分布时,一般适用Spearman即可。
这里要计算样本之间的相关性,落实到代码中,其实就是分别计算数据列与列之间的相关系数。
## 设置工作路径
setwd('/Users/yut/Desktop/data')
fpkm <- read.table('control_case_fpkm.txt', header = T, row.names = 1) #header=T,第一行指定为列名,row.names=1指定第一列为行名
View(fpkm) #查看数据
## 计算样本之间的相关性
corr <- cor(fpkm, method = 'spearman') #cor函数计算两两样本(列与列)之间的相关系数
View(corr) #查看样本之间的相关系数
cor
函数返回样本之间的相关系数矩阵,对角线为样本自身与自身的相关系数1,左下和右上半角是一样的
为了更直观的展示,使用corrplot
将相关系数矩阵映射成热图
## 如果不存在corrplot就安装这个包
if (!requireNamespace('corrplot', quietly = TRUE))
install.packages('corrplot')
library('corrplot') #加载corrplot包用于绘制相关性矩阵热图
# corrplot并不能直接计算两两样本之间的相关系数,而需要通过R内置函数cor计算,corrplot真正做的是把cor计算得到的样本相关系数矩阵映射成不同的颜色和样式
# 映射成热图
corrplot(corr, type = 'upper', tl.col = 'black', order = 'hclust', tl.srt = 45, addCoef.col = 'white')
# type='upper':只显示右上角相关系数矩阵
# tl.col='black':字体颜色黑色
# order='hclust':使用层次聚类算法
# tl.srt = 45:x轴标签倾斜45度
# addCoef.col='white':添加相关系数数值,颜色白色
0.8-1.0 极强相关
0.6-0.8 强相关
0.4-0.6 中等程度相关
0.2-0.4 弱相关
0.0-0.2 极弱相关或无相关
从上面的结果看,case组内和control组内的相关系数都较高,而组间的相关系数都较低,说明生物学重复效果好,可以继续后续分析。若组内某个样本与同组内其他样本的相关系数都较低,则可以考虑去除,或者加测样本进行重分析
# <样本相关性>
## 1.如果不存在corrplot就安装这个包
if (!requireNamespace('corrplot', quietly = TRUE))
install.packages('corrplot')
library('corrplot') #加载corrplot包用于绘制相关性矩阵热图
# corrplot并不能直接计算两两样本之间的相关系数,而需要通过R内置函数cor计算,corrplot真正做的是把cor计算得到的样本相关系数矩阵映射成不同的颜色和样式
## 2.读入基因fpkm的表达矩阵
##设置工作路径
setwd('/Users/yut/Desktop/data')
fpkm <- read.table('control_case_fpkm.txt', header = T, row.names = 1) #header=T,第一行指定为列名,row.names=1指定第一列为行名
View(fpkm) #查看数据
##3.计算样本之间的相关性
corr <- cor(fpkm, method = 'spearman') #cor函数计算两两样本(列与列)之间的相关系数
View(corr) #查看样本之间的相关系数
# pdf('../sample_correlation.pdf', width = 8, height = 8) #打开绘图设备,保存为pdf文件
corrplot(corr, type = 'upper', tl.col = 'black', order = 'hclust', tl.srt = 45, addCoef.col = 'white')
# type='upper':只显示右上角相关系数矩阵
# tl.col='black':字体颜色黑色
# order='hclust':使用层次聚类算法
# tl.srt = 45:x轴标签倾斜45度
# addCoef.col='white':添加相关系数数值,颜色白色
# dev.off() #配合pdf()使用,关闭绘图设备