跳到主要内容

01 数据可信度:怎么不被自己骗

组学分析最危险的时刻不是"跑不出结果",而是"跑出了好看的结果但其实是错的"。你兴奋地发现 tumor 和 normal 完美分离、差异基因成百上千、生存曲线漂亮得像教科书——然后三个月后发现是批次效应、样本标签搞混、或者 circular analysis。这一章用 5 个真实场景训练你的"怀疑本能":在相信结果之前,先问自己"这会不会是假的"。

场景一:批次效应伪装成生物学差异

背景: 某实验室做了一个肝癌 vs 正常肝组织的 RNA-seq 实验。20 个 tumor 样本在 2023 年 3 月测序,20 个 normal 样本在 2023 年 9 月测序(因为 normal 组织难获取,攒够了才一起测)。

分析过程: 用 DESeq2 做差异分析,发现 5000+ 差异基因(|log2FC| > 1, padj < 0.05)。PCA 图上 tumor 和 normal 完美分离,PC1 解释了 45% 的方差。富集分析显示 top 通路是"ribosome"和"oxidative phosphorylation"。

看上去的结论: 肝癌中核糖体和氧化磷酸化通路发生了剧烈变化。

为什么是错的: 两批样本在不同时间、可能不同 lane 上测序。PC1 反映的不是 tumor vs normal 的生物学差异,而是两个 batch 之间的技术差异。核糖体基因和线粒体基因对 library preparation 的技术变异特别敏感,所以它们总是出现在 batch effect 驱动的 top 通路中。

怎么发现问题:

  • 在 PCA 图上用颜色标注测序日期而不是样本类型——如果 PC1 和测序日期完美对应,就是 batch effect
  • 检查 top 差异基因是否以核糖体基因(RPL/RPS 开头)和线粒体基因(MT- 开头)为主
  • 如果有 matched pair(同一患者的 tumor 和 normal),看配对样本是否聚在一起

正确做法: 在 design formula 中加入 batch 作为协变量(~ batch + condition),或者用 ComBat/limma::removeBatchEffect 做 batch 校正后再分析。更好的实验设计是:每个 batch 中同时包含 tumor 和 normal 样本。

场景二:样本标签搞混制造完美结果

背景: 你从 GEO 下载了一个肝癌数据集(GSE 开头),metadata 中标注了 tumor 和 normal。你做了 PCA,发现分离非常清晰。

分析过程: DESeq2 差异分析得到 3000 个差异基因,方向合理(已知的肝癌 marker 如 GPC3、AFP 在 tumor 中上调)。一切看起来很完美。

看上去的结论: 数据质量很好,分析结果可靠。

为什么可能是错的: GEO 数据集的 metadata 经常有错误——样本标签搞混、分组信息填反、甚至把不同实验的样本混在一起。你看到的"完美分离"可能恰好是因为标签是对的,但也可能是因为标签虽然错了但恰好和某个技术因素(如 library size)对齐了。

怎么发现问题:

  • 用已知的 sex-specific 基因(XIST 只在女性表达,DDX3Y/RPS4Y1 只在男性表达)验证样本性别是否和 metadata 一致
  • 检查已知的 tissue-specific marker:ALB(白蛋白)在正常肝组织中极高表达,如果你的"normal"样本 ALB 表达很低,可能标签搞混了
  • 对 TCGA 数据:用 barcode 的第 14-15 位验证样本类型(01=tumor, 11=normal)

正确做法: 在正式分析之前,花 10 分钟做"sanity check"——用 3-5 个已知 marker 验证分组标签的正确性。这个习惯能帮你避免在错误数据上浪费几周时间。

场景三:Simpson's Paradox 在亚组分析中

背景: 你在 TCGA-LIHC 全部 371 个 tumor 样本中发现基因 X 的高表达与更好的预后显著相关(HR = 0.65, p = 0.01)。

分析过程: 你很高兴,准备把这个基因作为保护性因子来讨论。但审稿人要求你做亚组分析——按 stage 分层后再看。

看上去的结论: 基因 X 是一个保护性预后因子。

为什么可能是错的: 按 stage 分层后你发现:在 Stage I-II 中,基因 X 和预后无关(p = 0.4);在 Stage III-IV 中,基因 X 和预后也无关(p = 0.6)。但在全部样本中显著——这就是 Simpson's Paradox。原因是:基因 X 在早期患者中表达更高,而早期患者本身预后就好。所以"基因 X 高表达 → 好预后"的关联其实是"早期 → 好预后"的混杂效应。

