如何在没有分箱数据的情况下为生存数据制作校准图?

机器算法验证 生存 回归策略 校准
2022-03-02 12:03:00

要绘制从 Cox 模型估计的生存概率的校准图,可以将估计的风险分成几组,计算组内的平均风险,然后将其与 Kaplan-Meier 估计值进行比较。什么是不需要分箱的替代方法?实现这种技术需要哪些具体步骤,背后的逻辑是什么?在这个问题中存在一些讨论。

1个回答

校准 Cox 生存模型的一种直接方法是使用R 中的calibrate提供的功能,如您链接的页面中所示该软件包为 Cox 模型提供了一种方法,该方法旨在与它为多种类型的回归模型提供的校准和验证方法一起工作。rmscph

引用手册页:“[ calibrateu] 使用自举或交叉验证来获得预测值与观察值的偏差校正(过度拟合校正)估计。” 然而,模型中的默认cmethod="hare"设置不是使用合并的 Kaplan-Meier 估计来提供“观察到的”值,而是使用回归样条插值估计,该估计允许非比例风险和非线性,同时考虑到审查。观察数据的这种自适应建模允许针对特定生存时间进行连续校准图。大纲提供了有关 HARE 方法的更多详细信息,并参考了原始论文。(如果您在调用中设置,您将与合并的 Kaplan-Meier 估计进行比较。)calibratecphcmethod="KM"calibrate

在您执行此操作之前,请务必阅读手册页以确保您生成的cph模型具有允许使用这些功能的正确设置,并且polspline安装了包以提供该hare功能。

该软件包的作者 Frank Harrell 在回归建模策略第二版的第 506-9 页和他的相关课程笔记第 17 章第 18-19rms页中比较了合并的 Kaplan-Meier 和连续 HARE 方法.

“幕后”发生了什么

生存分析的校准问题是,当我们试图校准事件的概率时,观察是事件。所以需要某种类型的插值。对于 Cox 模型,需要特定的生存时间进行分析。

考虑分箱 KM 校准。您首先通过预测概率将案例分组在一起,然后对于每组相似的预测概率,您绘制 KM 生存曲线并在所选生存时间在这些少数案例中进行插值以获得该组的估计“观察到”生存概率。

calibrate用于cph模型的方法中,您首先将所有案例中的风险作为预测变量和时间的一般函数进行插值。这个通用功能,由hare,允许将每个预测变量和时间建模为线性样条,并允许变量之间的成对交互(包括时间作为变量)。样条和交互的集合提供了一组基函数,每个基函数都是预测变量和时间的函数。然后,您寻找最适合生存数据的这些基函数的组合,其中系数对通过最大化部分似然性估计的基函数进行加权,类似于 Cox 模型如何找到预测变量本身的系数。模型复杂度(例如,要包括的基函数、样条结的数量)是通过逐步添加和删除过程来选择的,这在上面提到的大纲中得到了很好的解释。

hare过程的结果是一个单一的函数,提供作为所有预测变量和时间的函数的风险,其形式通常比比例风险 Cox 模型复杂得多。我喜欢将此视为始终从所有案例之间的插值开始,以及它们的预测变量的相关值,而不是针对分箱 KM 校准方案中使用的案例子集的特定时间的插值。

使用 提供的风险函数hare,您现在可以采用预测变量值的任意组合,并将特定时间的“预测” Cox 生存概率与 提供的“观察到的”生存概率的插值估计进行比较hare(请注意,原则上,您不限于此比较的手头案例;可以检查预测变量值的任何合理组合。)然后,校准曲线是“观察到的”与“预测的”生存概率的平滑图,在所有情况下,在所需的时间。calibrate方法rms对来自案例的多个自举样本重复此过程,以衡量结果将如何推广到从中抽取案例的总体。

如果您不仅想深入了解,还想解构引擎,这在 R 中很容易。rms加载包后,rms:::calibrate.cph在命令提示符处键入以获取此calibrate方法的代码。包装器hare可通过在加载包hare时在提示符处键入来获得;polspline大部分工作由编译函数完成,其源代码可从CRAN获得。