查看原文
其他

基于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


测试数据
返回了1年级2年的生存率及可信区间
# 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 

构建竞争风险模型结果变量,注意第二个变量的名称
death from cancer的生存概率
tbl_survfit: Multi-state model detected. Showing probabilities into state 'death other causes'

关注下方公众号,分享更多更好玩的R语言知识。

点个在看,SCI马上发表。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存