r - 如何使用 survreg 模型预测特定时间点的生存率?

标签 r survival-analysis survival weibull

数据

library(survival)
kidney

enter image description here

型号

model = survreg(Surv(time, censored) ~ sex + age, data = kidney)

Call:
survreg(formula = Surv(time, censored) ~ sex + age, data = kidney)

Coefficients:
(Intercept)   sexfemale         age 
 8.44411429 -0.89481679 -0.02170266 

Scale= 1.653512 

Loglik(model)= -122.1   Loglik(intercept only)= -122.7
    Chisq= 1.21 on 2 degrees of freedom, p= 0.547 
n= 76 

如何预测两个性别在多个时间点(例如 30、90、182 天)的生存率(加上 95% CI)?

是否有在不同尺度(例如原始时间尺度、概率)下执行此操作的技巧?

示例代码或示例将不胜感激。

最佳答案

所有者接受的答案仅适用于 Kaplan-Meier 估计器,它不是参数生存模型 (AFT)。 OP询问如何从R中的survreg对象预测生存率。我有一个类似的问题:在给定事件的离散时间的情况下,如何从威 bool 模型预测生存率?

survival 包中的 predict.survreg 函数不会预测给定事件离散时间 (t = 1, 2, 3, .. ., 48)。幸运的是,对于 Weibull AFT 模型,我们可以使用 pweibull 函数或累积风险函数来预测给定 t 的生存率。

方法一:pweibull()

library(survival)

model = survreg(Surv(time, status) ~ sex + age, data = kidney,
                dist="weibull")

time_days = c(30, 90, 182)

newdat <- data.frame(sex=1, age=44)

mu_hat <- predict(model, newdata=newdat, type="link")

surv_hat <- 1 - pweibull(time_days, 
                         shape=1/model$scale,
                         scale=exp(mu_hat))

surv_hat

方法2:累积风险

predict_survival_weibull <- function(object, newdata, t){
  mu_hat <- predict(object, newdata=newdata, type="link")
  
  cum_hazard <- (t / exp(mu_hat))^(1/object$scale)
  
  surv <- exp(-cum_hazard)
  
  return(surv)
}

predict_survival_weibull(model, newdat, t=time_days)

关于r - 如何使用 survreg 模型预测特定时间点的生存率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66471563/

相关文章:

r - 根据条件对列进行分类

r - 在 r 中绘制每月和每年的天气数据

r - R图例中的 latex 表达

ggplot 中的反向日期时间(POSIXct 数据)轴先前的解决方案已损坏

r - 有没有办法用新数据和固定系数获得 Cox PH 模型的部分似然?

python - 如何从 python 中的拟合 scikit 生存模型解释 .predict() 的输出?

r - 使用 dplyr 将所有行保持在 R 中的特定值

r - 预测事件何时发生

r - 使用 ggplot 移动绘图

r - 使用 survminer 在 R 中绘制危害函数?