使用 R 中的 survfit 函数对多个新数据点进行生存时间的置信区间

Confidence intervals for survival times using survfit function in R for multiple new data points

我认为解决这个问题的方法可能很简单,但我想不出来。

我已将 cox 比例风险模型拟合到数据集。我想对新数据点进行绝对风险预测,就像在风险预测模型中所做的那样。例如,P(T>t),其中 T 是发生感兴趣事件之前的时间。

数学上我理解这个过程。必须首先估计累积风险函数,可以在此处找到执行此操作的公式示例:https://stats.stackexchange.com/questions/46532/cox-baseline-hazard

生存函数是累积风险函数的简单函数,S(t)=exp⁡(−H(t)),公式可以在这里找到: https://stats.stackexchange.com/questions/58046/proof-of-relationship-between-hazard-rate-probability-density-survival-functio

在拟合一个名为 fit1 的 cox 比例风险模型后,这一切都可以使用 R 中的 survfitsummary 函数来完成,对于新数据点,newdata:

newdata1 = data.frame(x1=0,x2=3,x3=5)

summary(survfit(fit1, newdata, type="aalen",se.fit = TRUE, conf.int = 0.95),times=50)

这给出 P(T>50),以及以下输出:

 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   50  14462    3216    0.835 0.00631        0.823        0.848

至关重要的是,这给出了生存概率的上限和下限 CI。现在如果我想对多个数据点执行此操作,那么我定义:

newdata1 = data.frame(x1=0,x2=3,x3=5)
newdata2 = data.frame(x1=1,x2=1,x3=2)

newdata=rbind(newdata1,newdata2)

summary(survfit(fit1, newdata, type="kalb",se.fit = TRUE, conf.int = 0.95),times=50)

我得到以下输出:

time n.risk n.event survival1 survival2
  50  14462    3216     0.835     0.822

它给出了每个患者的生存概率,但没有给出相关的置信区间。尽管 conf.int=0.95.

要求置信区间

所以问题是:当获得多个数据点的预测生存概率时,如何获得生存概率的置信区间?

您看到的不完全是函数的输出,而是输出摘要,其中为 newdata 中的不同行数定义了不同的行为。 从下面的例子可以看出

fit <- coxph(Surv(futime, fustat) ~ age, data=ovarian) 
(CI_summary1 <- summary(survfit(fit, newdata=data.frame(age=c(60)), type="aalen",se.fit = TRUE, conf.int = 0.95),times=50))
(CI_summary2 <- summary(survfit(fit, newdata=data.frame(age=c(60,70)), type="aalen",se.fit = TRUE, conf.int = 0.95),times=50))
str(CI_summary2)

您要查找的置信区间在 CI_summary2$upperCI_summary2$lower 中。