4,489 例、22 个数据集、11 个国家:Nature Communications high-performance machine learning元分析全 R 管线拆解(附核心图)
核心图一览(Fig 2–5)
下图从上到下依次对应这条机器学习管线的四个关键环节:模型性能的三层验证(Fig 2)→ 20 个物种的特征精简(Fig 3)→ 跨疾病特异性(Fig 4)→ 分类谱与功能谱的正面对比(Fig 5)。
分析管线拆解
一、数据来源与样本设计
- 从 52 篇里筛出 22 个数据集:只保留样本量 ≥30、原始数据公开、元数据能分清病例与对照的研究;最终 4,489 例(16S 3,165 例 / 宏基因组 1,324 例),覆盖 11 个国家、4 大洲。
- 同一研究的不同批次拆开算:Wallen 的两种读长拆成两份、Boktor 的两个独立队列拆成两份,于是 16S 得到 17 个数据集、宏基因组得到 7 个——"批次不混"从数据组织就开始做。
- 分组只有 PD vs 对照:不限制病情严重程度、用药、国家。作者刻意保留异质性,因为要回答的正是"换个人群还能不能用"。
- 另外拉 AD 和 MS 的 16S 数据:只用于测试 PD 模型会不会把别的神经退行性疾病也判成 PD。
- 一句话:这不是一篇"我做了个 90% 准确率模型"的文章,而是一篇"我来审计大家模型到底能不能迁移"的文章。
二、数据处理与特征计算
- 16S 侧:每个数据集单独用 DADA2 去噪出 ASV(不同 run 单独估错误率),cutadapt 去引物,GTDB v207 注释后压到属水平,reads 少于 2,000 的样本直接剔除。
- 宏基因组侧:mOTUs v3 做种级定量,再映射到 GTDB 分类;转相对丰度并去掉 unassigned。
- 功能侧:bbduk 清洗 → kraken2 去宿主 → BWA-MEM 比对到缩减版人类肠道基因目录(1,378 万条非冗余基因)→ gffquant 定量到 KEGG KO;只保留原核来源 KO,通路与模块分别要求 ≥50%、≥60% 原核 KO。
- GMM / GBM 从 KO 推:用 omixerRpm 得到肠道代谢模块与肠脑轴模块,把"菌"翻译成"功能"。
- 5% 流行度过滤后的特征池:202 个属、1,808 个 mOTU、7,632 个 KO、581 个 KEGG 模块、144 条通路、103 个 GMM、49 个 GBM——后面所有模型都在这个池子里选特征。
- 两套变换都跑:log 标准化与 CLR;16S 另做 2,000 reads 稀释版,专门检验测序深度是不是"背锅侠"。
三、统计模型总览
- 统一在 SIAMCAT 里建模:Ridge、Elastic Net、LASSO、Random Forest,以及 LibLinear 版 Ridge/LASSO,六套分类器同台竞技。
- 主评估是 10 次重复 10 折交叉验证:一次验证产出 100 个模型,分类概率平均后再算 AUC;超参在训练集内部再套一层交叉验证,避免调参调出乐观值。
- 研究来源当作批次:先量化它解释了多少方差,再试 MMUPHin 与 bapred 的多种校正,看跨研究表现能不能救回来。
- 混杂单独查:年龄、性别、用药(Wallen 中 ≥20% 使用的 11 种药;Boktor 的 PD 用药)逐个做敏感性分析。
- 样本量与性能的关系:用线性混合模型 + ICC 拆解"测试集是谁"和"训练集多大"各占多少方差。
四、主要分析目标(Aim 1–4)
- Aim 1|单研究内部能不能分:10×10 CV × 6 种算法 × 4 档流行度阈值(5/10/20/30%)× 2 种变换,先把"最好能做到多少"摸清楚。
- Aim 2|换个研究还能不能用:cross-study validation(每个模型测遍其他所有研究)+ leave-one-study-out(留一个研究,合并其余全部训练);再把 2–6 个研究的所有组合穷举(每个留出集 57 个模型,共 399 个)。
- Aim 3|能不能更简单、更特异:在训练集内部用按研究分层的 Wilcoxon-Mann-Whitney 检验挑 FDR<0.05、效应量最大的 20 个物种重训;再把 PD 模型丢到 AD/MS 数据上看假阳性率。
- Aim 4|肠菌到底变了什么:Agresti 广义优势比 + 随机效应元分析 + BH 校正;KEGG 功能做超几何富集;年龄/性别/用药逐项排雷。
五、结果呈现逻辑
- 单研究内部很能打:平均 AUC 71.9%,宏基因组 78.3±6.5、16S 72.3±11.7;个别研究(Zhang 2020、Tan 2021)能到 95% 以上——这正是很多单研究论文敢写"90% 准确率"的来源。
- 一换研究就掉:跨研究验证平均只剩 61%(16S 60.1、宏基因组 64.2);Bedarf 研究内部 85%,跨研究平均 57.4%。
- 合并多研究能救回来一半:LOSO 平均 68%(16S 67.5、宏基因组 72.3),显著高于跨研究验证;训练样本越多,LOSO 越高(解释 15% 方差)。
- 批次校正救不了:MMUPHin、bapred 的各种方法都没有显著提升跨研究 AUC;稀释到 2,000 reads 也只差不到 1.3%——问题不在测序深度。
- 20 个物种就够:精简模型 LOSO 72.3% vs 全特征 72.4%,几乎无损;有 6 个物种在 7 个训练集里次次入选。
- 疾病特异性明显改善:单研究模型在 AD/MS 上的假阳性率平均 35.1%,LOSO 模型降到 18.7%(PD 内部基准是 10%)。
- 功能谱没有想象中香:KO、模块、通路、GMM、GBM 都没稳定超过物种谱,只有 KO 的跨研究 AUC 略高(64.8 vs 64.2)。
- 生物学落点:Lachnospiraceae 的Roseburia、Blautia、Fusicatenibacter、Agathobacter以及Faecalibacterium、Butyricicoccus在 PD 中减少;Ruthenibacterium、Bifidobacterium、Lactobacillus、Streptococcus增加;功能上多糖降解下降、色氨酸降解上升、TyrDC 富集、分泌系统与农药/溶剂降解通路富集。年龄/性别/用药可能解释的差异菌不足 23%,效应最强的那些基本不受影响。
六、一句话总结
52 篇筛成 22 个数据集 → 5% 流行度过滤 → 六套分类器 10×10 交叉验证 → 跨研究 + 留一研究双层外推 → 20 物种精简 + 跨疾病压假阳性 → 广义优势比元分析落到菌与通路。
写在最后
框架已经全部摊开,但每一步的参数细节、避坑点、结果核对清单没法在一篇短文里穷尽。下一篇会把这篇 110 个脚本里用到的每一个方法、每一个 R 包,按「数据 → 特征 → 建模 → 校正验证」四层列成一张表。
如果你正在做:
- 手里有多中心/多队列的组学数据,想回答"模型换个数据集还灵不灵"
- 毕业论文需要复现并迁移这套"内部 CV → 跨研究 → 留一研究 → 跨疾病"的验证组合
- 系统学一遍微生物组机器学习从特征表到元分析的标准流程
👉机器学习代做、一对一答疑,都在TB「万汇泛科技」(拍前可先私信你的数据类型,帮你判断能不能套这套管线)。
后续还会拆更多「开源可复现」的高分文章,关注不迷路。