其他
基于gtsummary的tbl_survfit函数计算生存率及中位生存时间
The following article is from 灵活胖子的进步之路 Author 灵活胖子1988
简介
个人体会
1.可以计算任意时间点的生存率及其可信区间。 2.可以计算任意生存概率的生存时间及其可信区间 3.可以批量计算并返回表格。 4.可以直接导出word表格用于发表。 5.能够计算竞争风险模型的生存率数据
代码分享
library(gtsummary)
library(gt)
# Example 1 ----------------------------------
# Pass single survfit() object
data("trial")
tbl_survfit_ex1 <- tbl_survfit(
survfit(Surv(ttdeath, death) ~ trt, trial),#直接用生存方程
times = c(12, 24),#计算点估计得生存率及可信区间
label_header = "**{time} Month**"
)
tbl_survfit_ex1
# Example 2 ----------------------------------
# 批量计算不同分组的中位生存时间
tbl_survfit_ex2 <- tbl_survfit(
trial,
y = Surv(ttdeath, death),#生存结局
include = c(trt, grade),#批量计算的变量
probs = 0.5,#计算中位生存时间及其可信区间
label_header = "**Median Survival**"
)
tbl_survfit_ex2
# Example 3 ----------------------------------
# 可以将不同生存方程的结果放在一起
tbl_survfit_ex3 <-
list(
survfit(Surv(ttdeath, death) ~ 1, trial),#总体人群
survfit(Surv(ttdeath, death) ~ trt, trial)#不同治疗分组
) %>%
tbl_survfit(times = c(12, 24))
tbl_survfit_ex3
# Example 4 竞争风险模型的生存率计算 ---------
# 构建竞争风险模型
set.seed(1123)
library(dplyr, warn.conflicts = FALSE, quietly = TRUE)
trial2 <- trial %>%
mutate(
death_cr = case_when(
death == 0 ~ "censor",
runif(n()) < 0.5 ~ "death from cancer",
TRUE ~ "death other causes"
) %>% factor()
)
table(trial2$death_cr)
levels(trial2$death_cr)
#竞争风险模型计算的都是第二个因素水平
survfit_cr_ex4 <-
survfit(Surv(ttdeath, death_cr) ~ grade, data = trial2) %>%
tbl_survfit(times = c(12, 24), label = "Tumor Grade")
survfit_cr_ex4
trial2$death_cr <- fct_relevel(trial2$death_cr,"censor","death other causes")
survfit_cr_ex5 <-
survfit(Surv(ttdeath, death_cr) ~ grade, data = trial2) %>%
tbl_survfit(times = c(12, 24), label = "Tumor Grade")
survfit_cr_ex5
关注下方公众号,分享更多更好玩的R语言知识。
点个在看,SCI马上发表。