StatQuest学习笔记06——分位数及其应用

前言——主要内容

这篇笔记的内容是StatQuest视频文件的第23,24,25。文件第23讲的是分位数(quantiles)与百分位数(percentiles);文件24讲的是QQ图;文件25讲的是分位数的均一化。

分位数

先看一个案例,我们检测了一些基因的表达情况,下图是第1个基因的表达数据:

最终,我们检测了15个基因的表达情况,它们的数据如下所示:

从图上我们可以看出,坐标中一共有15个点,如果我们从下向上数,数到第8个点时,划一条线,这个条的上方有50%的点,即7个点,下方也有50%的点,即7个点,这个点就叫做中位数(median),如下所示:

从技术角度来讲,中位数就是一个百分比数(quantile),因为它把这一组数据划分成了2个部分,每部分所占的点数占总数目都是相同的,有时候,这个点也被标为0.5,也时候也被标为50%。

中位数(median)是将n个变量值从小到大排列,位置居于中间的那个数。当n为奇数时取位次居中的变量值,当n为偶数时,取位次居中的两个变量值的均值。

百分位数(percentile)是一种位置指标,用Px来表示,读作第X百分位数。一个百分位数Px将全部产变量值分为两部分,在Px处若无相同变量值,则在不包含Px的全部变量值中有X%的变量值小于它,有(100-X)%变量值大于它。故百分位数是一个界值,其重要用途是确定医学参考值范围(reference range)。中位数实际上是第50百分位数。

——《医学统计学》(第四版).孙振球.2014

从下图中我们可以看到,这个中位数的值为4.5,也就是说第50分位数的值为4.5,如下所示:

现在我们再添加两条线,再加上前面的50%分位数的线,这三条线就把整个数据分成了4部分,其中最下面的那条线叫0.25或25%百分位数,因为大概为25%的点低于它,如下所示:

最上面的线叫75%百分位数,因为约有75%的点低于它,如下所示:

通常来说,分位数就是那些能够把数据集分为相同区间组的线,这是技术上的定义。而百分位数(percentiles)则是指那些能够把数据集分为100份相同区间的分位数(quantiles),不过在实际运用中,这个术语非常灵活。例如我们把50%百分位数称为中位数,把75%百分位数称为第75百分位数(这就与我们引用教材中的命名相同了),如下所示:

最低下的数字,也就是最小的数字,称为0%百分位数,也叫第0百分位数,如下所示:

倒数第2个数字则是第7百分位数,如下所示:

在R语言中,有专门计算分位数的函数,就是quantile(),它提供了9种不同的方法来计算分位数,其结果可能略微有所不同。这就说明,如果你的数据集很小,那么这个函数按照不同方法计算出来的分位数就有很大的同,如果数据集很大,那么计算结果就大体相同。

QQ图

QQ图的全称为Quantile-Quantile图,也就是分位数的图,它研究的是数据是否符合正态分布。还以前面的基因表达为例来说明一下,我们检测了15个基因表达值,这些数据服是否服从正态分布?这就需要QQ图来回答,如下所示:

第一步:计算出每个点的百分位数,如下所示:

第二步:绘制出正态分布曲线,如下所示:

第三步:将同样的分位数映射到这个正态分布曲线上(我的理解就是某个数字,例如0.6,它的分位数是0.07的话,那么就在正态分布曲线上找到相应的一条直线x,这条直线与正态分布曲线构成的左边面积为0.07,其余的数字都这么做),如下所示:

数据集中有15个点,它们把这批数据分成了相同区间的组(equal sized group)(注:我的理解就是,这个相同区间指的是分位数的比,而不是实际值,例如我有100个点,这个点从小到大排列,每个点都会有自己相应的分位数,如果把按它们各自的分位数进行划分,那么可以把100%划分为100份1%),那么这些数据对应的分位数都投射到正态分布区间上,就是下面的这个图,从图上可以知道,中间部分的直线间隔小,两边的直线间隔长,这个很好理解,因为划分是按面积进行划分的,面积代表了概率,如下所示:

对于正态分布曲线来说,“相同区间的组”(equal sized groups)意味着一个数据在每组中的概率是相同的(一组就是由x轴,正态分布曲线,两侧的红线构成的狭长区域):

