如何在R中使用Cox回归模型预测生存时间?

5
我使用Cox回归模型对问题进行了建模,现在想要预测个体的估计存活时间。该模型具有一系列影响生存时间的协变量清单。此处告诉我们如何计算P(T>t),这基本上是给定个体的生存函数(1-CDF)。
我想要预测的是略有不同的东西。 鉴于已使用的协变量值,我希望预测人们能够生活的估计天数。 据我所知,这类似于从pdf中抽样。 我如何使用R中的survival包来做到这一点? 下面是使用Cox回归模型拟合的摘要。
Call:
coxph(formula = Surv(Time, death) ~ variable1 + variable2 + variable3 + 
variable4 + variable5 + variable6 + variable7 + variable8 + variable9, 
data = DataTest, method = "breslow")

n= 23756, number of events= 23756 

          coef exp(coef) se(coef)      z Pr(>|z|)    
variable1  0.02494   1.02526  0.02375  1.050  0.29354    
variable2 -0.20715   0.81290  0.02395 -8.650  < 2e-16 ***
variable3  0.12940   1.13814  0.02263  5.717 1.08e-08 ***
variable4  0.02469   1.02500  0.02289  1.079  0.28077    
variable5  0.13165   1.14070  0.02235  5.891 3.84e-09 ***
variable6  0.22286   1.24965  0.01534 14.526  < 2e-16 ***
variable7 -0.10513   0.90021  0.02035 -5.167 2.38e-07 ***
variable8  -0.12215   0.88501  0.02243 -5.447 5.13e-08 ***
variable9  -0.04930   0.95189  0.01827 -2.698  0.00697 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

      exp(coef) exp(-coef) lower .95 upper .95
variable1    1.0253     0.9754    0.9786    1.0741
variable2    0.8129     1.2302    0.7756    0.8520
variable3    1.1381     0.8786    1.0888    1.1898
variable4    1.0250     0.9756    0.9800    1.0720
variable5    1.1407     0.8767    1.0918    1.1918
variable6    1.2496     0.8002    1.2126    1.2878
variable7    0.9002     1.1109    0.8650    0.9368
variable8    0.8850     1.1299    0.8470    0.9248
variable9    0.9519     1.0505    0.9184    0.9866

Concordance= 0.543  (se = 0.002 )
Rsquare= 0.022   (max possible= 1 )
Likelihood ratio test= 516.5  on 9 df,   p=0
Wald test            = 503.1  on 9 df,   p=0
Score (logrank) test = 505.1  on 9 df,   p=0

这实际上是一个关于统计学的问题,而不是编程问题。请尝试查看这里:http://stats.stackexchange.com/questions/79362/how-to-get-predictions-in-terms-of-survival-time-from-a-cox-ph-model - MrFlick
“人类预计寿命”只是“寿命期望值”。它不是生存函数的样本,而是生存函数随时间的积分。最后一次死亡之前的下限可以从“预测”的结果中轻松计算出来。由于您拥有完整的观测数据(没有截尾),因此这对您来说不是问题。 - IRTFM
2个回答

9

由于生存数据的审查性质,计算中位数生存时间通常比计算平均预期生存时间更有用。您可以通过运行以下命令,非常轻松地恢复您数据中每个人的中位数生存时间:

survfit(cox.ph.model,newdata= DataTest)


谢谢!这确实指出了中位数。有两点需要注意:1.我的数据没有审查。在这种情况下,是否有更好的方法?2.MrFlick建议的链接说,特定个体的生存时间不适合使用此工具。我不明白为什么。难道这不应该是这种工具最重要的用途之一吗? - statBeginner
1
我同意你的观点。Cox模型最重要的用途之一应该是根据各自的协变量为每个人建立生存曲线。看起来,survfit函数曾经允许使用参数print.mean=T以便按人员检索平均剩余寿命。我猜现在需要通过估计死亡函数从生存曲线中进行积分来估计它。emplik库中可能有一个执行此操作的函数。获取它可能会有些麻烦。然而,我仍然认为中位数更好。 - Mike.Gahan
好的。根据我的阅读和研究,我认为使用Cox比例风险模型来估计生存时间可能不是一个好主意,因为基线风险是隐含的。我认为,如果一个人做出了比例风险假设,那么最好考虑一个分布(Weibull、指数等),然后估计生存时间。 - statBeginner
Cox PH更加健壮,因为它不对基线风险的分布做任何假设(它是一种非参数估计)。实际上,我发现Cox PH模型比AFT模型更加稳健。如果您想在数据中为不同组使用多个基线风险,可以随时使用“strata”调用。 - Mike.Gahan

-1

我认为您无法使用Cox比例风险模型估计单个观察的生存时间。该模型输出危险比作为输出,非常适合了解协变量对生存的影响,因为它不对基线危险函数做任何假设。如果您想估计单个观察的生存时间,最好使用Weibull或指数分布,这将允许您这样做,并且它们是Survival包的一部分。

谢谢,


第一句话是错误的(因为请求的不是单个观察的生存时间,而是针对单个协变量集合的生存时间),而其余的回答也不是一个答案。 - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接