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

时间:2017-06-20 15:15:59

标签: r prediction confidence-interval cox-regression

我认为对此的解决方案可能非常简单,但我无法弄明白。

我在数据集中安装了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

在拟合cox比例风险模型(称为fit1)之后,这可以使用R中的 survfit 汇总函数完成,以获得新的数据点, 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

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

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要求置信区间。

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

1 个答案:

答案 0 :(得分:0)

您所看到的并不完全是函数的输出,而是输出摘要,其中为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