mcpField
B
biomarker-discovery

biomarker-discovery

github.com/awslabs数据与数据库6876 次安装4 周前更新
代码仓库

关于 biomarker-discovery

面向生物标志物研究设计与验证的方法学指导技能,适用于评估候选标志物及高维数据分析方案。它强调明确研究意图、避免数据泄漏,并规划外部验证与临床决策评估。

主要功能

  1. 01区分预后、预测与诊断意图
  2. 02审查样本、事件数及数据结构
  3. 03规划嵌套交叉验证与特征筛选
  4. 04识别数据泄漏风险
  5. 05制定分层验证与临床效用评估

适用场景

  1. 01设计候选生物标志物验证方案
  2. 02审查组学数据的特征筛选流程
  3. 03评估单队列 AUC 结果的可靠性
  4. 04判断标志物是否达到外部验证要求

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/awslabs/hcls-agent-skills --skill biomarker-discovery

安装后在 Claude Code 中输入/biomarker-discovery确认已加载。

详细介绍

生物标志物发现与验证

概述

此技能旨在教会 Agent 如何思考生物标志物的发现与验证,而不是如何运行特定流程。只有满足以下三个条件,生物标志物才有用:(1)用途定义明确(预后、预测或诊断);(2)发现统计真实可靠(无数据泄漏、惩罚方法恰当、采用嵌套重采样);(3)验证计划能够完成外部重复验证,并证明其会改变临床决策。

在编写代码之前,使用此技能审视方案、找出方法学缺陷,并引导用户选择合适的设计。

用法

在用户出现以下情况时调用此技能:

  • 描述候选标志物(基因、蛋白质、影像特征、EHR 变量、综合评分),并询问如何开发或验证。
  • 拥有高维数据集(转录组学、蛋白质组学、影像组学、甲基化),希望筛选特征。
  • 询问哪种交叉验证方案、指标或样本量合适。
  • 根据单个队列上的单个 AUC,声称某个生物标志物“有效”。
  • 希望结合多个组学层或模态。
  • 询问某个生物标志物是否已可用于临床或提交监管审批。

Agent 应按以下步骤回应:

  1. 明确用途——首先要求将用途归类为预后、预测或诊断。
  2. 审查数据——样本量、事件数、研究中心结构、缺失情况、时间起点。
  3. 建议设计——特征选择、重采样、指标、验证层级。
  4. 指出与用户设置相关的数据泄漏风险。
  5. 说明在当前情境下,这个生物标志物达到“已验证”意味着什么。

回复格式

  • 开头直接给出建议或分类(≤3 句话)
  • 按以下结构组织:建议 → 理由(引用具体标准/阈值)→ 注意事项
  • 比较时使用表格;列出标准时使用项目符号
  • 省略用户已了解的背景——用户是在提问
  • 目标:200–400 词,除非用户要求详尽说明 此技能中的决策树和框架仅供内部推理使用。使用它们得出结论,但不要在回复中复述。只给出最终建议及其证据。

核心概念

1. 生物标志物的用途决定一切

首先要问:这个生物标志物应该为哪项决策提供依据?

用途回答的问题最低限度的设计关键估计目标
预后无论接受何种治疗,这位患者的结局会如何?单臂/观察性队列,并随访结局风险比、C 指数、校准度
预测哪些患者从治疗 A 中获益多于治疗 B?RCT,或对两组均有充分模拟的目标试验治疗 × 生物标志物交互作用
诊断这位患者当前是否患有该疾病?覆盖完整疾病谱的病例-对照研究敏感度、特异度、PPV/NPV

分类所带来的影响:

  • 没有单臂参照,就不能根据预测性设计提出预后主张;单臂队列也不能支持预测主张——因为没有反事实组。
  • 仅在明确病例与健康对照中评估的诊断生物标志物会夸大性能;必须在其实际应用所涉及的临床范围内进行测试(轻症、早期、合并症、类似疾病)。
  • 混淆预后与预测,是肿瘤学生物标志物论文中最常见的错误。如果用户声称“X 高的患者使用药物 Y 后效果更好”,应询问对照组是否也有相同结果——如果是,那么这属于预后作用,而非预测作用。
2. 特征选择策略

根据问题的特点选择方法,而不是根据熟悉程度。

