前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KMunicate--绘制严谨且个性化的生存曲线!

KMunicate--绘制严谨且个性化的生存曲线!

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

导语

GUIDE ╲

KM法即乘积极限法(product-limit method),是现在生存分析最常用的方法,是由Kaplan和Meier于1958年提出,因此称Kaplan-Meier法,通常简称KM法。KM法是这样估计生存曲线:首先计算出活过一定时期的病人再活过下一时期的概率(即生存概率),然后将逐个生存概率相乘,即为相应时段的生存率。

之前分享过的生存分析R包请戳蓝字链接

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

背景介绍

Morris等人在2019年发表了文章:Proposals on Kaplan-Meier plots in medical research and a survey of stakeholder views: KMunicate.对包括临床医生,统计学家等KM-plot的相关使用者进行了一个调查,其中给出了一些对传统KM-plot的意见,比如在图下方加入扩展表以及在曲线周围加入CIs等,这些建议得到了广泛的认可,作者同时也开发了R包用来绘制KMunicate风格的KM-plot。

R包安装

代码语言:javascript
复制
BiocManager::install("KMunicate")
library(KMunicate)

可视化展示

01

Data

在这里我们使用了R包中自带的数据集:brcancer。

代码语言:javascript
复制
data("brcancer", package = "KMunicate")
str(brcancer)

02

Single-Arm Plot

首先使用survival包中的 survfit 函数拟合 Kaplan-Meier 曲线

代码语言:javascript
复制
fit <- survfit(Surv(rectime, censrec) ~ 1, data = brcancer)
fit

然后,我们需要定义绘图的水平轴。例如在时间零和最大观察时间之间定义 5个等距间隔。

代码语言:javascript
复制
ts <- seq(0, max(brcancer$rectime), length.out = 5)
ts

最后使用KMunicate函数,通过fit和ts两个参数绘制曲线。

代码语言:javascript
复制
KMunicate(fit = fit, time_scale = ts)

03

Multiple-Arms Plot

如果 survfit 对象中有协变量,将自动生成Multiple-Arms plot。

代码语言:javascript
复制
fit2 <- survfit(Surv(rectime, censrec) ~ hormon, data = brcancer)
fit2
代码语言:javascript
复制
KMunicate(fit = fit2, time_scale = ts)

04

KMunicate与ggplot2的交互

KMunicate() 函数包含一些用于自定义生成的绘图选项。我们可以将 ggplot2 theme传递给 .theme 参数:

代码语言:javascript
复制
KMunicate(fit = fit2, time_scale = ts, .theme = ggplot2::theme_minimal())

自定义颜色和填充比例

代码语言:javascript
复制
##通过'.color_scale'和'.fill_scale'定义颜色以及填充
KMunicate(
  fit = fit2,
  time_scale = ts,
  .color_scale = ggplot2::scale_color_brewer(type = "qual", palette = "Set2"),
  .fill_scale = ggplot2::scale_fill_brewer(type = "qual", palette = "Set2")
)

我们可以通过 .alpha 参数自定义置信区间的透明度:

代码语言:javascript
复制
KMunicate(
  fit = fit2,
  time_scale = ts,
  .theme = ggplot2::theme_minimal(),
  .color_scale = ggplot2::scale_color_brewer(type = "qual", palette = "Set2"),
  .fill_scale = ggplot2::scale_fill_brewer(type = "qual", palette = "Set2"),
  .alpha = 0.1
)

可以通过 .linetype_scale 参数自定义线型比例:

代码语言:javascript
复制
KMunicate(
  fit = fit2,
  time_scale = ts,
  .linetype_scale = ggplot2::scale_linetype_manual(values = c("dotted", "dashed"))
)

通过 .annotate 参数添加自定义注释:

代码语言:javascript
复制
KMunicate(
  fit = fit2,
  time_scale = ts,
  .annotate = ggplot2::annotate(geom = "text", x = 365, y = 0.5, label = "Some annotation")
)

小编总结

总的来说,使用KMunicate包进行KM-plot绘制是非常简单的,我们根据代码可以看到需要设置的参数非常少,并且通过‘.xxx'的参数形式还可以和ggplot2包进行交互,让绘图更加的个性化,值得大家收藏哟!

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

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

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

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

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