怎么发现问题:

  • 做多变量 Cox 回归,把 stage 作为协变量纳入——如果基因 X 在校正 stage 后不再显著,说明是混杂
  • 做亚组分析:在每个 stage 内部单独看基因 X 和预后的关系
  • 检查基因 X 的表达是否和 stage 强相关

正确做法: 任何预后分析都应该做多变量 Cox 校正(至少校正 age、stage、grade)。如果一个基因只在单变量分析中显著但多变量中不显著,它很可能不是独立预后因子。

场景四:多重比较制造的"显著发现"

背景: 你对 TCGA-LIHC 的 20000 个基因做了单因素 Cox 回归,用 p < 0.05 筛选,得到了 1800 个"预后相关基因"。你很兴奋——这么多基因和预后相关!

分析过程: 你从这 1800 个基因中挑了几个做 KM 曲线,都很漂亮。你选了其中一个文献最少的基因作为主角,开始写文章。

看上去的结论: 发现了一个新的预后 biomarker。

为什么可能是错的: 20000 个基因 × p < 0.05 = 预期 1000 个假阳性。你得到的 1800 个"显著"基因中,可能有超过一半是假阳性。你挑出来的那个基因,可能恰好是 1000 个假阳性中的一个。

怎么发现问题:

  • 对单因素 Cox 的 p 值做 BH 校正,看 FDR < 0.05 还剩多少基因
  • 计算"预期假阳性数":20000 × 0.05 = 1000。如果你的显著基因数和这个数量级差不多,说明大部分可能是假阳性
  • 用 permutation test:打乱生存数据和表达数据的对应关系,重新做 Cox,看能得到多少"显著"基因——这就是 null distribution

正确做法: 对大规模检验(>100 个基因)的结果必须做多重检验校正。单因素 Cox 筛选用 FDR < 0.05 而不是 p < 0.05。如果校正后没有显著基因,说明信号不够强,不要通过放宽阈值来"找到"结果。

场景五:Circular Analysis 制造过度乐观的模型

背景: 你用 TCGA-LIHC 全部 365 个有生存信息的 tumor 样本做了以下分析:(1) 单因素 Cox 筛选预后基因;(2) LASSO 选出 12 个基因构建 signature;(3) 在同样的 365 个样本上画 KM 曲线,p = 1e-15,C-index = 0.82。

看上去的结论: 构建了一个预测性能极好的预后模型。

为什么是错的: 你用同一份数据既训练模型又评估模型——这是 circular analysis(也叫 resubstitution)。模型"记住"了训练数据的噪声,所以在训练数据上表现极好。但如果你拿一份新数据来测试,性能会大幅下降(可能从 C-index 0.82 降到 0.60)。

怎么发现问题:

  • 做 5-fold 或 10-fold 交叉验证,看 CV C-index 和 training C-index 的差距
  • 如果 training C-index = 0.82 但 CV C-index = 0.62,说明严重过拟合
  • 用外部数据集验证——如果外部验证 C-index 远低于训练集,确认过拟合

正确做法: 永远不要在训练数据上评估模型性能。最低标准是做交叉验证,最佳标准是用独立的外部数据集验证。在文章中报告的性能指标应该来自验证集而不是训练集。

数据可信度自检清单

基于以上 5 个场景,总结出一份在每个项目关键节点都应该过一遍的自检清单:

数据获取阶段:

  • 样本标签是否经过 marker 基因验证?
  • 是否存在明显的 batch 结构(不同时间/平台/实验室)?
  • 样本量是否足够支撑你计划的分析?
  • 临床信息是否完整(生存时间、分期、年龄)?

预处理阶段:

  • PCA 的 PC1 对应的是生物学因素还是技术因素?
  • 过滤掉的基因/样本比例是否合理(通常 < 30%)?
  • 归一化后 library size 差异是否消除?
  • 是否有明显的 outlier 样本需要排除?

分析阶段:

  • 是否做了多重检验校正?
  • 是否存在 circular analysis(同一数据训练+评估)?
  • 混杂因素是否被校正(age、stage、batch)?
  • 结果是否对参数选择敏感(换个阈值结论还成立吗)?

