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