预测模型,为什么要区分诊断预测和预后预测?
简单引用临床预测模型集大成之著作Clinical Prediction Models(By Ewout W. Steyerberg)
Steyerberg 在《Clinical Prediction Models》里区分:
- 诊断预测(diagnostic prediction)
- 预后预测(prognostic prediction)
并不是为了玩概念,而是因为二者在以下方面都不一样:
- 临床问题
- 时间结构
- 数据设计
- 结局定义
- 模型用途
- 评价方式
最核心的区别是:
诊断预测(diagnostic prediction)是判断“现在是否已经有某个疾病或状态”;预后预测(prognostic prediction)是判断“未来是否会发生某个结局”。
1. 诊断预测(diagnostic prediction):回答“现在有没有?”
诊断预测(diagnostic prediction)针对的是一个:
当前已经存在,但尚未被确认的状态。
例如:
| 临床问题 | 诊断预测(diagnostic prediction) |
|---|---|
| 胸痛患者是否已经有急性冠脉综合征(acute coronary syndrome, ACS)? | 预测当前是否存在急性冠脉综合征(ACS) |
| 呼吸困难患者是否已有肺栓塞(pulmonary embolism, PE)? | 预测当前是否存在肺栓塞(PE) |
| 发热患者是否已有细菌感染? | 预测当前是否存在感染 |
| 影像结节是否已经是恶性? | 预测当前病灶是否为癌 |
所以,诊断预测(diagnostic prediction)的时间逻辑是:
患者现在有症状或检查异常
↓
使用当前信息进行预测
↓
判断当前是否存在某个疾病状态
关键是:
结局(outcome)Y 在预测时其实已经存在,只是医生还不知道。
例如,肺栓塞(pulmonary embolism, PE)患者来到急诊时,肺栓塞可能已经发生了;模型只是帮助医生判断:
这个人现在有没有肺栓塞?
2. 预后预测(prognostic prediction):回答“以后会不会?”
预后预测(prognostic prediction)针对的是一个:
未来尚未发生的结局。
例如:
| 临床问题 | 预后预测(prognostic prediction) |
|---|---|
| 这个急性冠脉综合征(ACS)患者未来 30 天是否死亡? | 预测未来死亡风险 |
| 这个癌症患者未来 5 年是否复发? | 预测未来复发风险 |
| 这个住院患者出院后是否再入院? | 预测未来再入院风险 |
| 这个房颤患者未来是否发生卒中? | 预测未来卒中风险 |
| 这个患者未来是否发生静脉血栓栓塞(venous thromboembolism, VTE)? | 预测未来血栓事件 |
预后预测(prognostic prediction)的时间逻辑是:
患者当前处于某个起点状态
↓
使用基线信息进行预测
↓
判断未来某段时间内是否发生结局
关键是:
结局(outcome)Y 在预测时还没有发生。
3. 为什么必须区分?因为时间结构完全不同
这是最重要的一点。
3.1 诊断预测(diagnostic prediction)的时间结构
诊断模型通常没有真正的随访时间(follow-up time)。
它关心的是:
在当前诊疗时点,患者是否已有目标疾病?
例如:
胸痛发生
↓
到急诊
↓
心电图(electrocardiogram, ECG)/ 肌钙蛋白(troponin)/ 病史
↓
判断当前是否为急性冠脉综合征(ACS)
这里的重点不是未来会不会发生急性冠脉综合征,而是患者现在是否已经有急性冠脉综合征。
3.2 预后预测(prognostic prediction)的时间结构
预后模型必须定义:
| 元素 | 含义 |
|---|---|
| 起点时间(time zero / baseline) | 风险预测开始的时间点 |
| 预测窗口(prediction horizon) | 预测未来多长时间 |
| 随访时间(follow-up time) | 观察患者多久 |
| 结局发生时间(event time) | 事件何时发生 |
| 截尾(censoring) | 随访未完成,或事件未被观察到 |
例如:
出院当天 = 起点时间(time zero)
↓
预测未来 30 天是否再入院
↓
随访 30 天
如果起点时间(time zero)定义不清,预后模型很容易出现偏倚(bias),尤其是:
| 中文 | 英文 |
|---|---|
| 不朽时间偏倚 | immortal time bias |
| 数据泄漏 | data leakage |
| 未来信息泄漏 | future information leakage |
| 不恰当使用未来信息 | inappropriate use of future information |
4. 诊断预测(diagnostic prediction)的结局是“目标疾病状态”
诊断预测里的结局(outcome)通常是:
是否存在某个疾病、病理状态或诊断类别。
例如:
| 诊断结局(diagnostic outcome) | 中文 |
|---|---|
| 疾病存在 vs 疾病不存在(disease present vs absent) | 是否有病 |
| 恶性 vs 良性(malignant vs benign) | 病灶是否为恶性 |
| 细菌感染 vs 病毒感染(bacterial vs viral infection) | 感染类型 |
| 肺栓塞存在 vs 肺栓塞不存在(PE present vs PE absent) | 有无肺栓塞 |
诊断模型通常需要一个:
参考标准(reference standard)
或
金标准(gold standard)
例如:
| 疾病 | 参考标准(reference standard) |
|---|---|
| 肺栓塞(pulmonary embolism, PE) | CT 肺动脉造影(computed tomography pulmonary angiography, CTPA) |
| 急性冠脉综合征(acute coronary syndrome, ACS) | 连续肌钙蛋白(serial troponin)+ 心电图(ECG)+ 临床判定 |
| 癌症 | 病理(pathology) |
| 细菌感染 | 培养(culture)/ 专家判定诊断 |
所以,诊断预测(diagnostic prediction)的一个核心问题是:
目标疾病本身如何被确认?参考标准是否准确?是否所有患者都接受了参考标准?
这会引出诊断预测特有的问题,例如:
| 中文 | 英文 |
|---|---|
| 验证偏倚 | verification bias |
| 部分验证偏倚 | partial verification bias |
| 参考标准不完美 | imperfect reference standard |
| 谱偏倚 | spectrum bias |
5. 预后预测(prognostic prediction)的结局是“未来事件”
预后预测里的结局(outcome)通常是:
在某个未来时间窗口内是否发生某个临床事件。
例如:
| 预后结局(prognostic outcome) | 中文 |
|---|---|
| 30 天死亡(30-day mortality) | 30 天死亡 |
| 1 年复发(1-year recurrence) | 1 年复发 |
| 5 年总生存(5-year overall survival) | 5 年总生存 |
| 再入院(hospital readmission) | 再入院 |
| 主要不良心血管事件(major adverse cardiovascular events, MACE) | 主要不良心血管事件 |
| 静脉血栓栓塞发生(VTE occurrence) | 静脉血栓栓塞发生 |
预后预测必须明确:
从什么时候开始预测?预测多长时间?结局如何定义?没有发生结局的人随访多久?
所以它天然涉及:
事件时间分析(time-to-event analysis)
或
生存分析(survival analysis)
6. 两者的预测变量选择逻辑也不同
预测变量(predictor)在诊断预测和预后预测中的含义不同。
6.1 诊断预测(diagnostic prediction)的预测变量
诊断模型使用的是:
当前能帮助判断疾病是否已经存在的信息。
例如:
| 预测变量类型 | 英文 | 例子 |
|---|---|---|
| 症状 | symptom | 胸痛(chest pain)、呼吸困难(dyspnea)、发热(fever) |
| 体征 | sign | 心动过速(tachycardia)、低氧(hypoxia) |
| 当前检查 | current test | 心电图(ECG)、D-二聚体(D-dimer)、肌钙蛋白(troponin) |
| 影像特征 | imaging feature | 结节大小(nodule size)、边界(border)、密度(density) |
| 病史 | medical history | 癌症史(cancer history)、既往静脉血栓栓塞(prior VTE) |
这些预测变量(predictor)与当前疾病状态高度相关。
6.2 预后预测(prognostic prediction)的预测变量
预后模型使用的是:
当前能预测未来风险的信息。
例如:
| 预测变量类型 | 英文 | 例子 |
|---|---|---|
| 基线严重程度 | baseline severity | 当前病情严重程度 |
| 合并症 | comorbidities | 糖尿病、高血压、慢性肾病等 |
| 生物标志物 | biomarkers | B 型利钠肽(BNP)、C 反应蛋白(CRP)等 |
| 已接受治疗 | treatment received | 是否接受某治疗 |
| 功能状态 | functional status | 日常生活活动能力(activities of daily living, ADL)、衰弱(frailty) |
| 既往事件 | prior events | 既往卒中、既往静脉血栓栓塞(VTE) |
| 纵向趋势 | longitudinal trends | 实验室指标变化趋势 |
预后模型特别强调:
预测变量(predictor)必须在起点时间(time zero)时已经可获得,不能偷偷使用未来信息。
7. 评价指标有重叠,但重点不同
两类模型都可以评价:
- 区分能力(discrimination)
- 校准(calibration)
但细节和重点不同。
7.1 诊断预测(diagnostic prediction)常见指标
| 指标 | 英文 |
|---|---|
| 敏感度 | sensitivity |
| 特异度 | specificity |
| 阳性预测值 | positive predictive value, PPV |
| 阴性预测值 | negative predictive value, NPV |
| 似然比 | likelihood ratio |
| 受试者工作特征曲线 | receiver operating characteristic curve, ROC curve |
| 曲线下面积 | area under the curve, AUC |
| 校准 | calibration |
诊断模型常常用于判断:
谁需要进一步检查?谁可以排除疾病?谁需要立即治疗?
因此,以下指标很重要:
- 敏感度(sensitivity)
- 特异度(specificity)
- 阴性预测值(negative predictive value, NPV)
- 阳性预测值(positive predictive value, PPV)
- 决策阈值(decision threshold)
例如,D-二聚体(D-dimer)在肺栓塞(PE)诊断中强调:
- 高敏感度(high sensitivity)
- 高阴性预测值(high negative predictive value, high NPV)
因为它常用于:
排除诊断(rule-out)
7.2 预后预测(prognostic prediction)常见指标
| 指标 | 英文 |
|---|---|
| 一致性指数 | concordance index, C-index |
| 时间依赖曲线下面积 | time-dependent area under the curve, time-dependent AUC |
| 整体校准 | calibration-in-the-large |
| 校准斜率 | calibration slope |
| Brier 分数 | Brier score |
| 决策曲线分析 | decision curve analysis |
| 观察/预测比值 | observed/expected ratio, O/E ratio |
预后模型常常用于:
- 风险分层(risk stratification)
- 随访强度调整
- 预防性治疗
- 患者沟通
- 资源分配
所以:
校准(calibration)尤其重要。
因为预后模型经常输出的是:
“未来 5 年风险为 12%。”
如果校准不好,这个数字本身就不可信。
8. 临床用途不同:诊断模型偏“当前决策”,预后模型偏“未来管理”
| 维度 | 诊断预测(diagnostic prediction) | 预后预测(prognostic prediction) |
|---|---|---|
| 核心问题 | 现在有没有病? | 未来会不会发生结局? |
| 时间方向 | 当前状态 | 未来事件 |
| 典型用途 | 纳入诊断 / 排除诊断(rule-in / rule-out) | 风险分层(risk stratification)/ 管理 |
| 关键设计 | 参考标准(reference standard) | 起点时间(time zero)+ 随访(follow-up) |
| 典型偏倚 | 验证偏倚(verification bias) | 截尾(censoring)、竞争风险(competing risk)、数据泄漏(data leakage) |
| 常见模型 | 逻辑回归(logistic regression)、诊断评分(diagnostic score) | Cox 模型(Cox model)、生存模型(survival model)、风险模型(risk model) |
| 临床例子 | 用于肺栓塞诊断的 Wells 评分(Wells score for PE diagnosis) | 用于未来卒中风险的 CHA₂DS₂-VASc 评分(CHA₂DS₂-VASc for future stroke risk) |
9. 为什么这对医学人工智能特别重要?
医学人工智能(medical artificial intelligence, medical AI)论文中,经常会把这两类问题混在一起。
例如,一个模型声称预测:
脓毒症(sepsis)
但需要追问:
它是在诊断当前已经存在的脓毒症,还是预测未来 6 小时、12 小时、24 小时会发生脓毒症?
这两个问题完全不同。
如果模型使用了脓毒症诊断之后才出现的变量,比如:
- 抗生素
- ICU 转入
- 血培养结果
- 后续乳酸(lactate)
那么它可能不是在预测未来脓毒症,而是在识别已经发生的脓毒症,甚至发生了:
数据泄漏(data leakage)
再比如静脉血栓栓塞(venous thromboembolism, VTE):
| 问题 | 类型 |
|---|---|
| 这个呼吸困难患者现在是否已有肺栓塞(PE)? | 诊断预测(diagnostic prediction) |
| 这个术后患者未来 30 天是否会发生静脉血栓栓塞(VTE)? | 预后预测(prognostic prediction) |
| 这个肿瘤患者未来 6 个月静脉血栓栓塞(VTE)风险是多少? | 预后预测(prognostic prediction) |
| 这个腿肿患者现在是否已有深静脉血栓形成(deep vein thrombosis, DVT)? | 诊断预测(diagnostic prediction) |
这就是 Steyerberg 要区分二者的原因:
同样叫预测(prediction),但临床问题完全不同。
10. 与 Shmueli 的“解释 vs 预测”有什么关系?
Shmueli 区分的是:
解释(explanation) vs 预测(prediction)
Steyerberg 则是在预测(prediction)内部继续区分:
诊断预测(diagnostic prediction) vs 预后预测(prognostic prediction)
也就是说:
统计/临床建模
↓
解释性建模 vs 预测性建模
↓
诊断预测 vs 预后预测
Shmueli 关心的是:
模型是在解释机制,还是预测结果?
Steyerberg 进一步问:
如果是在预测,那么预测的是当前疾病状态,还是未来临床结局?
这两个区分可以放在一起理解:
| 问题 | 类型 |
|---|---|
| 吸烟是否导致肺癌? | 解释性 / 因果(explanatory / causal) |
| 这个肺结节现在是不是癌? | 诊断预测(diagnostic prediction) |
| 这个肺癌患者未来 5 年是否复发? | 预后预测(prognostic prediction) |
| 哪些变量最能预测复发? | 预测性(predictive) |
| 某个治疗是否降低复发? | 解释性 / 因果(explanatory / causal) |
11. 最实用的判断方法
看到一篇临床预测模型(clinical prediction model)论文,可以先问三个问题。
11.1 第一步:它是不是预测(prediction)?
如果问题是:
“X 是否导致 Y?”
这是:
解释 / 因果(explanation / causality)
如果问题是:
“给定 X,预测 Y。”
这是:
预测(prediction)
11.2 第二步:如果是预测(prediction),Y 是现在已经存在,还是未来才发生?
| 判断 | 类型 |
|---|---|
| Y 已经存在,只是尚未确认 | 诊断预测(diagnostic prediction) |
| Y 未来才会发生 | 预后预测(prognostic prediction) |
11.3 第三步:模型变量是否符合时间逻辑?
| 类型 | 关键检查 |
|---|---|
| 诊断预测(diagnostic prediction) | 预测变量(predictors)是否在诊断决策时可获得?参考标准(reference standard)是否可靠? |
| 预后预测(prognostic prediction) | 预测变量(predictors)是否在起点时间(time zero)可获得?是否有数据泄漏(data leakage)?随访(follow-up)和截尾(censoring)是否处理正确? |
12. 一句话总结
Steyerberg 区分诊断预测(diagnostic prediction)和预后预测(prognostic prediction),是因为:
诊断预测是在估计“当前是否已有疾病”,预后预测是在估计“未来是否会发生结局”。二者虽然都属于预测(prediction),但时间结构、数据设计、结局定义、偏倚来源、评价指标和临床用途都不同。
对临床医生来说,最直观的区别是:
诊断模型帮助医生判断“现在是什么病”;预后模型帮助医生判断“接下来会怎样”。