如何使用 Cox 比例风险模型进行交叉验证?

机器算法验证 预测模型 交叉验证 生存
2022-01-31 14:18:27

假设我已经为一个数据集(模型构建数据集)中特定疾病的发生构建了一个预测模型,现在想要检查该模型在新数据集(验证数据集)中的工作情况。对于使用逻辑回归构建的模型,我将根据从模型构建数据集中获得的模型系数计算验证数据集中每个人的预测概率,然后在某个截止值处对这些概率进行二分法后,我可以构建一个 2x2 表这允许我计算真阳性率(敏感性)和真阴性率(特异性)。此外,我可以通过改变截止值来构建整个 ROC 曲线,然后获得 ROC 图的 AUC。

现在假设我实际上有生存数据。因此,我在模型构建数据集中使用了 Cox 比例风险模型,现在想检查模型在验证数据集中的工作情况。由于基线风险不是 Cox 模型中的参数函数,因此我看不出如何根据模型构建数据集中获得的模型系数获得验证数据集中每个人的预测生存概率。那么,我该如何检查模型在验证数据集中的运行情况?是否有既定的方法可以做到这一点?如果是,它们是否在任何软件中实现?在此先感谢您的任何建议!

2个回答

ROC 曲线在此设置中没有用,尽管广义 ROC 面积(c-index,根本不需要任何二分法)是有用的。Rrms包将计算它的 c-index 和交叉验证或引导过拟合校正版本。如果您完全预先指定模型或在每次重新采样时重复向后步进算法,您可以在不保留任何数据的情况下执行此操作。如果你真的想做外部验证,即如果你的验证样本很大,你可以使用以下rms函数:rcorr.cens, val.surv.

我知道这个问题已经很老了,但是当我遇到同样的问题时,我所做的是使用 predict 函数为验证集中的每个主题获取“分数”。然后根据分数是高于还是低于中位数来划分受试者,并绘制 Kaplan-Meier 曲线。如果您的模型是可预测的,这应该显示主题的分离。我还使用 R 中的生存包中的 coxph 函数测试了分数(实际上是它的 ln [对于正态分布])与生存的相关性。