临床预测模型:模型的验证
2019-04-26王俊峰章仲恒周支瑞谷鸿秋
王俊峰,章仲恒,周支瑞,谷鸿秋
模型验证是临床预测模型开发过程中不可或缺的步骤。良好的临床预测模型,必定是经过了严格的内部验证及外部验证流程。正因如此,《个体预后与诊断的多变量预测模型透明报告》TRIPOD中,也将模型验证作为单独的研究类别,并为模型验证专门设置相应的报告条目[1,2],足见模型验证对临床预测模型研究的重要性。相比于模型开发的蓬勃发展,模型验证却存在一定程度的滞后。Siontis等考察了127个新开发的预测模型,发现只有32个模型(25%)经过了外部验证[3]。很多临床预测模型研究者,只重视模型的开发,却忽略了模型验证,造成同一疾病或终点事件的新预测模型不断涌现,但却未被有效验证,导致最终仅少数模型可应用于临床实践[4]。鉴于此,本文将对临床预测模型中模型验证的评价指标、流程、方法等内容做一系统介绍。
1 评价模型表现的指标
评价临床预测模型的指标主要包括模型区分度和模型校准度[5]。此外,综合区分改善度、净重分类改善度等指标,主要用于模型的比较或评价单个预测因子的预测效能增加值,本文不做讨论。
1.1 模型的区分度区分度(Discrimination),有时也被称为模型的判别能力或排序能力,指模型区分发生终点事件的个体与未发生终点事件的个体的能力,终点事件可以是发病、复发、死亡,伤残及并发症。一个具有良好区分度的模型,可将发生事件组的风险得分与未发生事件组的风险得分尽可能分散开(图1,模型2),而区分度低的模型,则不具备这样的能力(图1,模型1)。最常用的衡量区分度的指标是一致性统计量(Concordance statistics)也被称为C统计量,可以解释为随机抽取一个发生事件的个体和一个未发生事件的个体,前者模型得分高于后者模型得分的概率。C统计量的取值范围为0~1,C统计量越接近1表示模型区分度越好,C统计量等于0.5时表示模型没有预测能力,C统计量小于0.5表示模型预测与实际结果相反。若终点事件是二分类变量,C统计量与ROC曲线下面积(AUC)相同;若终点事件是事件-时间变量,最常用的是Harrell提出的Harrell's C统计量[6]。但在删失较多的情况下,Harrell's C统计量会高估模型表现[7],Uno等提出了一种新的C统计量计算方法,即Uno's C统计量,可在删失数据较多的情况下得到可靠的估计[8]。除了这两种全局C统计量,对于生存数据,许多研究者还提出了基于不同删失数据处理方法的时间依赖C统计量,用于评价特定时间点的模型区分度[9,10]。
图1 模型区分度与AUC值
从区分度的概念可知,区分度仅取决于风险评分或预测概率的排序,不能体现模型绝对风险概率的预测是否准确。因此,我们还需更精确的量化指标来考察模型,即模型的校准度。
1.2 模型的校准度校准度(Calibration)关注的是模型的绝对风险预测值是否准确,即模型预测的事件发生概率与观察到的事件发生概率的一致程度。最常见的展示方式是绘制校准度图,即将所有个体首先按模型预测概率从低到高排序,并按10等份分为10组,分别计算每组预测概率的均值和事件发生比例,然后以模型预测概率作为X轴,以实际事件的比例为Y轴,绘制散点图。校准度较好的模型,散点应沿45°斜线排列。很多研究者会用Hosmer-Lemeshow拟合优度检验来比较预测概率和实际发生概率是否有显著性差异,然而该检验得到的P值并不能用来量化模型校准度,所以不推荐此检验[11]。若要以量化的方式衡量校准度,可使用Brier得分,计算方法为(Y-p)2,其中Y为实际观测到的结局变量值(0或1),p为预测模型给出的预测概率[12,13]。Brier得分取值范围为0~0.25,Brier得分越接近0表示模型校准度越好,Brier得分等于0.25时表示模型没有预测能力。对于一个特定模型,Brier得分的最大可能值取决于终点事件发生的比例,有时也用尺度调整后的Brier得分来衡量模型校准度[12]。
1.3 校准度和区分度的联系一个好的预测模型应同时具备较高的区分度和校准度,但这两个指标并非完全孤立。区分度是保证模型表现的基础,是模型拥有良好校准度的前提条件。若模型区分度较高,但校准度不佳,可通过重新校准提高模型表现[14];但若模型区分度不佳,通常无法获得良好的校准度。因此,在模型验证中,尤其是模型开发时的内部验证中发现模型区分度较低,则无必要继续评估其他表现指标,而应该首先考虑改善模型的区分度[5]。
2 模型验证
模型验证即对模型表现指标,如区分度,校准度等进行考察的过程。在介绍模型验证的步骤之前,首先明确几个基本概念。模型开发队列(Derivation cohort)指的是用于模型开发的人群,此处的模型开发是广义的上概念,是指建立模型的全过程,包括变量转换、变量筛选、模型拟合以及内部验证。与之相对应的是模型验证队列(Validation cohort),通常特指独立于模型开发队列的外部验证队列。模型验证使用开发队列还是验证队列决定了模型验证的性质是属于内部验证还是外部验证。开发队列和验证队列与训练集(Training set)和验证集(Validation set)的概念不同,不可混淆。模型开发队列和验证队列是研究设计层面的概念,而训练集和验证集是模型开发和评估过程中的技术术语:训练集用于模型拟合,验证集用于评估训练集拟合的模型的表现。
2.1 内部验证 正如前文所述,内部验证是基于模型开发队列数据进行的验证,通常内部验证也是作为模型开发的一部分,其目的是检验模型开发过程的可重复性(Reproducibility),并且防止模型过度拟合导致高估模型的性能[15]。需注意的是,内部验证是针对整个建模过程中的所有步骤,包括变量转换、变量筛选及模型选择,甚至需要包括对数据缺失值的插补,而不是仅针对最终模型进行验证。而且,内部验证不等于直接在模型开发队列数据中评价模型表现,内部验证的实施通常需借助数据分割或重抽样方法来实现。
2.1.1 随机拆分验证模型的内部验证,最初的做法是将模型开发队列随机分为训练集和验证集两部分,通常两者比例为1:1或2:1。以2:1为例,首先从开发队列中随机抽取2/3的数据作为训练集,剩余1/3数据作为验证集。通常这一拆分过程仅进行一次,在开发队列样本量较小的情况下,是对开发数据极大的浪费。
2.1.2 交叉验证交叉验证又称K折检验,是随机拆分验证的改进。以K=10的10折验证为例:将开发队列随机分为10份,每次利用其中9份作为训练集,剩余1份作为验证集,并重复这一过程(图2,左)。但交叉验证对于模型开发数据的使用效率不佳,所以逐渐被Bootstrap方法取代[15,16]。
2.1.3 Bootstrap方法用Bootstrap方法进行内部验证,是通过在模型开发队列中进行有放回抽样,构造一个相同样本量大小的Bootstrap重抽样样本,并将此样本作为训练集,将模型开发队列作为验证集评价模型性能重复此过程n次,就可得到模型在内部验证中的表现[17](图2,中)。Bootstrap方法根据技术细节,又细分为简单Bootstrap法,加强Bootstrap法和0.632法[17]。简单法最为直观,直接将n次重抽样获得的模型表现进行平均作为内部验证表现;加强法通过计算模型表现在训练集和验证集中的差异,得到模型表现的高估值(optimism),并根据高估值调整模型表现;0.632法用另外一种方法来计算高估值,需要用到Bootstrap重抽样中未被选择的样本作为验证集。这些方法中,加强Bootstrap法最为常用。
2.1.4 “内部-外部”交叉验证“内部-外部”交叉验证类似于交叉验证,但是在拆分数据时不是随机分组,而是根据数据来源分组,这种方法多用于多中心数据开发队列[16]。每次抽取一个中心的数据作为验证集,剩余数据作为训练集,重复此过程使每一个中心的数据都曾被用作验证集。(图2,右)最后将每次“内部-外部”交叉验证中获得的模型表现汇总,得到内部验证中的模型表现。“内部-外部”交叉验证的优势是在模型开发过程中利用了全部开发队列数据(因此仍属于内部验证),同时在内部验证中通过非随机拆分,实现了外部验证的效果。
图2 几种内部验证方法的原理和步骤
2.2 外部验证外部验证,是利用模型开发中未使用过的数据来评估模型在新数据中的表现。相对于内部验证,外部验证更关注的是模型的可移植性(Transportability)和可泛化性(Generalizability)[14,16],也即模型在与模型开发队列不同时间段,不同区域或不同人群中的表现是否与模型开发时一致。为了提高研究成果的质量并且使预测模型更有公信力,在模型开发和内部验证完成后,模型开发者通常还会对自己开发的模型进行外部验证,并且将外部验证结果与模型开发过程在研究论文中一起报告。另外,利用现有数据对他人已发表的模型进行外部验证,也可以作为单独的模型外部验证类研究发表。
2.2.1 外部验证的类别根据模型验证队列数据来源的不同,外部验证可分为以下几类:
时段验证(Temporal validation),指的是利用与模型开发队列来源相同,但是时间段不同的数据对模型表现进行验证。最常见的是在模型开发过程中继续收集数据,在模型开发完成后,利用新收集的数据对模型进行外部时段验证。
空间验证(Geographical validation),指的是对模型在其他中心甚至其他国家的数据中的表现进行验证,所以验证队列可能采用与开发队列不同的纳入/排除标准或不同的预测因子和结局变量的测量方法。空间验证比时段验证能更好的检验模型的可转移性和泛化性[14]。
领域验证(Domain validation),是指在不同的临床场景中对模型进行验证,例如模型开发时是基于医院的患者数据,在领域验证时可以利用社区居民数据检验模型在不同人群中的表现。
2.2.2 对模型进行外部验证外部验证需要将待验证的模型应用于验证队列数据中,计算出预测值并与观测值相比较,这就要求待验证的模型提供了完整的信息,包括预测变量的赋值方法、权重(回归系数),对于Cox模型还需要知道分组生存曲线或基础生存曲线[18]。
外部验证最重要的准则,就是需要严格按照待验证的原始模型,计算风险评分(即风险因子乘以回归系数后相加得到的线性预测值)或预测概率,在验证步骤中不得对原模型进行调整,以确保验证结果的客观公正[19]。
常用的验证方法包括,将根据原始模型计算的风险评分作为唯一的自变量,在验证队列中重新拟合模型。由此得到的回归系数就是校准斜率(calibration slope),若是Logistic回归,还可得到校准截距(calibration-in-the-large)[11]。若校准斜率小于1,表示模型在开发过程中有一定程度的过度拟合,也预示着模型预测值过于极端(低风险预测过低,高风险预测过高)[11],且在外部验证中的区分度会低于模型开发时报告的区分度[18]。校准截距用来比较预测概率的均值和观测到的事件发生的概率,若校准截距大于0,代表模型验证队列的事件发生率高于模型开发队列。此外,利用区分度C统计量只依赖于风险评分的排序这一性质,此模型拟合中得到的C统计量的估计,就是原始模型在外部验证中的C统计量。最后,可通过计算验证队列中每个个体的绝对概率预测值和结局变量值,计算Brier得分,验证原始模型的校准度。
若是对自己开发的模型进行外部验证,以上信息完全可获得,对所有验证指标的计算都是可行的。但因为模型开发报告的信息经常不完整,相比于外部验证自己开发的模型,对其他研究者发表的模型进行验证更为困难。对于Logistic回归,只要原文中报告了风险评分的计算方法(回归系数或权重),就可以通过Logistic函数变换得到相应的绝对风险预测。然而对于Cox模型,模型开发者通常只报告风险评分的计算方法,而没有给出基础生存概率,从而无法计算每个个体的绝对风险,也就无法评价模型的校准度。这就要求模型开发者,尽可能全面的报告模型的各项参数。为使模型在发表后能得到更好的外部验证,TRIPOD报告准则第15项中明确要求,模型必须完整报告所有回归系数,模型截距或者基础生存概率,以确保可以对个体进行风险预测[1,2]。
本文系统介绍了临床预测模型验证的概念、目的、方法、原则和注意事项,希望通过本文,临床研究者能更好的理解、掌握、重视模型验证方法,从而提高临床模型类研究的研究质量和报告质量。