1

下面是一个示例数据集:

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 的生存概率,以用于审查观察。如果有更好的方法来模拟这些概率,我并没有真正挂断使用生存分析,但我认为可能有一些方法可以做到这一点?任何有关如何进行的帮助将不胜感激!

4

1 回答 1

0

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

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

于 2018-12-14T17:34:52.427 回答