GSEA简介
基因集富集分析(GSEA)是一种计算方法,可确定先验定义的基因集是否在统计上显示两种生物学状态之间存在显着一致的差异。
来自官网:GSEA
GSEA首先由Mootha等人描述。 (Mootha 2003)试图阐明2型糖尿病的机理。 他们认为与疾病相关的基因表达改变可以在生物学途径或共同调控的基因组而非个体基因的水平上体现出来。 缺乏在基因水平上检测真实信号的能力可能是高通量表达测量的结果,该测量涉及异类样品,适度的样品量以及微妙但有意义的改变表达水平。 最终,这些混淆的尝试得出了具有感兴趣的生物学状态的可再现的关联。
在他们的研究中,使用微阵列比较了糖尿病(DM2)和正常葡萄糖耐量(NGT)对照小鼠中的基因表达。 一方面,两种统计分析方法未能在这两组小鼠之间鉴定单个差异表达的基因。 另一方面,GSEA将氧化磷酸化(OXPHOS)确定为在DM2中被下调的最高得分基因。 接下来的四个得分最高的基因组与OXPHOS很大程度上重叠。
所以GSEA的输入是一个基因表达量矩阵,其中的样本分成了A和B两组,首先对所有基因进行排序,简单理解就是根据处理后的差异倍数值进行从大到小排序
1.Local statistic
在这一步中,我们描述了一种局部或基因水平的测量方法,该方法用于按照GSEA对基因进行排名。 之前,我们描述了如何获取和处理RNA-seq数据集,使其成为单个基因列表,该列表根据每个基因的p值(作为差异表达测试的一部分)的函数进行排序。 在这种情况下,分配给基因的p值可以解释为各组之间基因表达差异的概率至少与在没有组间差异的情况下观察到的差异一样大。 我们只需声明此p值函数的 rank metric(图1)
图1.导出GSEA Local statistic信息:rank metric ,描述了总共m个样品的基因表达的成对比较。 确定n个基因中每个基因的RNA水平。 差异表达测试为每个基因分配一个p值(P),并用于导出表示GSEA rank metric的 Local statistic。 基因列表(L)根据等级排序排名指标的一个示例是表达式更改中“方向”的符号(即“上调”为正,而“下调”为负)与p值(P)的乘积。
在此rank metric下,具有相对较小p值的上调基因出现在列表的顶部,而具有较小p值的下调基因出现在列表的底部
第一步先根据表达矩阵(根据表达矩阵不同处理组)计算每个基因的 Fold change 和 P-value,然后根据 P-value(Rank Metric)进行排名,Rank Metric 小的在上面,大的在下面
2.Global statistic
Global statistic是GSEA的核心,用于计算它的相当简单的算法掩盖了一种判断每个候选基因集的相当深刻的统计方法。 我们将暂时搁置技术细节,以了解GSEA如何计算给定途径的富集得分。
让我们按照图1所示的过程进行操作,这里有一个排名基因的列表。 出于说明目的,假设我们希望测试列表中细胞周期途径的富集情况(图2)。
图2.全局统计的样本计算:GSEA富集得分。 该过程需要根据排名指标排序的排序基因列表(L)以及候选基因集(G)。 在这种情况下,候选者是哺乳动物细胞周期途径。 通过从排名列表的顶部开始并依次考虑每个基因来计算运行总和:如果该基因存在于基因集中(红色; +),则将其加和,否则将其总和(-)减一。 GSEA富集分数(S)是列表中任何一点的总和的最大值。 尽管未示出,但是行驶总和可能沿负方向偏离,因此,S实际上是行驶总和的最大绝对值
GSEA一次考虑一个候选基因集。为了计算富集得分,GSEA从排名靠前的基因列表的顶部开始。如果一个基因是候选基因集的成员,那么它会加上一个连续的总和,否则就减去它。对排名列表中的每个基因重复此过程,该基因集的富集得分等于运行总和所达到的最大绝对值。
我们避开的该算法的一个方面是增加或减少的值。在GSEA的原始版本中(Mootha 2003),这些值是经过特别选择的,以使所有基因的总和为零。在图2中,这相当于在列表末尾满足水平轴的运行总和。在这种情况下,浓缩分数是Kolmogorov-Smirnov(K-S)统计信息,用于确定浓缩分数是否在统计上有意义。 Subramanian等人(Subramanian 2005)描述的更新程序使用了该程序的“加权”版本,由此运行总和的增量与该基因的rank metric成正比。这些选择的原因是相当技术性的,我们在下一节中将其保留给那些更倾向于数学的人。
富集分数:
注明: n指的是所有基因数量
这一小节单独讨论了对于单个基因集Gk(其中k为索引),该单基因集Gk表示的是你感兴趣的功能基因集,而非你自己的data,那么一共有k个单基因集;对于每一个基因集Gk来说,里面一共有nk个基因(每个基因用 gkj 表示)
而不存在于基因集Gk的,我们将其表示为:
并且有:
式子中 st 表示 rank metric, nk表示的是Gk基因集的基因数, gene(t)表示你自己的数据: Ranked gene list(L)
其中1是指定基因集中成员的指标函数。 我们将在此处注意到,富集得分是基因集大小的函数,当我们在下面讨论显着性检验时,它将发挥作用。 为了更好地理解这些方程式的含义,让我们看看改变指数α时会发生什么。
意味着 Sk(GSEA) 表示你自己的data(L 中的)中gene(t) 存在于某功能的单基因集Gk中,那么就得分,否则减分
Equal weights: The ‘classic’ Kolmogorov-Smirnov statistic:
考虑当α= 0时的简单情况。 然后,来自基因集中基因的所有的贡献都不会考虑(2)中的 rank metric 。实际上,这赋予所有基因相等的权重。
注明: nk指的是Gk集中的基因数量
如果上升到连续型变量:
其中X(i)表示累计值, X(1) = 1 , X(2) = 2 , X(i) = i , X(n) = n ; 以此类推,并且Xt的值要小于等于你给定的x值
也就是说当x = 5时 , 基因list(L) 只能取前五个基因
当 L 中的基因存在于Gk中时,采用(4)式 ; 当 L 中的基因不存在于Gk中时,采用(5)式 , 因此我们可以根据我们的 L 基因集和感兴趣通路的基因集Gk , 做一个累计分布曲线 :
图3.经验累积分布函数。 上图 : 假设的有序基因列表,其中每个竖线表示基因集中的一个基因(红色)或不代表(蓝色); 下图 : 基因组中的基因(红色)和基因组外的基因(蓝色)的经验累积分布函数。 ecdfs之间的最大偏差是绿色的虚线
经过仔细检查,将累计总和(图2底部)与ecdfs(图3)联系起来很简单:累计总和的增加对应于基因集中基因的 ecdf 的增加(图3,红色),同样地 ,总和的减少对应于外部基因(蓝色)的 ecdf 增加(实际上是减分)。 然后,富集得分(运行总和的最大偏差)对应于ecdf图之间最大的垂直距离(绿色虚线)。
GSEA软件计算最终的富集得分即为上图对应于ecdf图之间最大的垂直距离(绿色虚线),也称为峰值
如上图所示,如果我们将某一个通路(功能)相关的基因集合定义为 P,自己的数据集基因(按照Foldchange或者相关性排过序)集合定义为 G,GSEA的本质是如果某基因在 G与P基因集 中都有,那么就加分;否则减分
最终的富集得分(NES)为正,说明相关基因在 G 的顶部富集,如果是按Foldchange从高到低排序,那么说明该通路 (集合P表示为与该通路相关的基因集合)对应存在于基因集 G 中的基因在 G 里面显示为上调的居多(红框所示基因);最终的富集得分(NES)为负,说明相关基因在 G 的底部富集,如果是按Foldchange从高到低排序,那么说明该通路 (集合P表示为与该通路相关的基因集合)对应存在于基因集 G 中的基因在 G 里面显示为下调的居多(紫框所示基因)
这里对应存在的意思是某基因在 G与 P基因集 中都有
Kolmogorov-Smirnov拟合优度检验
我们已经了解到
可以表示为图3中红色ecdfs与蓝色ecdfs之间的最大距离,那么给定的一个显著的
是否可以理解为两个不同的 ecdfs 代表不同的样本 , 这里面是否存在抽样误差
单样本Kolmogorov-Smirnov拟合优度检验
该检验的目的是检测实际样本的分布是否与理论分布是否相契合
基本原理 : 将理论分布下的累计频数分布与观测到的累计频数分布相比较,找出它们之间的最大差异点(即图中绿色的线所在的点) , 并参照抽样分布,判断最大差异是否来自偶然
其中:
代表观测到的累计频数分布 , 而:
代表理论分布下的累计频数分布 , 而它们的原假设(H0)即为判断它们是否相等
那么我们构造:
Dn代表它们之间的误差 , 构造统计量 , 判断Dn是否小于某个临界值
参考资料传送门: 传送门
双样本Kolmogorov-Smirnov拟合优度检验
对于双样本的检验来说 :
对于两个样本和
来说,我们要寻找这两个分布的累计曲线的差异 , 即图3中红色曲线和蓝色曲线的差异(最大差异为绿色虚线)
我们将这两者的差异表示为Dab , 构造统计量 , 判断Dab是否小于某个临界值 , 是否显著
3. 显著性检验
回顾一下,GSEA使用了一组用于基因列表的 rank metrics 来计算候选基因集的富集得分。在这一点上,主要问题是哪些分数表明是富集的?在假设检验行话中,我们希望确定每个 global statistic 的统计意义。我们通过得出一个p值来实现这一点,该p值表示观察到给定富集得分或其他更极端的概率。为此,我们需要对统计信息的分布方式有所了解。
零分布
从我们对 global statistic 的讨论中,使用加权的富集得分使我们没有对其空分布的解析描述。 也就是说,用本地统计量加权浓缩分数SGSEAk不同于经典的Kolmogorov-Smirnov统计量,该统计量通常遵循类似K-S的分布。
GSEA采用“重采样”或“自举”方法来为每个基因集的富集得分得出空分布的经验样本。 GSEA软件提供了两种排列方法的选择,这些方法是空分布计算的基础(图4)。
然后用你自己的数据基因集 L 与每一个(一共Nk个)功能基因集计算富集分数 Sk(Nk)GSEA {一共Nk个富集分数}
其中Nk表示被置换的次数 , Sk(Nk)GSEA表示富集分数
图4. GSEA使用置换方法为每个基因集生成零分布。 为了简洁起见,我们描述了单个基因集的排列方法示意图。 在GSEA中,对每个基因集分别重复此过程。 A.表型排列。 B.基因组排列。 C. p值的计算
图4 C 中红色部分表示未经过置换的富集分数值
经过Nk次置换后,我们一共可以得到 Nk 个富集分数, 那么不同的富集分数拟合除一共频率分布直方图,作为判断显著性的标准, 并将频率分布的期望记为:
表型(功能)置换
对于Phenotype permutation来说,这里的Phenotype gene list(表型基因集)表示的其实是功能基因集
GSEA描述了利用表型置换的方法对零分布进行采样 , 对于给定的某功能的基因集Gk , 利用表型置换的方法将它们的功能基因集Gk的 "某功能" 标签进行置换,从而得到置换分数 (图4 B):
从直观的角度来看,这在基因等级排名与表型之间没有特定关联的假设下生成了一个富集得分分布的样本。 换句话说,我们了解了富集分数变化的范围以及两组有效地相同的频率。
从统计的角度来看,作者声称这为空模型提供了更准确的描述。
重要的是,类别标记的排列保留了基因与基因之间的相关性,因此,与通过排列基因获得的意义相比,提供了更生物学上合理的重要性评估。
确实,GSEA的各种变种,其声称只是简单的方法论,都依赖于基因-基因独立性的假设(Irizarry 2009)。 然而,经验比较表明,忽略这些相关性会导致方差膨胀-更宽和更平坦的零分布-导致基因集错误发现的风险更高(Tamayo 2016)。
P-value 计算
根据 P-value 的定义我们不难发现, P-value的计算可以是:
根据定义,P是在原假设下观察统计或更极端的概率
4. 多次校正
当我们检验一个假设时,观察具有较小p值的统计信息的机会会增加。如果小于显着性水平,则可以将它们错误地分类为发现或 I 类错误。多种校正程序试图对这些进行量化和控制。
在GSEA中,观察到的数据分布是否等于理论数据分布这是一个假设。量化 I 型错误的指标是错误发现率(FDR)。 FDR被定义为实际上是被拒绝的零假设的一部分的期望值。实际上,GSEA凭经验确定了这一比例。
通常,给定 Local statistic 的指定阈值 T,FDR是大于T的真实无效假设的数量除以大于T的真实和假无效假设的总和。对于GSEA,T是富集的某个值分数和真实的无效假设将代表实际上未富集的基因集。实际上,我们不会直接观察后者,因此可以根据超过T的经验空值进行估算(图6)。
图6.经验错误发现率A.观察到的统计信息的分布和通过置换方法得出的零分布。 T代表阈值。 B. 假设观察到n(obs)和经验空分布为n(null)的数据点。A中右侧分布尾部的放大视图。超出阈值的空分布值的数量用于估计真实的空假设。 错误拒绝的比例估计为s_null(红色)与s_obs(蓝色)之比,并在数据点数不相等时引入校正
如果超过阈值T的观察到的统计信息和无效统计信息的数目分别为s(obs)和s(null),则经验错误发现率为:
标准化的富集得分:考虑基因组大小
从等式(1)-(3)的定义可以看出富集得分取决于基因组大小。因此,除非我们处于不可能的情况下,即我们测试的所有基因集大小均相等,否则富集分数将不会均匀分布,因此无法直接进行比较。这排除了经验错误发现率的计算。
GSEA通过对所计算的富集得分进行转换以使其处于可比较的规模来解决此问题。特别地,该归一化的富集得分(NES)是富集得分除以相应的空分布的期望值(即,平均值)。具体而言,对于每个基因集,我们通过基因集置换得出富集得分:
和相应的空分布:
并且定义, 标准化富集得分:
未经过置换后GSEA富集分数的标准化值:
实际情况中肯存在正负值, 那么对正负值分别进行标准化:
经过置换后GSEA富集分数的标准化值:
实际情况中肯存在正负值, 那么对正负值分别进行标准化: