Fisher精确检验与无监督学习

第六次生物统计学助教课的备课笔记。

本文为生统助教课备课过程的一些记录,主要涉及差异表达分析、基因富集分析、无监督学习的相关知识点,其中的重点包括差异倍数(Fold change)的计算,以及Fisher精确检验。

一张图展示本文知识大纲:

image.png


一、差异表达分析的基本步骤

  • step1 预处理:
    • 标准化、填补缺失值
  • step2 差异倍数(Fold Change)的计算 :
    • $E = mean(group1)$
    • $B = mean(group2)$
    • $FC = (E-B)/min(E,B)$
    • Fold change的threshold一般设为2,但是也可以是其他值
    • 缺点:未考虑组内方差
  • step3 显著性检验
    • 在合适的场景使用合适的检验手段
    • 考虑样本量大小、样本是否配对、场景与影响因素数量…
  • step4 多重校正
  • step5 后续分析:
    • 基因集富集分析
    • 绘制热图heatmap/pheatmap
    • ……

对每个基因进行显著性检验

  • 实验组 vs. 对照组
    • 大样本,服从正态分布:t.test,根据具体情况判断参数(是否为配对样本、方差是否相等…)
    • 小样本:wilcox.test
  • 单个影响因素,多种场景(分三组分别给药A/B/C):
    • one-way ANOVA
  • 多个影响因素,每个因素下多种场景(分多组对应不同给药种类和剂量)
    • multiple-way ANOVA

二、基因富集分析与Fisher精确检验

基因富集分析一般是为了解决下面的这些问题

image.png

常用的注释数据库(以及资源)如下:

image.png

富集分析需要解决的统计学问题是,当我们观察到一部分差异基因落在了GO term或者pathway的基因集里面以后,如何确定这个GO term或者pathway就是显著的。

image.png

要解决这个问题,一般需要进行2×2列联表检验。2×2列联表检验常用的方法有两种:Fisher精确检验,以及Pearson卡方检验。基因富集分析里面最合适的检验方法是Fisher精确检验

Fisher精确检验

Fisher检验利用了超几何分布的数学原理:

image.png

image.png

在R语言中,进行Fisher检验可以直接调用 fisher.test(matrix(data=c(a,b,c,d),nrow=2)) ,也可以利用超几何分布的函数接口进行计算:

  • P_val <- min(1-cumsum(dhyper(0:(y-1),X, N-X, n)))
  • P_val <- phyper(y-1, X, N-X, n, lower.tail = FALSE)

image.png

Fisher精确检验和Pearson卡方检验的比较

基因富集分析中,推荐使用Fisher精确检验,原因:

  • 精确性:Fisher检验直接计算所有可能排列的概率,尤其适合稀疏数据。
  • 小样本问题:基因集富集分析中,某些GO通路的基因数可能较少(如罕见通路),导致列联表中出现期望频数<5的单元格。此时卡方检验的近似性不可靠。
  • 保守性:Fisher检验在极端不平衡数据中更稳健(如差异基因极少但富集显著)。

image.png

下面是一道例题。数据和代码见图片,最终的结果是 P=0.1302>0.05 因此检验结果不显著,这条GO通路未被富集。

image.png

三、无监督学习

这一部分的知识点相对较少,仅以两页PPT总结:

PCA

image.png

聚类

image.png