前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >survivalAnalysis——生存分析和相关图的高级接口

survivalAnalysis——生存分析和相关图的高级接口

作者头像
作图丫
发布2022-03-29 09:34:08
8450
发布2022-03-29 09:34:08
举报
文章被收录于专栏:作图丫

上期精彩回顾:ICDS——识别肿瘤功能失调子通路

导语

GUIDE ╲

右删失数据:在随访中,观察起始时间已知,但终点事件的发生时间未知,无法获取具体的生存时间,这种类型的生存时间称为右删失。右删失是实际研究中最常见的数据删失类型。进行生存分析需要标准的分析方法,常见于临床肿瘤学的试验报告论文中。

协变量:在实验的设计中,协变量是一个独立变量(控制变量),不为实验者所操纵,但仍影响实验结果,如年龄。

survivalAnalysis包介绍

代码语言:javascript
复制
#Depends: R (>= 3.3.0)
#Date/Publication: 2020-04-17

install.packages("survivalAnalysis")
library("survivalAnalysis")
help(package="survivalAnalysis")#全是套路~~~

1. analyse_multivariate:使用多重协变量对右删失数据进行Cox回归。

代码语言:javascript
复制
library(magrittr);library(dplyr)
survival::colon %>% analyse_multivariate(vars(time, status), vars(rx, sex, age, obstruct, perfor, nodes, differ, extent)) %>% forest_plot()
#%>%:dplyr包中的管道传参

data=survival::colon
head(data)#数据要求非常简单,包含“time”&“status”列和其他病例信息的数据框
aa1=analyse_multivariate(data=data,time_status=c("time","status"),
  covariates=c("rx", "sex", "age", "obstruct", "perfor", "nodes", "differ", "extent"));print(aa1)
#sort_frame_by:包含一个或多个符号列名的vars()列表。可以指定应该根据输出结果中哪些变量排序,默认HR。

forest_plot(aa1)

2. analyse_survival:使用单协变量或无协变量对右删失数据进行生存分析。

代码语言:javascript
复制
data=survival::colon
head(data)

aa2=analyse_survival(data=data,time_status=c("time","status"),by="sex"
#by_label_map = NULL,
#by_order_vector = NULL,
#cox_reference_level = NULL,
#p_adjust_method = "none"
)

forest_plot(aa2,use_one_hot=T)

adhere:黏附临近组织,显著的风险因素

3. forest_plot :根据生存分析结果创建森林图。单变量结果和多变量均可。

代码语言:javascript
复制
#aa1=analyse_multivariate(data=data,time_status=c("time","status"),covariates=c("rx", "sex", "age", "obstruct", "perfor", "nodes", "differ", "extent"))

forest_plot(aa1,
use_one_hot = F,#如果为TRUE,将接受来自analyse_survival的单变量结果。
relative_widths=c(2,1,2),#图、标签、图、值的宽度的关系,默认c(1,1,1)。
labels_displayed=c("endpoint","factor","n"),#确定左表中显示的内容和顺序
label_headers=c(endpoint="Endpoint",factor="Subgroup",n="n"),
values_displayed=c("HR","CI","p"),#确定右表中显示的内容和顺序
value_headers=c(HR="HR",CI="CI",p="p",n="n",subgroup_n="n"),
p_lessthan_cutoff=0.001,#p值
title="Survival analysis forest plot",#加标题
title_relative_height=0.8
)

4. forest_plot_grid:在一个画板上创建多个森林图。

代码语言:javascript
复制
pp=forest_plot(aa1)
forest_plot_grid(list(pp,pp,pp),
nrow = NULL, ncol = NULL,#行列的数目
)

5. kaplan_meier_plot:根据生存结果绘制Kaplan Meier图。

代码语言:javascript
复制
kaplan_meier_plot(aa2,#analyse_survival生存分析结果
break.time.by="breakByMonth",#breakByYear,breakByHalfYear,breakByQuarterYear,
xlab=".OS.months",#xlab: {.OS,.PFS,.TTF,.DFS}.{years,months,days}
hazard.ratio=TRUE,
risk.table=TRUE,
ggtheme=ggplot2::theme_bw(10),
#table.layout="clean",
)

看这密密麻麻的数字,陷入了自我怀疑......其实修改一个参数就好了

代码语言:javascript
复制
kaplan_meier_plot(aa2,#
break.time.by="breakByYear",#改了这个参数值
xlab=".OS.years",
hazard.ratio=TRUE,
risk.table=TRUE,
ggtheme=ggplot2::theme_bw(10),
table.layout="clean",#去掉多余的网格边框
)

6. kaplan_meier_grid:kaplan meier的网格图。

代码语言:javascript
复制
aa2=analyse_survival(data=data,time_status=c("time","status"),by="sex")
aa3=analyse_survival(data=data,time_status=c("time","status"),by="node4")
aa4=analyse_survival(data=data,time_status=c("time","status"),by="adhere")

kmg=kaplan_meier_grid(
list(aa2,aa3,aa4),break.time.by="breakByYear",
nrow = 1,# ncol = NULL,行列数目
legend.title=c("sex","node4","adhere"),#图例,其他ggsurvplot支持的所有参数都可以传递给kaplan_meier_grid  
title = "kaplan_meier_plot",
surv.plot.height = 5,
risk.table=TRUE,
risk.table.height = 3,
ncensor.plot.height = 1,
)

print(kmg)#展示图片
ggsave("kaplan_meier_grid.pdf", kmg)#保存

管道函数%>%

不知道大家是否注意到1.中有这样一行代码

代码语言:javascript
复制
library(dplyr)

survival::colon %>%
analyse_multivariate(vars(time, status), 
vars(rx, sex, age, obstruct, perfor, nodes, differ, extent)) %>%
forest_plot()

####简单解释一下
#第一个%>%
data=survival::colon
#传递给vars()提取需要的数据列,为analyse_multivariate()提供参数
am=analyse_multivariate(data=data,time_status=c("time","status"),
  covariates=c("rx", "sex", "age", "obstruct", "perfor", "nodes", "differ", "extent"))
#第二个%>%
#将上一步Cox回归分析结果传递给forest_plot()用于做图
forest_plot(am)

%>%是dplyr包的管道函数,能够将上一步的结果传递给下一步的函数作为参数,具体用法就是 x %>% f(y)—> f(x, y)。省略中间步骤,看起来更加简洁,省空间省内存啊有没有。

小编总结

survivalAnalysis包是一个进行生存分析的高级接口,包括Kaplan-Meier分析和log-rank检验以及(多重协变量(analyse_multivariate())Cox回归等。在'survminer'包的基础上构建Kaplan-Meier绘图功能,实现可定制的forest绘图。上周我们介绍过survminer包,主要功能函数ggsurvplot()中的参数时可以在survivalAnalysis包中kaplan_meier_plot(),kaplan_meier_grid()进行传递使用。且支持在管道中使用

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作图丫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档