R格式用于生存分析的点预测

Format in R for point prediction of survival analysis

我对使用 R 的 survival

执行简单预测的格式感到困惑
library(survival)
lung.surv <- survfit(Surv(time,status) ~ 1, data = lung)

所以拟合一个简单的指数回归(仅供示例)是:

lung.reg <- survreg(Surv(time,status) ~ 1, data = lung, dist="exponential")

我如何预测 time=400 时的存活百分比?

当我使用以下内容时:

myPredict400 <- predict(lung.reg, newdata=data.frame(time=400), type="response")

我得到以下信息:

myPredict400
       1 
421.7758 

我原以为是 37%,所以我遗漏了一些非常明显的东西

这个生存函数的要点是找到一个适合生存时间的经验分布。本质上,您是将生存时间与概率相关联。获得该分布后,您可以选择给定时间的存活率。

试试这个:

library(survival)
lung.reg <- survreg(Surv(time,status) ~ 1, data = lung)  # because you want a distribution

pct <- 1:99/100  # this creates the empirical survival probabilities
myPredict400 <- predict(lung.reg, newdata=data.frame(time=400),type='quantile', p=pct)

indx = which(abs(myPredict400 - 400) == min(abs(myPredict400 - 400))) # find the closest survival time to 400
print(1 - pct[indx]) # 0.39

直接来自帮助文档,这是它的情节:

matplot(myPredict400, 1-pct, xlab="Months", ylab="Survival", type='l', lty=c(1,2,2), col=1)

已编辑

你基本上是在拟合概率分布的回归(因此 100 中有 1...99)。如果你让它达到 100,那么你预测的最后一个值是 inf,因为第 100 个百分位数的存活率是无限的。这就是 quantilepct 参数的作用。

例如,设置 pct = 1:999/1000 您将获得更精确的预测值 (myPredict400)。此外,如果您将 pct 设置为某个不是正确概率的值(即小于 0 或大于 1),您将收到错误消息。我建议您尝试使用这些值,看看它们如何影响您的生存率。