现在就可以绘制QQ图了,如下所示:

QQ图含有2个坐标,横坐标是正态分布的x轴,纵坐标是原始数据的分位数,现在我们绘制原始数据中最小的那个点,它的数值是0.6,这个数值对应的就是纵坐标,它的这个值所对应的分位数在正态分布曲线上的点是x轴上-1.5的点,此时将它们绘制到QQ图上,如下所示:

接着,把所有的点都绘制到QQ图上,如下所示:

此时,我们看一下这些点是否与下面红色的直线重合(这个红色的直线其实就是y=x,如果数据符合正态分布,那么它就重合),如下所示:

这些点貌似与红色的线重合得并不多,我们再看一下这些数据与另外的一种分布(这种分布就是均匀分布,即uniform distribution)的比较,第1步,求出各个数据点对应的分位数,如下所示:

第二步:绘制出相应均值分布的曲线,如下所示:

第三步:将原始数据对应的分位数投射到这个曲线上:

第四步:绘制QQ图,如下所示:

我们此时发现,这组数据与均值分布对应的红色直线比较匹配,它就更加杂得均值分布,下图是数据与正态分布的QQ图的比较:

比较两组数据

现在我们再来看一个案例,在这个案例中,我们比较这两组数据,其中第二组数据比较少,如下所示:

第二组数据只有4个数字,其实就是4个四分位数(我觉得视频中有问题,四分位数分别为25%,50%,75%的百分位数,只有3个,视频中却说有4个),因此我们也可以找出第一组数据中相应的四分位数,如下所示:

在第一组中,与第二组第一个数字(也就是3.8)百分位数相同的是2.5,那么就在QQ图 纵坐标的位置画一条直线(这个直线是y=2.5,即下图的黑色虚线),此时在横坐标上画出x=3.8的直线(下图红色虚线,代表第二组中的3.8),两个直线交叉就是第1个点在QQ图上的位置,如下所示:

然后依次画出第二组中4个点与第一组中相应点构成的点,连成直线,如下所示:

由于上图中QQ图的点很少,很难判断这两组数据是否是相同的分布,因此为了判断两组数据是否服从同样的分布,需要收集更多的点。

分位数的标准化

先看一个案例,例如我们手中有一批芯片(基因表达芯片,非集成电路)的数据,芯片有以下这些特点:

  1. 检测样本中基因活跃的程度(其实就是基因表达量的高低);
  2. 芯片检测基因的活跃程度是通过不同颜色的光来达到的;
  3. 如果你检测芯片的仪器的光源更亮,那么这批数据就比其他的仪器检测到的信号更强。

由于芯片的这些特点,我们就需要对芯片的数据进行标准化,从而研究不同样本之间的差异是由技术重复引起的,还是实验因素引起的,芯片数据标准化的过程跟生物的关系不大,如下所示:

我们来看一下原始数据,下图中的不同颜色表示不同的基因,这个数据中的每个点已经转换为了光强的密度值(intensity values),如下所示:

下面是每个样本的均值,

每个样本的均值都不同,这表明,我们需要校正所有光的强度,分位数标准化(quantile normalization)就是为了解决这个问题的,如下所示:

第一步,我们先看每个样本中亮度最强的那个点,如下所示:

第二步:计算这3个点的均值,如下所示:

第三步:把这些均值投射到一个新的坐标轴上,如下所示:

那么,样本1中强度最大的那个点(就是蓝色的点)的分位数标准化的值的就是上面我们计算出来的均值,如下所示:

样本2和样本3中那两个点也是如此,如下所示:

第四步:现在把亮度强度次亮的点再投射到这个新的坐标轴上,方法与前面的一样,也是先救出均值,然后再投射,如下所示:

所有的点都按照这样处理,如下所示:

经过这样的分位数标准化后,每个样本的数据基本上都一样了,如下所示:

并且,每个样本中不同基因的原始次序也得到了保留,sample 1中的红色基因原来是最后一个,经处理后中,还是最后一个,如下所示:

以上的整个过程就是分位数标准化的整个过程,因为标准化后的数据与原始数据都有相同的分位数。