在前面的“扒马甲三部曲”里,我们用极其暴力的手法,把市面上 90% 的统计检验全部归宗到了线性模型() 的框架下。
但如果你真的去跑一跑生信转录组,或者做一做临床队列分析,你会发现,哪怕你把线性模型玩出花来,还是会被三个“神兽”拦住去路:
- 多重检验校正 (FDR / q-value):为什么算出来显著的基因,被老板逼着做完校正后,全变不显著了?
- 孟德尔随机化 (Mendelian Randomization, MR):医学顶刊天天在发,号称能“不用做实验就证明因果”,这到底是什么黑魔法?
- 降维 (PCA / t-SNE / UMAP):为什么做单细胞分析上来就得画个点点图?降维到底在降什么?
这三个概念课本上讲得极其玄乎,充满了反人类的数学公式。今天,我们不谈公式,只谈本质。把这三大神兽也扒得底朝天。
1. 多重检验校正:为什么生信人天天看 q-value?
场景:你花了 10 万块钱测了一批 RNA-seq 数据(对照组 vs 患病组)。你用我们在基础篇里讲的线性模型(GLM),对着 2 万个基因挨个算了一遍 p 值。
你狂喜地发现:哇!有 500 个基因的 !
你拿着结果去找老板,老板冷冷地说:“做 FDR 校正了吗?”
你用 R 语言跑了个 p.adjust()。结果傻眼了,500 个显著基因瞬间缩水成了 3 个。
这有何难理解的呢?这一切,都要从 的本质说起。
p 值:冤枉一个好人的概率
的意思是:如果这个基因真的没变化(是个好人),但我通过抽样误差,硬生生算出它有变化的概率,只有 5%。 对于单一一个基因来说,5% 的冤枉率是可以接受的。
但问题是,你测了 2 万个基因啊! 即便这 2 万个基因在两组之间完全没有任何差异,仅仅因为 5% 的假阳性率(也就是纯靠运气中奖的概率),你也会算出: 个假阳性基因!
这就是多重检验问题 (Multiple Testing Problem):只要你抛硬币的次数足够多,总能连续抛出 10 次正面。
Bonferroni 校正:宁可错杀一千,不可放过一个
早期统计学家很暴力,发明了 Bonferroni 校正:既然你测了 2 万次,那我就把标准严苛 2 万倍。 你的 值必须小于 ,我才承认你显著。 结果呢?大家发现,要求太高了,连真正有差异的基因都被筛掉了(假阴性太高)。
FDR (Benjamini-Hochberg) 与 q-value:排个队,按比例打折
后来,Benjamini 和 Hochberg 提出了极其聪明的 FDR (False Discovery Rate,错误发现率) 概念。 它的逻辑变了。它不再关注“冤枉好人的绝对概率”,而是关注:在你抓的这批“坏人(显著基因)”里,有多少比例是被冤枉的(假阳性)?
为了控制 FDR,统计学家发明了各种校正算法(最经典的叫 BH 法)。它的底层逻辑(极简版)是这样的:
- 把你算出来的两万个 p 值,从小到大排个队。
- 排名越靠前的(p值越小的),说明它越“罪大恶极”,我给它的惩罚越小。
- 排名靠后的,说明它本身就不太显著,我就狠狠地惩罚它,把它乘上一个巨大的倍数。
这样一顿操作之后,每个基因原本的 p 值,就变成了一个新的、被惩罚过的值。 这个校正后的新 p 值(Adjusted p-value),在很多生信软件里,就被称为 q-value(严格来说,q-value 是 Storey 提出来的基于 FDR 的另一种更精细的估算,但现在大家习惯把它们混着用,都指代校正后的 p 值)。
怎么解读呢?
假设你设定阈值 q-value < 0.05,然后筛出了 100 个基因。
它的物理意义是:这 100 个基因组成的名单里,我允许有 5%(也就是 5 个基因)是假阳性(靠运气混进来的),只要另外 95 个是真的就行。
这就是为什么生信文章里,大家永远在看 q-value 而不是 p 值。 一句话总结:p 值管的是“个体冤不冤”,q 值管的是“你交上来的这份群体名单,水份大不大”。
常见应用场景:什么时候必须做多重检验校正?
只要你在同一项研究中,对不同的特征进行了多次独立统计检验,就必须做校正。在生物医学中,几乎所有的组学数据都是重灾区:
- 转录组学 (RNA-seq / 芯片):同时比较 2 万个基因在两组间的表达差异(生信最常见场景,通常用
q-value < 0.05过滤)。 - 全基因组关联分析 (GWAS):同时测试百万级别的 SNP 位点与某种疾病的关系。因为基数太大,GWAS 通常不用 FDR,而是用最传统严苛的 Bonferroni 校正变体(这也是为什么医学界公认的 GWAS 显著性阈值是极其变态的 )。
- 微生物组学 (Microbiome):比较肠道里几百种不同细菌菌群在用药前后的丰度变化。
- 代谢组学 / 蛋白质组学:筛选成千上万种代谢物或蛋白的浓度差异。
避坑指南:如果你只测了 3 个基因的 qPCR 去验证一个很明确的假说,那直接用普通 p 值就行了,没必要强行搞个 FDR 校正(强行做反而显得死板)。但如果你做了全转录组测序,哪怕你文章最后只重点展示了 3 个基因,你也必须在方法学里证明:这 3 个基因是从 2 万个基因中,经过全局 FDR 校正后依然坚挺的“真家伙”。
2. 孟德尔随机化 (MR):不用做实验的因果推断神器
痛点场景: 在临床和公共卫生研究中,我们天天喊着“寻找致病元凶”,但现实往往极其打脸。 比如,你想证明“血液中某种生物标志物(比如 CRP 蛋白)升高,会导致冠心病”。你观察了一万个人,发现 CRP 高的人确实冠心病多(有相关性)。 但审稿人马上会喷你:
- 反向因果:你怎么知道不是因为他得了冠心病,身体发炎,才导致 CRP 升高的?
- 混杂因素:你怎么知道不是因为这些人本身就爱吃垃圾食品(混杂因素),垃圾食品同时导致了 CRP 升高和冠心病?
要证明因果,唯一的金标准是随机对照双盲试验 (RCT):你找一万人,强行给一半人注射 CRP 蛋白,另一半人注射生理盐水,观察 10 年。 这显然既没钱做,又违背医学伦理。那怎么办?
降维打击时刻:孟德尔随机化 (MR) 近几年医学顶刊(如 BMJ, Lancet)被一种叫 MR 的分析方法疯狂刷屏。它的核心逻辑极其天才:既然我们不能做人工的随机分组,那老天爷(基因)不是早就替我们分好组了吗!
统计学家引入了一个叫工具变量 (Instrumental Variable) 的概念。 假设我们找到了一个基因(SNP,比如 rs12345),这个基因只干一件事:让人一出生就疯狂想喝咖啡。
- 携带 A 型基因的人,天生爱喝咖啡。
- 携带 B 型基因的人,天生不爱喝。
绝杀逻辑来了:
- 基因是父母随机给的(符合孟德尔遗传定律,也就是“随机分组”)。
- 基因在你出生时就决定了,绝对不会因为你后来抽烟、熬夜(混杂因素)而改变(也就是“双盲、抗干扰”)。
- 最核心的单行道规则(排他性假设):这个基因必须且只能通过“让你喝咖啡”来导致肺癌,它绝不能绕过咖啡直接去诱发肺癌(比如这基因同时控制着肺部细胞突变)。
- 如果满足以上条件,且我们发现携带 A 型基因(爱喝咖啡基因)的人,得肺癌的比例显著高于 B 型基因的人,那我们就可以理直气壮地说:喝咖啡导致了肺癌!
这里回答一个很多初学者绕不过弯的问题:“基因在这里只是拿来分组,它自己不参与因果推断吗?” 答案是:对,也不对。 从临床目的来看,基因确实只是个无情的“分组工具(工具变量)”,我们根本不在乎这个基因本身叫啥、有啥医学价值,我们只在乎“咖啡”和“肺癌”。但从统计逻辑来看,**正是因为基因有着严苛的“只分组、绝不直接干预结果”的纯洁性,它才成为了因果推断能成立的唯一基石。**如果这把“工具”自己也下场干预了结果(基因多效性),那整个推断就彻底崩盘了。
在具体实操中,MR 的本质也就是我们在《高阶非线性篇》里讲的连着跑两次线性回归(这叫两步最小二乘法,2SLS):
- 第一步:跑个线性模型,用基因 (SNP) 去预测咖啡饮用量。
- 第二步:跑个线性模型,用刚才预测出来的咖啡量,去回归肺癌的发病风险。
人生苦短,只要你会跑回归,去公共数据库 (GWAS Catalog) 里下载几万个 SNP 的数据一组合,一篇 MR 文章就出来了。
常见应用场景:MR 到底能解决什么临床问题?
既然懂了原理,那现在医学界疯狂发 MR 文章,到底在研究些什么?
- 推翻伪科学:回到开头那个“CRP 蛋白与冠心病”的例子。现实中,科学家真的用 MR 做了分析,结果发现:那些天生携带“高 CRP 表达基因”的人,得冠心病的风险并没有增加!这直接证明了 CRP 只是冠心病发炎时产生的一个“伴随物(吃瓜群众)”,而不是致病原因。这个发现直接让药企停止了针对 CRP 的冠心病靶向药研发,省下了几十亿美金。
- 老药新用 (Drug Repurposing):假设有一种降压药的靶点是基因 X。我们用 MR 发现,携带“基因 X 表达量低(模拟药物抑制效果)”的人,不仅血压低,而且得老年痴呆的概率也显著降低。这就暗示:这种现成的降压药,很可能可以直接拿来跨界预防老年痴呆!
- 生活方式的“铁证”:比如“喝咖啡到底致不致癌?”、“每天睡 8 小时和 6 小时对寿命有因果影响吗?”通过寻找与“咖啡代谢”、“睡眠时长”相关的 SNP,MR 能够排除社会阶层、饮食习惯等混杂干扰,给出最硬核的医学建议。
- 双向 MR (谁是因,谁是果):肠道里某种有益菌变少了,是因为得了抑郁症,还是抑郁症导致了有益菌减少?通过互为工具变量做两遍 MR,就能把“鸡生蛋还是蛋生鸡”的问题彻底终结。
进阶吐槽:其实,“孟德尔随机化”只是一个蹭了生物学热度的花哨名字。在经济学和社会学里,这套方法早就被玩烂了,它的真名叫做工具变量法 (Instrumental Variable, IV)。 只要你能找到一个“只影响自变量,且绝对不受混杂因素影响,就像掷骰子一样随机”的变量,你就能做因果推断。
- 比如经济学诺奖得主 Joshua Angrist 的经典研究:“参军(越战)是否会降低未来的收入”。 直接比去当兵和没去当兵的人是不行的。因为去当兵的人和逃避兵役的人,他们的家庭背景、教育程度、体质(这些都是混杂因素)本来就不一样,直接比出来的收入差,你不知道是“参军”导致的,还是“家庭背景”导致的。 怎么办?他借用了一个天才的工具变量:出生月份(美国越战时的抽签征兵号)。 套用我们前面讲的三大铁律来理解这个“盲盒”:
- 强相关(有效分组):你的生日决定了你的抽签号,抽签号靠前的人被强制征兵(强迫你去当兵)。
- 抗干扰(纯洁性):你是几月份出生的,这完全是老天爷掷骰子,跟你的家庭财富、智商、基因没有任何关系。
- 单行道(排他性假设):也是最核心的!你因为是 3月 出生,所以你20年后的工资就一定比 8月 出生的人低吗?绝对不可能。“出生月份”绝对不可能直接绕过当兵这件事去影响你未来的收入。它唯一能影响你收入的路径,就是“倒霉把你送去了战场”。
这和用 SNP 做孟德尔随机化,在数学本质和逻辑上完 全 一 样。只不过生物学家借用“孟德尔遗传定律(基因随机分配)”这个自然现象,给它起了一个极其高大上的专属名字罢了。
扩展脑洞:既然懂了底层的工具变量逻辑,在生物医学里,除了基因(SNP),还有没有其他“老天爷发的盲盒”可以用来做因果推断?当然有!
- 出生月份/季节:比如研究“日照时间/维生素D”对某种疾病的因果关系,你的出生月份就是一个完美的工具变量。
- 居住地到某类医院的物理距离:比如研究“做某种高级手术”对生存率的影响。有钱人可能更倾向于去做(经济条件是混杂因素)。但“你家离有这台机器的医院有多远”在很大程度上是随机的,距离越近越可能做,且距离本身不直接影响生存率。
- 政策/指南的突然改变:比如某年某月突然出台了新的用药指南。在这个时间点前后的病人,本身病情没区别,但用药却截然不同。这个“时间断点”就是一个天然的随机工具变量(这在统计学里又叫断点回归 Regression Discontinuity,也是工具变量的一种变体)。
3. 降维 (PCA 与 UMAP):到底在降什么维?
场景:你做了一次单细胞转录组测序,测了 10000 个细胞,每个细胞有 20000 个基因的表达量。你要怎么把这些细胞画在纸上,看看它们是不是分成了不同的亚群(比如 T细胞、B细胞)? 你不可能画一个 20000 维的坐标系。你只能画二维(X轴和Y轴)。这就需要降维 (Dimensionality Reduction)。
PCA (主成分分析):找一个最能拉开差距的拍照角度
想象一下,桌子上放着一块极其不规则的石头(代表你的高维数据)。你想给它拍张二维的照片,让大家看清它的形状。
- 如果你从正上方拍,可能只能看到一个圆面。
- 如果你从侧面找一个极其刁钻的角度拍,就能看到它最长、最宽、变化最剧烈的轮廓。
PCA 的本质,就是在 20000 维的空间里,旋转你的照相机,找一个“方差最大(最能把细胞拉开差距)”的拍照角度。
- 拍出来的最长的那条边,叫 PC1(主成分1)。
- 垂直于 PC1 的第二长的边,叫 PC2。 这就是为什么 PCA 图的横纵坐标叫 PC1 和 PC2,它们并不是某个具体的基因,而是几万个基因按不同权重组合出来的一个“视角”。
t-SNE 与 UMAP:引力与斥力的橡皮筋游戏
PCA 虽好,但它是线性降维。它就像拿个平底锅去拍苍蝇,不管三七二十一直接拍扁。如果高维空间里的细胞像瑞士卷一样卷在一起,PCA 拍扁后,不同层的细胞就全混在一起了。
这时候就需要非线性降维的神器:t-SNE 和目前的绝对王者 UMAP。
别去管它们复杂的拓扑学公式,你只需要记住这个生动的比喻——橡皮筋与磁铁:
- 在 20000 维的高维空间里,算法先看看哪些细胞靠得很近(比如它们都是 T 细胞)。算法用一根“橡皮筋”把它们紧紧绑在一起。
- 然后,算法把这 10000 个细胞全扔到一张平面的二维白纸上。
- 刚扔上去的时候,位置是乱的。但是:
- 绑了橡皮筋的细胞(本来就相似的),会互相拉扯(引力),聚成一团。
- 没绑橡皮筋的细胞(不相似的),会像同极磁铁一样互相排斥(斥力),远远推开。
- 经过几千次的拉扯和排斥,整个系统稳定下来了。你在 UMAP 图上看到的那一坨一坨界限分明的“小岛”,就是这么弹出来的。
常见应用场景:我们为什么要画降维图?
在生物医学数据分析中,只要你的特征数(基因、蛋白、临床指标)超过了 3 个,你就离不开降维:
- 单细胞亚群鉴定:把几万个细胞画在 UMAP 图上,聚成一团的就是同一个细胞类型(比如 CD8+ T细胞)。如果有一小团细胞游离在外,恭喜你,可能发现了一个新的罕见细胞亚群。
- 肿瘤分型与预后:拿着几百个病人的大队列 RNA-seq 数据,用 PCA 降维。如果你发现这些病人在 PC1 轴上明显分成了两坨,那说明这批肿瘤在分子层面上其实是两类截然不同的亚型,可能需要用完全不同的化疗方案。
- 批次效应 (Batch Effect) 检查:你分两次把样本送去测序。做完 PCA 一看,PC1 竟然完美对应了“第一批”和“第二批”。这说明测序机器的系统误差已经盖过了真正的生物学差异。这时候你就得赶紧用去批次算法(如 ComBat),否则后面的差异分析全是在测机器的区别。
番外总结
从《基础篇》的 t检验,到《进阶篇》的逻辑回归与混合效应模型,再到《高阶篇》的 GAM 和这篇的“三大神兽”。
统计学和生物信息学,其实从来都不是玄学。
- FDR 校正:不过是给 p 值排个队打个折。
- 孟德尔随机化:不过是借着老天爷发牌的基因,跑两次回归。
- PCA 和 UMAP:不过是找个刁钻角度拍照,或者玩一场橡皮筋弹弹乐。
只要扒掉了这层数学公式的马甲,你会发现,这些主宰了无数顶刊的神奇算法,背后的逻辑简单得令人发指,甚至还有一点小幽默。 祝你以后的数据分析之路,再也没有黑盒。