说到富集分析,做生信的童鞋立刻就会想到GO/KEGG Enrichment、GSEA这两大类方法。但这只是富集分析的两种常见形式,富集分析的概念要更广。GO/KEGG Enrichment 这一类富集分析是最简单的富集方法,只关心基因集的富集比例;GSEA类方法更进一层,还关心基因集在打分排序中的分布情况。我们经常使用富集分析的p值以及FDR值,判断是否富集显著。然而对应的统计量如何计算?富集分析能否在其他情形使用,如何使用?最简单的情形是,如何检验一个biomarker在某个模型中是显著富集的。本文将对此进行解析。
所谓富集分析,本质上就是对分布的检验,如果分布集中在某一个区域,则认为富集。比如正态分布就是一种富集在均值附近的分布。常用的分布检验方法有卡方检验、Fisher精确检验以及KS检验等方法。常规的GO/KEGG Enrichment 用的是离散分布的检验(Fisher精确检验,依据超几何分布的原理),网上有一些资料对此解释(浅探富集分析中的超几何分布),此处不累述。本文重点关注连续分布的富集(GSEA)。
1- 统计学原理
1.1 Kolmogorov distribution
独立增量过程,指其增量是相互独立的。以下截图摘自百度百科:
从独立增量过程到Kolmogorov分布,再过渡到KS检验,需进一步补充(有空补充)。
1.2 Kolmogorov–Smirnov test
Kolmogorov–Smirnov检验(KS检验)的基本介绍,我再偷个懒,引用一个比较喜欢的讲解(Kolmogorov–Smirnov test)
KS检验临界值表:www.cust.edu.tw/mathmet/KS-critical.docx
KS检验的不错的介绍:KS-检验(Kolmogorov-Smirnov test) -- 检验数据是否符合某种分布
KS检验的应用:检验数据是否符合某种分布,如正态分布。
KS检验的优点:作为分布检验的方法(或者说拟合优度检验),该检验不依赖于要测试的累积分布函数,相比于卡方拟合检验(卡方检验需要50个以上的样本),不需要大量的样本。
KS检验的缺点:只适用于连续分布(只能用于连续或定量数据);在分布中间敏感,在两端不够敏感;最大的局限在于整个分布需要完全确定,如果位置,形状等参数都是从数据中估计的,判定区间不再有效,因此这些参数一般只能通过模拟得到。
分布检验的比较:R语言 Shapiro-Wilk检验
不错的资料:
Kolmogorov-Smirnov Goodness-of-Fit Test
当数据服从正态分布时,KS检验比 t 检验效能低,但有的时候这种更严格也有好处。KS检验与 t 检验的对比:
因为样本的平均值和标准差非常相似,所以学生T检验最后给出了非常高的P值。KS测试却可以检测出方差。在这个案例中,KS测试发现了红色的分布中一点点的二项分布。
2- 富集分析的应用
GSEA采用了KS检验的思想,但是采用的是加权的近似KS检验方法。
GSEA的介绍可参考:一文掌握GSEA富集分析-最详细教程, 还比较详细的。注意,GSEA还用了置换检验来评估结果的可靠性。GSEA的数学原理还需要好好读读原论文!比如如何加权,为何最后曲线能回到0值处等等。
特征在模型中的富集
可以直接借助GSEA软件计算富集程度,也可以使用原始的KS检验计算。
比如某个分类指标与模型的关系,可以看看某个类是否富集到模型得分的某一端(以模型得分对样本排序,原假设是该类别在排序后的分布中是均匀分布的)。
但连续性指标与模型的关系,如何计算富集程度呢?一篇cell的OCLR干性文献里竟然对连续变量也计算量NES,神奇。
(本文待继续完善)