如何使用时间变化系数从Cox生存模型进行预测

4

我已经建立了一个生存cox模型,其中包括一个covariate * time交互作用(检测到非比例性)。我现在想知道如何最轻松地从我的模型中获得生存预测结果。

我的模型规定为:

coxph(formula = Surv(event_time_mod, event_indicator_mod) ~ Sex + 
    ageC + HHcat_alt + Main_Branch + Acute_seizure + TreatmentType_binary + 
    ICH + IVH_dummy + IVH_dummy:log(event_time_mod) 

现在我希望使用 survfit 进行预测,并为我要进行预测的变量组合提供 new.data

survfit(cox, new.data=new)

现在我的模型右侧有一个“event_time_mod”,我需要在传递给“survfit”的新数据框中指定它。这个“event_time”需要在预测的个别时间点上设置。是否有一种简单的方法来指定“event_time_mod”为正确的时间到“survfit”?或者还有其他实现模型预测的选项吗?
当然,我可以在新数据框中创建与预测中不同时间相同数量的行,并将“event_time_mod”设置为正确的值,但这感觉非常麻烦,我认为应该有更好的方法。
1个回答

3
您所做的是被称为“明显但不正确的方法”,正如R包中2.41-3版本的“survival”包中的在Cox模型中使用时间相关协变量和时间相关系数文献中所述。相反,您应该使用时间转换功能,即该文献中提到的tt函数。代码类似于文献中的示例。
> library(survival)
> vfit3 <- coxph(Surv(time, status) ~ trt + prior + karno + tt(karno),
+                data=veteran,
+                tt = function(x, t, ...) x * log(t+20))
> 
> vfit3
Call:
coxph(formula = Surv(time, status) ~ trt + prior + karno + tt(karno), 
    data = veteran, tt = function(x, t, ...) x * log(t + 20))

              coef exp(coef) se(coef)     z       p
trt        0.01648   1.01661  0.19071  0.09  0.9311
prior     -0.00932   0.99073  0.02030 -0.46  0.6462
karno     -0.12466   0.88279  0.02879 -4.33 1.5e-05
tt(karno)  0.02131   1.02154  0.00661  3.23  0.0013

Likelihood ratio test=53.8  on 4 df, p=5.7e-11
n= 137, number of events= 128 

"survfit函数在存在tt项时无法工作。"
> survfit(vfit3, veteran[1, ])
Error in survfit.coxph(vfit3, veteran[1, ]) : 
  The survfit function can not yet process coxph models with a tt term

然而,您可以使用“predict”轻松获取“terms”、“linear predictor”或“mean response”。此外,您可以使用这里的答案为“tt”项创建随时间变化的术语。

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