R语言统计与绘图:Kaplan-Meier生存曲线进阶

上篇推文更新了ggsurvplot()函数绘制Kaplan-Meier生存曲线,今天继续学习绘制1个或2个变量分组的分面Kaplan-Meier生存曲线。

1. 安装和加载R包

绘制分组Kaplan-Meier生存曲线需要用到的R包:“survminer”“survival”;如果没有请安装。

install.packages("survminer")  #下载survminer包
install.packages("survival")   #下载survival包
library(survminer)  #加载包
library(survival)  #加载包

2. 读取内置数据集

data(colon)  # 加载数据集
View(colon)  # 预览数据集
colon数据集:B/C期结肠癌辅助化疗治疗数据

id # 患者编号
study # 所有患者都是1
rx # 治疗方式,有三种:观察、Levamisole、Levamisole+5-FU
sex # 性别,男性为 1,女性为 0
age # 年龄
obstruct # 肿瘤是否阻塞结肠,有为1,无为0
perfor # 结肠是否穿孔,有为1,无为0
adhere # 肿瘤是否粘附附近器官,有为1,无为0
nodes # 检出淋巴结的数目
time # 至发生终点事件或删失的时间
status # 生存状态,1为发生终点事件,0为删失
differ # 肿瘤分化程度 (1=well, 2=moderate, 3=poor)
extent # 局部转移程度(1=粘膜下层,2=肌肉,3=浆膜,4=相邻结构)
surg # 从手术到登记的时间 (0=short, 1=long)
node4 #  超过4个阳性淋巴结,有为1,无为0
etype # 事件类型: 1=复发,2=死亡

3. 拟合曲线

拟合性别 sex 的生存曲线。

fit <- survfit( Surv(time, status) ~ sex, 
                data = colon) 

4. 1个分组变量

4.1 简单绘制

ggsurvplot_facet(fit, # 前面创建的拟合对象
                 colon,  #指定数据来源
                 facet.by = "obstruct"# 以 obstruct 分组
                 palette = "lancet"# 使用lancet调色板
                 pval = TRUE)  # 图上输出p值
