【问题标题】:Is there a way to predict future survival probabilities in R?有没有办法预测 R 中的未来生存概率?
【发布时间】:2019-05-14 22:39:08
【问题描述】:

下面是一个示例数据集:

age = runif(200, min = 25, max=70)
profile_id = seq(1, 200)
gender = sample(c("M", "F"), size = 200, replace = T)
start_date = sample(seq(as.Date('2013/01/01'), as.Date('2014/01/01'), by="month"), 200, replace = T)
end_date = sample(seq(as.Date('2014/01/01'), as.Date('2016/01/01'), by="month"), 200, replace = T)

mydf = data.frame(profile_id, age, gender, start_date, end_date)

mydf$end_date[mydf$end_date > as.Date('2015/01/01')] = as.Date('2015/01/01')
mydf$death = ifelse(mydf$end_date < as.Date('2015/01/01'), 1, 0)
mydf$periods_alive = mydf$end_date - mydf$start_date

基本上,如果可能的话,我会尝试利用某种生存回归模型来预测那些在时间段结束时仍然活着的人,他们在研究后的未来时间段内的生存概率。例如,接下来 12 个月内每个月的生存概率或其他东西。

我知道我可以在下面做这样的事情来估计样本期间新观察的生存概率(尽管我不完全确定如何从预测函数中提取概率):

m1 = survreg(Surv(periods_alive, death)~ age + gender, data = mydf)
mydf_alive = mydf[mydf$death == 0, ]
predict(m1, newdata = mydf_alive, type = 'quantile')

但我很好奇是否有一种方法可以预测未来某个时间 T 的生存概率以用于审查观察。如果有更好的方法来模拟这些概率,我并没有真正挂断使用生存分析,但我认为可能有一些方法可以做到这一点?任何有关如何进行的帮助将不胜感激!

【问题讨论】:

  • 如果您可以拟合参数生存模型(指数、weibull),那么您可以免费获得预测。
  • 但是对于那些还没有发生过事件的人的预测,会是在样本期之后的时间里发生事件的概率吗?还是他们在样本期间经历过事件的概率?

标签: r statistics prediction survival-analysis survival


【解决方案1】:

type='quantile' 一起使用的predict.survreg 函数的p(百分位数)参数默认为c(0.1,0.9)。因此,您将获得每个幸存者的 2 个预测生存概率矩阵。 “0.1”列是预测生存率达到 90% 之前的预测天数,而 0.9 列是预测生存率达到 10% 之前的预测天数。 (考虑剩余幸存者数量时,每个百分位数都是 100% 的补数。它们实际上是达到指定累积危险之前的预测时间。)(您应该阅读?predict.survreg

我们基本上假设马尔可夫属性。概率没有变化。如果某人还活着,那么您实际上是将他们的生存率重置为 100% 并让时间前进。我认为您可能希望将他们的年龄调整为当前的年龄值,如果这是对当前的幸存者集进行的话

【讨论】:

  • 啊,好吧,这很有意义,所以我可以为 p 参数输入一个 0-1 的序列,然后简单地找到最接近一个月生存期、两个月等的百分位数。再次感谢您的帮助
  • 应该可以。如果试图制作一条生存曲线,x 值将是预测值,y 值将是predict.survreg( ..., type="quantile") 的输入
猜你喜欢
  • 1970-01-01
  • 2019-07-26
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
相关资源
最近更新 更多