方法优势失效场景
LASSO (L1)解稀疏、易解释、速度快会从相关特征组中任意选出一个特征
Elastic net (L1 + L2)能处理相关特征,并将它们分组需要调节两个超参数
随机生存森林重要性能捕捉非线性关系和交互作用容易偏向高基数特征;重要性 ≠ 因果关系
稳定性选择报告在 >60% 的子样本中被选中的特征;控制错误发现计算开销较大;需要基础选择器(通常是 LASSO)
单变量筛选简单忽略多变量结构;在高维数据中,几乎总不应单独使用
决策树:该选择哪种特征选择方法?
Start
│
├── Is n < p (more features than samples)?
│     ├── Yes → Use penalization (LASSO / elastic net) OR stability selection.
│     │         Never rely on univariate filtering alone.
│     └── No  → Continue.
│
├── Are features strongly correlated (e.g., gene modules, radiomic clusters)?
│     ├── Yes → Elastic net (groups correlated features) or
│     │         group LASSO if groupings are known a priori.
│     └── No  → LASSO is fine.
│
├── Do you suspect non-linear effects or interactions?
│     ├── Yes → Random forest / gradient-boosted trees for importance,
│     │         confirm with permutation importance (not impurity-based).
│     └── No  → Stay with linear penalized models.
│
└── Need reproducibility / publication-grade selection?
      └── Wrap whatever base method above in stability selection
          (subsample → refit → keep features chosen in ≥60% of runs).
3. 嵌套交叉验证不可或缺

生物标志物发现必须使用嵌套交叉验证(CV):

  • 外层循环 — 在留出的折上估计泛化性能。
  • 内层循环 — 仅在训练折上进行特征选择和超参数调优。

规则:

  • 按患者划分。 如果一位患者贡献了多个样本(纵向实验室检查、多处病灶、双侧成像),切勿按行划分。共享患者导致的信息泄漏是性能被悄然抬高的最常见原因。
  • 按结局分层(可行时也按中心/批次分层)。
  • 所有从数据中学习的内容都必须放在内层循环中: 特征选择、插补参数、归一化统计量、缩放器均值/标准差、批次校正拟合、PCA 载荷。
  • 报告各外层折的分布,而不只是均值——各折之间的高方差是一个警示信号。
4. 数据泄漏——常见问题

数据泄漏会使后续所有结果失效。请检查以下情况:

  1. 在完整数据集上进行特征选择,然后再做 CV。 已选出的特征已经“知道”测试标签。始终在 CV 循环内进行选择。
  2. 时间泄漏。 临床医生已怀疑结局,因此才开具某项实验室检查。该特征是否存在本身就编码了标签。定义明确的时间起点(例如入院、诊断、随机分组),并且只使用该时间点之前可获得的数据。
  3. 特征中包含结局信息。 根据定义属于结局下游的变量(例如用“接受临终关怀”预测死亡;用“肿瘤 IV 期”预测转移)会造成循环论证。
  4. 预处理泄漏。 在完整数据集上计算归一化均值、插补中位数、缩放器统计量或 PCA,会将测试集分布泄漏到训练集中。仅在训练折上拟合,再应用于测试集。
  5. 批次/中心泄漏。 如果所有病例都来自中心 A,而所有对照都来自中心 B,模型学到的是中心,而不是生物学特征。
  6. 通过代理变量产生的目标泄漏。 就诊 ID、医生 ID 或医嘱时间戳可能成为结局的代理。
5. 按意图选择评估指标

选错指标会掩盖或夸大效应。

  • 预后(事件发生时间):
    • C-index(删失数据使用 Harrell's 或 Uno's)。
    • 临床相关时间点的时变 AUC(例如 1、3、5 年)。
    • 校准(总体校准度、校准斜率、校准图)。只有区分度而没有校准是不够的。
  • 预测:
    • 治疗 × 生物标志物的交互项(p 值和效应量)。
    • 亚组特异性风险比或风险差——同时报告点估计和置信区间。
    • 定性交互(获益方向反转)比定量交互(获益幅度不同)证据更强。
  • 诊断:
    • 在预先指定的临床阈值下计算敏感度和特异度,而不是使用能让测试集上的 Youden's J 达到最大的阈值。
    • AUROC 作为汇总指标;当患病率较低且重点关注阳性类别时,使用 AUPRC。
    • PPV 和 NPV——二者取决于患病率。报告所假设的患病率,并根据部署时的患病率重新估算 PPV/NPV。

点估计旁边始终应报告置信区间(自助法或解析法)。