解读阶段:

  • Top 差异基因是否以核糖体/线粒体基因为主(batch effect 信号)?
  • 富集通路是否在生物学上合理?
  • 预后关联在多变量校正后是否仍然显著?
  • 效应量是否足够大(不只是统计显著)?

建立"先怀疑自己"的思维习惯

组学分析中有一个反直觉的规律:结果越好看,越应该怀疑。 完美的 PCA 分离、极低的 p 值、极高的 AUC——这些"太好了"的结果往往意味着某个地方出了问题。真实的生物学信号通常是"有噪声的显著",而不是"教科书般的完美"。

建议养成以下习惯:

  1. 每次看到显著结果,先花 5 分钟想"这可能是假的吗?" 列出 3 个可能的替代解释。
  2. 做"阴性对照"分析。 比如打乱样本标签重新跑一遍——如果打乱后还能得到类似的结果,说明你的分析流程有问题。
  3. 换一种方法重新做。 如果 DESeq2 和 edgeR 给出完全不同的结果,至少有一个是不可靠的。
  4. 问自己"如果这个结果是错的,我会怎么发现?" 然后去做那个检查。
  5. 和同事讨论。 自己很难发现自己的盲点,让别人看看你的分析流程和结果。

常见坑

  • 确认偏误:你期望看到 tumor 和 normal 有差异,所以看到差异就不再追问。但如果你期望看到的是"没有差异",你可能会更仔细地检查那些"显著"的结果。解决方法:对每个显著结果,强迫自己列出 3 个"这可能是假阳性"的理由。

  • 只看 p 值不看效应量:p = 1e-20 但 log2FC = 0.2,在 TCGA 这种大样本中很常见。统计显著但生物学无意义。解决方法:同时设置 p 值和效应量阈值(如 padj < 0.05 AND |log2FC| > 1)。

  • 不做阴性对照:跑完分析就相信结果,不验证分析流程本身是否有问题。解决方法:用 permutation(打乱标签)做阴性对照,确认你的 pipeline 在没有真实信号时不会产生假阳性。

  • 过度信任自动化 pipeline:用别人的 pipeline 跑完没有 error 就以为没问题。但 pipeline 不会告诉你"你的输入数据有问题"或"你的实验设计不适合这个分析"。解决方法:理解 pipeline 每一步在做什么,检查中间输出是否合理。

  • 发现问题后不回溯:在第 5 步发现了一个问题,修了第 5 步但没有重新跑第 1-4 步。问题可能在更早的步骤就存在了。解决方法:发现问题后从源头重新跑,不要只修补下游。

下一步

接着深入: 数据层面的可信度解决之后,下一个问题是统计层面的可信度。02 统计直觉:常见的统计学陷阱 会用具体的组学场景讲解 p-hacking、多重检验、样本量与效应量的关系。

横向延伸: 如果你想看验证策略的具体操作(代码层面),可以看 06 验证与对比:怎么知道结果不是 artifact,那里有 bootstrap、交叉验证、外部验证的完整 R 代码。

参考资源

  • Leek JT et al. (2010) "Tackling the widespread and critical impact of batch effects in high-throughput data." Nature Reviews Genetics 11:733-739. 批次效应的经典综述。
  • Baggerly KA, Coombes KR (2009) "Deriving chemosensitivity from cell lines: Forensic bioinformatics and reproducible research in high-throughput biology." Annals of Applied Statistics 3:1309-1334. 著名的 Duke 基因组学丑闻案例,展示数据错误如何导致错误结论。
  • Ioannidis JPA (2005) "Why Most Published Research Findings Are False." PLoS Medicine 2:e124. 关于假阳性和可复现性危机的经典论文。
  • Goh WWB et al. (2017) "Why Batch Effects Matter in Omics Data, and How to Avoid Them." Trends in Biotechnology 35:498-507. 组学数据中批次效应的实用指南。
  • Patil P et al. (2016) "What Should Researchers Expect When They Replicate Studies? A Statistical View of Replicability in Psychological Science." Perspectives on Psychological Science 11:539-544. 关于结果可重复性的统计学视角。
AI 陪学

让 AI 陪我学这一篇

AI 会读这篇文章后给你 3-5 步学习计划, 逐步陪你学完,最后出 1-3 道题验证你掌握得怎么样。 登录后 AI 才能记住你的进度。

静态文件

离线资料下载

手册 HTML / PDF 已在后台预生成,点击后直接下载网站静态资源。