编辑:如果这个问题被认为是广泛的,我深表歉意。事实上,它涉及高通量数据集的生物信息学分析中的一项非常具体的任务,在我看来,这里提出的问题虽然没有正式制定,但非常具体。
在生物学的 HT 数据集中,例如转录组图谱,我们经常有大量的变量(例如基因)以某种方式测量。一项实验的结果为我们提供了一系列受显着调控的基因,这些基因通常包括数千个变量,经过多次测试校正后,仍然显示出显着差异。为了解释这些结果,生物学家经常使用一种称为“基因集富集分析”的技术。诸如基因之类的变量可以先验地分组,这些变量具有共同的生物学机制(例如,受干扰素刺激的基因)。我们现在问一个问题,在差异表达的基因中,哪些基因组显着富集。
然而,我们测试的不是一个单一的基因组,而是其中的一些。而且,更糟糕的是,这些集合通常包含相同的基因。例如,不同的疾病可能导致相同的基因被上调,因此为这些疾病定义的基因集将重叠。
测试显着基因集富集的一个核心实际问题是许多基因集在很大程度上重叠。例如,在疾病 A 和 B 中特征性富集的基因组 A 和 B 可能都包含干扰素诱导基因——因此,这两个组在涉及干扰素诱导的任何条件下都将富集。
这当然有统计问题——如果不同基因集的测试不是独立的,我们如何使用假设独立的 FDR 或 FWER 校正?然而,这是通常所做的。
这也给解释结果的人带来了一个实际问题:我得到了 100 个重要的基因组,但只有少数基因在所有基因中驱动了这种反应。
Falcon 和 Gentleman( R 包 GOstats)在 hyperGTest 中实现了解决此问题的一种方法。在这里,基因集分析进行了几次。给定由 GO 术语定义的基因集的层次结构,对于每个给定节点,仅使用给定节点的任何显着富集的子节点中不存在的基因进行测试:
当 'conditional(p) == TRUE' 时,'hyperGTest' 函数使用 GO 图的结构来估计每个术语是否有超出术语的子项提供的证据来统计地调用有问题的术语代表过多。所有子项的算法条件都是在指定的 p 值截止值处本身显着。给定三个 GO 本体之一的子图,首先测试没有子类别的术语。接下来测试其子节点已经测试过的节点。如果给定节点的任何子节点测试显着,则执行适当的调节。
从生物学家的角度来看,这种启发式方法给出了更容易解释的结果——避免了无聊的重复;如果 B 很重要,则仅当 A 中存在未包含在 B 中的附加信息时才报告 A。
我的问题:
- 从纯统计的角度来看,上述程序的有效性是什么?
- 如果没有层次结构,如何实现这样的启发式方法?
我自己不是贝叶斯统计学家,考虑到我感兴趣的是衡量一组基因提供的新信息,我想贝叶斯方法可能是一种方法。
欢迎任何提示!
¹ 使用了一系列统计检验,包括 U 检验、超几何检验、ANOVA 变体、随机化检验等等。我在这里描述的问题仍然存在,如果不是全部的话。