数据
library(survival)
kidney
型号
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/