1.前言
目的:
调整由于技术,如处理、上样、预分、仪器等造成的样本间误差。这实际上是一种数据缩放的方法。一般在一个表达矩阵中,会涉及到多个样本,其表达量差异比较大,不能直接进行比较。比如某个样本表达量很大,在总体中就会占据绝对领导地位,这样就会掩盖掉表达量小的样本的作用,但并不代表它不重要,也有可能是这个样本含有较多的低表达基因,所以需要指定一个统一的标准,提前对样本原始表达量进行一定的处理。起源:
处理方法借鉴基因表达数据,如RNAseq和芯片数据。在RNAseq数据中,通常需要消除基因长度、测序量等因素产生的误差。转录组和芯片数据处理相对比较成熟,有现成的方法和工具可用,如RPM/CPM、TPM、RPKM等等。当然蛋白质组数据的标准化也有其独特的地方,如它主要通过是峰面积来定量的,需要对不同run之间的峰面积进行标准化,这在大部分搜库软件中都有处理。归一化与标准化的区别:
归一化是特殊的标准化,在生信领域不严格区分。归一化Normalization一般是把数据缩放到一定范围,如[0,1], 受离群点影响大;标准化Standardization一般把数据缩放成均值为0,方差为1的状态,即重新创建一个新的数据分布,受离群点影响小,但变换后的数据边界不确定。特点:
消除了量纲(单位)的影响,真正突出数据的差别,有点绝对值变为相对值的感觉。
对指标进行了统一,解决数据性质不同的问题。
标准化后的数据收敛速度更快,计算时间会短很多。
数据缩放scaling(标准化、归一化)的那些事
表达矩阵的归一化和标准化,去除极端值,异常值
基因芯片数据分析(一)--芯片数据预处理
2.主要方法及代码实现
蛋白质组中标准化的工具较少,一般是自己编写代码。一般用apply结合sweep函数来实现。
一个表达矩阵,通常行为蛋白,列为不同样本,我们可以标准化行,也可标准化列,具体问题具体分析,关键在于要解释什么问题。比如我们要尽可能减弱系统偏差对样本蛋白定量值的影响,使各个样本和平行实验的数据处于相同的水平,让下游分析更为准确可靠,我们需要对列进行归一化。类似于我们做WB或QPCR实验时,会选择内参校正多个样本的定量值。添加内参或QC的方法在代谢组学的标准化中常用。
前四种方法通过将每个蛋白原始定量值除以对应样本的某指定值(如平均值、中位数、最大值和总和等)实现校正,每个样本的指定值在校正后变为1;后三种方法通过一定标准对原始数据进行缩放实现校正。
- 中位数/均值/总和标准化
sweep(data,2,apply(data,2,median,na.rm=T),FUN="/") #中位数不受数列的极大值或极小值影响。
sweep(data,2,apply(data,2,mean,na.rm=T),FUN=“/”)
sweep(data,2,apply(data,2,sum,na.rm=T),FUN="/")
- 中心化变换
将每一个数据减去对应列的均值,数据变换后,均值为0,方差不变。中心化以后,由于数据的均值变成0,可以消除量纲、数据自身差异所带来的影响(此处是做减法而不是除法,所以变量的单位还是保留的),而且对线性回归以及模型预测方面也有好处。
sweep(data,2,apply(data,2,mean,na,rm=T),FUN="-")
或者直接用scale函数:
scale(data,center=T,scale=F) #center中心化,scale标准化
- 极差标准化
将每一个数据减去对应列的均值,然后除以对应列最大值与最小值之间的差值。
datacenter <- sweep(data_read,2,apply(data_read,2,mean,na.rm=T),FUN="-")
daraR <- apply(data_read,2,max,na.rm=T) - apply(data_read,2,min,na.rm=T)
sweep(datacenter,2,dataR,FUN="/")
- 正态标准化
将每一个数据减去对应列的均值,然后除以对应列的标准差,称之z-score(标准差标准化),其实就是scale函数中的scale参数。
scale(data,center=T,scale=T)
中位数、均值、中心化之类的标准化方法是将数据按照一定的比例进行缩小,但是缩小的范围是不确定的;而总和标准化、极差标准化、正态标准化之类的标准化方法可以将原始数据缩小到一个很有限的范围(比如缩小到[0,1]范围以内),比如有些机器学习方法,是要求对数据做正态标准化的,这种标准化的数据可以保证后续的运算速度更快。
如果要对行进行标准化,要求数据尽量在同一个尺度(scale)下进行比较,比如做层次聚类热图,建议将行的数据也进行标准化,这样每一行的数据就会控制在同一个尺度之下,颜色的深浅能更好地表现出数据的变化趋势。
http://www.360doc.com/content/19/0628/17/52645714_845432507.shtml
3.标准化方法评估
有一些类似的文章发表,简单看了下。
以下一篇是综述,描述了整个蛋白鉴定过程中(包括实验部分)有可能遇到的标准化处理的过程。
What is Normalization? The Strategies Employed inTop-Down and Bottom-Up Proteome Analysis Workflows
下面一篇文章综合比较了11种不同归一化的性能:
variance stabilization normalization(VSN)方法能降低的技术重复间差异最大。Linear regression normalization and local regression normalization的总体效果也不错。
A systematic evaluation of normalization methods in quantitative label-free proteomics
4.MaxQuant中的Intensity,LFQ和iBAQ
大佬的软件,三种定量算法都发了文章。
- Intensity是将某Protein Groups里面的所有Unique和Razor peptides的信号强度加起来,作为一个原始强度值。用得很少。
- iBAQ是在Intenstiy的基础上,将原始强度值除以本蛋白的理论肽段数目。一般用于样本内不同蛋白的比较,因为它表征的是蛋白的摩尔比值(copy number)。也可用于不同样本比较,即通过归一化手工校准样本间误差:蛋白IBAQ值除以此样品所有蛋白的强度的和,计算比例(这也是组学中“等质量上样”和“等体积上样”的核心区别,等质量上样来看的是比例,但是计算比例是有压缩效应的)。用得较少。
- LFQ则是将原始强度值在样本之间进行校正,以消除处理、上样、预分、仪器等造成的样本间误差。一般用于同一蛋白不同样本间的比较。不过我们拿到数据后,我们还是会过滤、填充、转换、标准化一条龙走一遍。用得最多。