6. 验证层级

生物标志物需要逐级通过验证。不要跳级。

  1. 内部验证——在发现队列上进行嵌套交叉验证或自助法验证,并校正乐观偏倚。
  2. 内部-外部验证——在发现数据集中采用留一站点或留一批次法,检验站点/批次稳健性。
  3. 外部验证——使用独立队列,最好由不同团队收集,并预先指定模型和阈值(锁定)。
  4. 前瞻性验证——实时使用生物标志物,之后再评估结局。大多数监管申报都要求此项。

至少完成第 3 步,且在查看外部数据之前锁定模型和阈值,生物标志物才算经过验证。在外部数据上重新调优属于发现,不是验证。

决策树:应采用哪个验证层级?
Start
│
├── Only one cohort available?
│     └── Internal validation only (nested CV + bootstrap optimism correction).
│         Label result as "discovery", not "validated".
│
├── Multi-site data within a single study?
│     └── Add internal-external (leave-one-site-out).
│         Report performance per site, not just pooled.
│
├── Truly independent cohort available?
│     └── Lock model + threshold → evaluate once → report with CIs.
│         Pre-register the analysis plan if possible.
│
└── Intended for clinical deployment / regulatory submission?
      └── Prospective validation on the target population,
          under intended-use conditions, with the locked model.
7. 样本量与每变量事件数

对于 Cox 和逻辑回归模型:建模时考虑的每个候选变量应争取有 10–20 个事件(而不只是最终入选的变量)。只统计 LASSO 之后选出的变量是错误的——变量筛选本身用到了整个候选变量池。

