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

2022-03-29 14:08:23 浏览数 (2)

导语

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包进行交互,让绘图更加的个性化,值得大家收藏哟!

0 人点赞