【问题标题】:How to predict survival time in Cox's Regression Model in R?如何在R中的Cox回归模型中预测生存时间?
【发布时间】:2015-02-13 02:58:59
【问题描述】:

我使用 Cox 回归建模了一个问题,现在想要预测个人的估计生存时间。该模型具有生存时间所依赖的协变量列表。 This 告诉我们如何计算 P(T>t),它基本上是给定个体的生存函数 (1-CDF)。

我想预测一些稍微不同的东西。给定已使用的协变量的值,我想预测此人的估计生存天数。据我说,这类似于从 pdf 中采样。如何使用 R 中的生存包做到这一点?下面是使用 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

【问题讨论】:

  • 这确实是一个关于统计的问题,而不是关于编程的问题。试试看这里:stats.stackexchange.com/questions/79362/…
  • “估计这个人能活多少天”就是“预期寿命”。它不是来自生存函数的样本,而是生存函数随时间的积分。从predict 的结果可以很容易地计算到最后一次死亡的下限。由于您有完整的观察结果(没有审查),这对您来说不是问题。

标签: r survival-analysis cox-regression


【解决方案1】:

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

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

【讨论】:

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

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

谢谢,

【讨论】:

  • 第一句话是错误的(因为要求的不是单个观察的生存时间,而是一组协变量的生存时间。)......而其余的答案不是答案.
猜你喜欢
  • 1970-01-01
  • 2012-10-17
  • 2016-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2020-05-17
相关资源
最近更新 更多