ggsurvplot_facet(fit, 
                 colon, 
                 facet.by = "differ",  # 以 differ 分组
                 palette = "lancet", 
                 pval = TRUE
ggsurvplot_facet(fit, 
                 colon, 
                 facet.by = "extent"# 以 extent 分组
                 palette = "lancet", 
                 pval = TRUE)  

4.2 美化曲线

ggsurvplot_facet(fit,  # 创建的拟合对象
                 data = colon,  # 指定数据集来源
                 facet.by = "differ",  # 以 differ 分组
                 palette = "lancet"# 设置调色板
                 legend.labs = c("Male","Female"), # 图例标签
                 legend = c(0.9,0.8), # 图例位置
                 pval = TRUE# 图上输出p值
                 pval.method = TRUE# 输出统计学方法文本
                 pval.coord = c(1500,0.2), # 输出p值的坐标位置
                 pval.method.coord = c(600,0.2), # 统计学方法文本的位置
                 nrow = 1, ncol = 3# 分面绘制的摆放方式
                 panel.labs = list(differ = c("well","moderate","poor")), # 面板标签 
                 panel.labs.background = list(color = "blue", fill = "pink"), # 面板颜色
                 panel.labs.font = list(face = "plain", color = "black", size = 14)) # 面板字体

5. 2个分组变量

5.1 简单绘制

ggsurvplot_facet(fit, 
                 colon, 
                 facet.by = c("obstruct""adhere"), # 以"obstruct", "adhere"为组
                 palette = "lancet", 
                 pval = TRUE
ggsurvplot_facet(fit, 
                 colon, 
                 facet.by = c("obstruct""rx"), # 以"obstruct", "rx"为例
                 palette = "lancet", 
                 pval = TRUE
ggsurvplot_facet(fit, 
                 colon, 
                 facet.by = c("obstruct""extent"), # 以"obstruct", "extent"为例
                 palette = "lancet", 
                 pval = TRUE
ggsurvplot_facet(fit, 
                 colon,
                 facet.by = c("rx""extent"), # 以"rx", "extent"为例
                 palette = "lancet", 
                 pval = TRUE

5.2 美化曲线

ggsurvplot_facet(fit,  # 创建的拟合对象
                 data = colon,  # 指定数据来源
                 facet.by = c("obstruct""adhere"), # 设置分面变量  
                 palette = "lancet"# 设置调色板
                 legend.labs = c("Male","Female"),  # 图例标签
                 legend = c(0.9,0.9), # 指定图例位置
                 pval = TRUE# 输出p值
                 pval.method = TRUE# 输出计算统计学方法文本
                 pval.coord = c(1500,0.2), # 指定p值位置
                 pval.method.coord = c(1000,0.2), # 指定统计学文本位置
                 nrow = 1, ncol = 3# 分面摆放方式
                 panel.labs = list(obstruct = c("No""YES"), adhere = c("No""YES")), 
                 panel.labs.background = list(color = "blue", fill = "pink"), 
                 panel.labs.font = list(face = "plain", color = "black", size = 14))

6. 其他拟合曲线

fit2 <- survfit( Surv(time, status) ~ sex + differ, 
                 data = colon )

6.1 简单绘制

ggsurvplot_facet(fit2, # 创建的拟合对象
                 colon, # 指定数据集来源
                 facet.by = "adhere"# 分面变量
                 palette = "lancet"# 设置调色板
                 pval = TRUE# 在图上输出p值

6.2 美化曲线

ggsurvplot_facet(fit2, # 创建的拟合对象
                 data = colon,  # 指定数据集来源
                 facet.by = "adhere",  # 分面变量
                 palette = "lancet"# 设置调色板
                 legend.labs = c("Female & Well","Female & moderate","Female & Poor","Male & Well","Male & moderate""Male & Poor"),
                 legend = c(0.9,0.8), # 图例位置
                 pval = TRUE# 输出p值
                 pval.method = TRUE# 输出计算p值的统计学方法文本
                 pval.coord = c(1500,0.2),  # 指定p值的位置
                 pval.method.coord = c(1000,0.2),  # 指定计算p值统计学方法文本的位置
                 nrow = 1, ncol = 3# 分面图形的放置方式
                 panel.labs = list(adhere = c("No""YES")), 
                 panel.labs.background = list(color = "blue", fill = "pink"), 
                 panel.labs.font = list(face = "plain", color = "black", size = 14))

7. ggsurvplot_facet()函数

ggsurvplot_facet(fit, data, facet.by, color = NULL, palette = NULL,
                 legend.labs = NULL, pval = FALSE, pval.method = FALSE,
                 pval.coord = NULL, pval.method.coord = NULL, nrow = NULL,
                 ncol = NULL, scales = "fixed", short.panel.labs = FALSE,
                 panel.labs = NULL, 
                 panel.labs.background = list(color = NULL, fill =NULL), 
                 panel.labs.font = list(face = NULL, color = NULL, size = NULL,angle = NULL), 
                 panel.labs.font.x = panel.labs.font,
                 panel.labs.font.y = panel.labs.font, ...)
                 
## 参数解释                 
fit  # 拟合的生存对象
data  # 拟合生存曲线的数据集
facet.by  # 长度为1或2的字符向量,分组生存曲线中指定的数据集中的分组变量
color  # 生存曲线的颜色, n.strata = 1, 则color = "blue"; 
# n.strata>1,默认 color = "strata",按分组为生存曲线着色
palette  # 自定义调色板;可以自定义颜色:c("blue", "red");
# 或 brewer palettes 如"RdBu", "Blues";
# 或 scientific journal palettes 如 "npg","aaas","lancet", "jco", "ucscgb", 
# "uchicago", "simpsons" and "rickandmorty"
legend.labs  # 指定图例标签的字符向量,用来替换fit中strata的名称,顺序应该和strata一样
pval  # P值添加有3种方式,逻辑词、数值或字符串;
# 为TRUE则图上添加计算的p值;为数字则将此数值代替计算的p值;
# 为字符串则将自定义的p值添加到图上。
pval.method  # 只在pval=TRUE时有效,添加计算p值的检验名称的文本
pval.coord  # 长度为2的向量,指定p值的坐标,如c(x,y)
pval.method.coord  # 同上,指定检验方法文本的坐标
nrow, ncol, # 面板中的行数和列数,仅当一个分组变量时使用
scales = "fixed" # 面板中坐标轴比例,默认"fixed";
# 其他还有"free", "free_x", "free_y"
short.panel.labs = FALSE# 逻辑词;为TRUE,则省略变量名称为面板创建简短标签
panel.labs = NULL# 1个或2个字符向量的列表,用于修改标签文本。
# 如panel.labs = list(sex = c("Male","Female"))指定"sex"变量的标签。
# 两个分组变量,如panel.labs = list(sex = c("Male","Female"),rx = c("Obs","Lev","Lev2")))。
panel.labs.background  # 自定义面板标签背景的列表,
# 应包含以下元素(color, linetype, size: 背景线颜色、类型和大小;fill:背景填充颜色)
# 如panel.labs.background = list(color = "blue", fill = "pink").
panel.labs.font = list(face = NULL, color = NULL, size = NULL,angle = NULL),
# 指定面板标签的大小,外观/样式,颜色和方向角度。
panel.labs.font.x = panel.labs.font,  # 同上,当分别指定x轴和y轴
panel.labs.font.y = panel.labs.font, ...# 其他参数同ggsurvplot()函数
统计与绘图

String加Cytoscape制作PPI网络图教程

2020-5-18 17:36:51

统计与绘图

R语言统计与绘图:ggsurvplot()函数绘制Kaplan-Meier生存曲线

2020-5-22 14:46:47

声明 本网站部分文章源于互联网,出于传递更多信息和学习之目的转载,并不保证内容正确或赞同其观点。
如转载稿涉及失效、版权等问题,请立即联系管理员;我们会予以修改、删除相关文章,请留言反馈
Notice: When your legal rights are being violated, please send an email to: [email protected]
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索