这是下面的示例数据集:
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的那些生存概率,以便进行审查。如果有更好的方法来对这些概率进行建模,我并不是真的愿意使用生存分析,但是我认为可能有某种方法可以做到这一点?任何对如何进行的帮助将不胜感激!
答案 0 :(得分:0)
与struct void {}
一起使用的predict.survreg
函数的p(百分位数)参数的默认值为type='quantile'
。因此,您将获得每个幸存者2个预测生存概率的矩阵。 “ 0.1”列是直到预期存活率达到90%的预计天数,而0.9列是直到预期存活率达到10%的预计天数。 (考虑剩余的幸存者数量时,每个百分位都是100%的补数。它们实际上是预测到达到指定的累积危险量所需的时间。)(您应阅读c(0.1,0.9)
)
我们基本上假设Markov属性。概率没有改变。如果某人还活着,那么您实质上是将他们的生存率重新设置为100%,并让时间继续前进。我想您可能希望将他们的年龄调整为当前的年龄值,如果这是针对当前的幸存者进行的