在组学、影像组学等高维场景中,无法达到每变量事件数要求。可通过以下方法弥补:

  • 使用惩罚方法(LASSO/弹性网)或贝叶斯收缩先验。
  • 使用稳定性选择控制入选特征的假发现率。
  • 通过自助法校正乐观偏倚后的性能(.632+ 或 Harrell's 自助法乐观偏倚校正)。
  • 预先指定后续纳入分析的特征数量。

对于事件发生时间结局,限制因素是事件数,而非样本量。1000 名患者只有 30 个事件 ≈ 一项仅有 30 个事件的研究。

8. 多组学整合

整合转录组学 + 蛋白质组学 + 成像 + 临床数据时:

  • 早期整合(拼接所有特征,拟合一个模型):维度高,易受尺度差异和模态缺失影响。仅适用于 n 非常大的情况。
  • 中期整合(MOFA、典型相关、核方法、共享潜在因子):适合寻找不同层之间共享的生物学特征。适用于中等 n。
  • 晚期整合(每种组学分别拟合一个模型,再通过堆叠或简单平均合并预测结果):n 较小时最稳健,可容忍患者层面的模态缺失,也最容易逐种模态进行验证。

样本量较小到中等时,默认采用晚期整合。只有在 n 足够且目标是解释共享因子时,才升级为中期或早期整合。

模态缺失是常态,而非例外——从一开始就应为此做好设计。

9. 临床实用性——决策检验

如果一个生物标志物的 AUC 很出色,却不会改变任何决策,那它就没有实用价值。对于每个候选项,Agent 都应要求用户回答:

  • 这个生物标志物会改变什么决策?(治疗还是不治疗、升级还是降级、活检还是观察、纳入还是排除。)
  • 阈值是多少? 必须预先指定阈值,并使其与决策的成本和收益挂钩。
  • 在合理的阈值范围内,相较于全部治疗和全部不治疗,净获益是多少? 使用决策曲线分析。
  • 假阳性或假阴性会伤害哪些人? 可接受的发生率是多少?

如果用户无法回答这些问题,那么临床实用性就无法定义——无论 AUC 如何。

不应使用此技能的情况

  • 已纳入临床指南的成熟且经过验证的生物标志物(例如 HER2、BRCA1/2)——应改用符合指南的检测方案
  • 临床部署或 CLIA/CAP 实验室验证决策——这些需要监管和实验室专业知识,而非发现方法
  • 伴随诊断开发——这是监管和生产问题,而非生物标志物发现问题

需要升级至人工专家的情况

  • 生物标志物将用于临床试验中的治疗选择——适应性设计需要生物统计学家审核批准
  • 需要进行分析验证(灵敏度、特异性、跨平台重现性)——需要湿实验室专业知识
  • 需要对可能导致某个亚组患者被拒绝治疗的生物标志物驱动型患者分层进行伦理审查

常见错误

  • 错误: 根据单臂研究宣称某个生物标志物具有“预测性” 正确: 要求设置对照组(RCT 或模拟目标试验),以估算治疗与生物标志物之间的交互作用 原因: 没有反事实对照组,就无法区分预后作用和预测作用——该生物标志物可能只是在标记预后,与治疗无关

  • 错误: 在完整数据集上进行特征选择,然后在缩减后的特征集上运行 CV 正确: 始终在 CV 内层循环中进行特征选择,使每个折都独立选择特征 原因: 已选特征已经“知晓”测试标签,会抬高性能估计值,并产生无法复现的模型

  • 错误: 当一名患者贡献多个样本时,按行拆分数据 正确: 按患者级别拆分,确保同一患者的所有样本都留在同一折中 原因: 重复测量、双侧病灶和纵向实验室数据会导致患者身份在不同折之间泄漏,从而抬高表面上的模型性能

  • 错误: 在测试集上调整决策阈值 正确: 在训练数据上锁定阈值,或根据临床成本效益分析预先指定阈值 原因: 在测试数据上优化阈值会导致对评估集过拟合,并产生不可靠的运行特性

  • 错误: 报告来自病例与对照各占 50% 的样本的 PPV/NPV,并暗示结果具有普遍适用性 正确: 使用贝叶斯定理,按部署环境中的患病率重新估算 PPV 和 NPV 原因: PPV 和 NPV 取决于患病率——富集样本中的数值无法反映真实世界的患病率,具有误导性

  • 错误: 报告模型性能时忽略校准 正确: 除区分度外,始终报告校准结果(整体校准、校准斜率、校准图) 原因: 区分度良好但校准较差,会产生临床上危险的概率估计,误导决策

  • 错误: 只在特征选择后计算每变量事件数 正确: 计算 EPV 时,应纳入建模过程中考虑的所有候选变量,而不仅是最终选出的变量 原因: 特征选择过程本身使用了完整的候选池——有效自由度反映的是原始维度

  • **错误:**基于发现队列的交叉验证,便宣称某个生物标志物已“验证” **正确:**要求在独立队列中进行外部重复验证,并锁定模型、预先设定阈值 **原因:**交叉验证仅属于内部验证——它可以估计乐观偏差,但不能证明模型具有泛化能力

  • **错误:**将生物标志物信号与中心、批次、平台或扫描仪效应混为一谈 **正确:**始终检查中心/批次对结局的预测能力是否与生物标志物相当;将中心纳入协变量,或采用留一中心验证 **原因:**如果所有病例都来自一个中心,而对照都来自另一个中心,模型学到的将是中心身份,而非生物学信息

  • **错误:**将未来信息用作特征(例如,因临床怀疑而开具的实验室检查) **正确:**明确一个干净的时间起点,并且只使用该时点之前可获得的数据 **原因:**因怀疑而开具的实验室检查编码了怀疑本身——这是时间泄漏,而非预测信号

  • **错误:**在样本量较小时过早整合多组学数据 **正确:**当样本量较小到中等时,采用后期整合(针对每种组学分别拟合一个模型,再通过堆叠组合预测) **原因:**在只有几百名患者时,跨层拼接数千个特征会导致模型过拟合批次效应,而非生物学信息

  • **错误:**只报告点估计,不提供置信区间 **正确:**始终为所有性能指标提供自助法或解析置信区间 **原因:**单一数值会掩盖不稳定性——C 指数为 0.78、95% CI 为 [0.55, 0.92],传达的信息截然不同

  • **错误:**只优化 AUC,忽略临床效用 **正确:**进行决策曲线分析,证明相较于全部治疗和均不治疗策略的净获益 **原因:**一个不会改变任何临床决策的 0.85 AUC,不如一个能可靠改变某项临床决策的 0.70 AUC

  • **错误:**在外部验证数据上“稍微”重新训练或调优模型 **正确:**在查看外部数据之前彻底锁定模型——任何调优都会使验证重新变成发现 **原因:**即使在外部数据上进行微小调整,也会破坏其独立性,使“验证”变成循环论证

  • **错误:**报告生物标志物性能时跳过决策曲线分析 **正确:**始终在合理的阈值范围内提供净获益曲线 **原因:**没有净获益分析,就无法证明生物标志物能帮助患者——只能证明它与结局相关

参考文献

评论

支持 Markdown