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


15

假设我已经针对一个数据集(模型构建数据集)中特定疾病的发生构建了一个预测模型,现在想检查该模型在新数据集(验证数据集)中的运行情况。对于使用Logistic回归构建的模型,我将根据从模型构建数据集获得的模型系数计算验证数据集中每个人的预测概率,然后在将某些概率按临界值二等分后,可以构建一个2x2的表格这样我就可以计算出真实的阳性率(敏感性)和真实的阴性率(特异性)。此外,我可以通过更改截止值来构建整个ROC曲线,然后获得ROC图的AUC。

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

Answers:


9

ROC曲线在此设置中没有用,尽管广义的ROC区域(c-index,根本不需要任何二分法)是有用的。R rms软件包将计算c-index以及交叉验证或经过引导过度拟合校正的版本。如果您完全预先指定了模型,或者在每次重采样时都重复了向后降压算法,则可以不保留任何数据就可以这样做。如果您确实想进行外部验证,即,如果您的验证样本很多,则可以使用以下rms功能:rcorr.censval.surv


谢谢你的回答。您能否解释为什么ROC曲线在这种情况下没有用?我已经看到了使用这种方法的一些突出应用(例如,Hippisley-Cox等人(2007年)。QRISK的推导和验证,英国新的心血管疾病风险评分:前瞻性开放队列研究。《英国医学杂志》 ,335(7611):136),所以现在我想知道他们的方法。
Wolfgang

1
这是一个比喻。假设有人对评估老化与跑步能力之间的关系感兴趣。鉴于某人的跑步能力,ROC方法会提出这样的问题:他们超过某个(任意)年龄的可能性是多少?在一项队列研究中,它只会增加混淆以逆转自变量和因变量的作用,并且ROC曲线还会引诱人们对预测变量进行截断,这被认为是不好的统计实践-参见biostat.mc.vanderbilt.edu/ CatContinuous。切点除了创建吊点之外,实际上还必须是所有其他预测变量的函数。
Frank Harrell '02

再次感谢您的回复。我并不完全相信。我完全同意,对连续变量进行任意分类是不好的做法,但是ROC方法对所有可能的临界值进行分类,并通过AUC汇总这些信息。因此,这没有任意性。对于逻辑回归模型,这似乎也是一种标准且可以接受的做法。那么,您是反对一般还是仅在生存模型的背景下使用ROC曲线?
Wolfgang '02

2
X=XX>C

我的经验告诉我,许多研究人员/从业人员实际上都希望采用二分法的决策规则(不管这是否有用)。无论如何,我都会跟进一些R函数,看看能从哪里获得帮助。感谢您的讨论。
Wolfgang

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.