公众号前段时间发了篇推文《ggsurvplot()函数绘制Kaplan-Meier生存曲线》用来介绍生存曲线的绘制,下面的推文内容跟这篇文章结合着看。


在生存分析中我们通常关注个体在时间t之前存在的概率(或者不发生感兴趣事件的概率),并且绘制生存函数曲线。

生存函数(S(t)=Pr(T>t))是一个阶梯函数,说明随着时间的推移累计生存概率。但有时候研究者更加关注的是随着时间推移事件发生累计概率(顾名思义就是1-S(t))。

近期就收到一个咨询,希望可以绘制1-S(t)曲线,并且输出风险表(risk table),在图上标注曲线的置信区间。


我们知道SPSS可以输出生存函数、1-生存函数、风险函数、对数风险函数。

SPSS具体操作如下:

1.打开SPSS软件,导入需要分析的数据,数据设置好格式后,点击分析-生存分析-Kaplan-Meier,如下图1所示:

图1

2.如下图2所示定义好时间状态因子,点击右边的选项;全部勾选生存函数1减去生存函数风险函数对数生存

图2 SPSS绘制生存曲线操作

3.选好之后,点击继续-确定就可以得到想要的图。

图3 SPSS输出的生存函数图和1-生存函数图

其中第二张图就是累计事件发生概率曲线(1-S(t))。

但是SPSS输出图不够美观,并且不能添加置信区间和风险表。

这个时候首先想到用R的"survminer"包实现优雅地绘制生存曲线,解决这个需求最称手的当属ggsurvplot函数。

话不多说直接上代码和结果:

R软件具体操作如下:

1.导入数据(略),加载需要的包:

library(ggplot2) # 加载ggplot2包library(survival) # 加载survival包拟合生存对象library(survminer) # 加载survminer包绘制生存曲线

2.定义需要用于绘制生存函数的formula,直接用ggsurvplot画图。

ggsurvplot(survfit(Surv(Os,Status)~Group, data=data1),           pval=TRUE,           risk.table = TRUE)# 参数解释Surv(Os,Status)~Group,data=data1 # 生存函数formulapval=TRUE # 输出log-rank检验P值pval.method=TRUE  # 可以显示检验方法risk.table = TRUE # 输出风险表,默认FALSE

上面的代码与下面2行代码等同:

f ggsurvplot(f, pval=TRUE, risk.table = TRUE)

输出的图如下:

图4  R ggsurvplot绘制的生存函数图

我们发现默认输出的图是生存函数图,那要怎么得到事件发生的累计概率曲线图呢?

这时候需要用到(fun = " ")这个参数。

小编查阅了知乎、简书等分享的文章,其中不乏爱好R语言的临床研究者梳理的生存分析操作流程,有一些误以为fun="cumhaz"(累计风险图)就是事件发生的累计概率曲线图。

ggsurvplot(survfit(Surv(Os,Status)~Group,data=data1),           fun="cumhaz",           pval=TRUE,           risk.table = TRUE)

从图5看到,曲线是反过来的,但是仔细看纵坐标不是0-1,原来"cumhaz" 绘制的是随时间推移事件发生的累计风险(HR)。

图5 R ggsurvplot绘制的累计风险函数图

其实,仔细参阅ggsurvplot的参数说明,这个问题就迎刃而解了:

- "cumhaz" plots the cumulative hazard function (f(y) = -log(y)), 绘制累计风险图- "event" plots cumulative events (f(y) = 1-y), 绘制1-S(t)曲线- "pct" for survival probability in percentage,绘制百分比生存概率图

定义fun = "event",输出置信区间,接下来调整一下图的格式、配色,就可以得到一张漂亮的事件发生的累计概率曲线图啦。

ggsurvplot(survfit(Surv(Os,Status)~Group,data=data1),           fun = "event", # l绘制1-S(t)曲线           conf.int = TRUE,  # 输出曲线置信区间           conf.int.style="ribbon", # 可定义的类别包括("ribbon", "step")           conf.int.alpha=0.45, # 设置置信区间透明区           surv.plot.height= 0.7, # 生存图高度           main = "Survival curve",           legend.title = "Group",           legend.labs = c("Treat", "Control"),           legend=c(0.8,0.7),           xlab="Days",           ylab="Cumulative Event Rate (%)", # 或者直接写“1-S(t)”           xlim = c(0,60), ylim = c(0,1),           risk.table = TRUE,           tables.height = 0.15, # 生存曲线图下所有生存表的高度,数值0-1之间           tables.theme = theme_cleantable(),           font.main = c(14, "bold", "darkblue"),           font.x = c(14, "plain", "black"),           break.x.by = 10, break.y.by = 0.1,           font.y = c(14, "plain", "black"),           font.tickslab = c(12, "plain", "black"),           risk.table.col="strata",           risk.table.height=0.2,           palette = "npg", # 可选调色板有 "grey","npg","aaas","lancet","jco","ucscgb","uchicago","simpsons"和"rickandmorty".           ggtheme = theme_bw() # Change ggplot2 theme          )

图6 R ggsurvplot绘制的1-生存函数图

本期咨询答疑分享就到这里了,敲黑板总结如下:

  • R ggsurvplot 定义fun = "event"可以绘制1-S(t)曲线。
  • 学习R语言时一定要仔细看package的介绍文档,最好是结合算法原理来理解各个参数的使用。

欢迎各位小伙伴交流探讨,有任何意见和疑问随时后台留言~


相关文章

R语言统计与绘图:forestplot包绘制森林图 2020-05-29 R语言统计与绘图:pROC包绘制ROC曲线 2020-05-25 R语言统计与绘图:Kaplan-Meier生存曲线进阶 2020-05-21 R语言统计与绘图:生存曲线的两两比较 2020-04-01 R语言统计与绘图:生存率的比较 2020-03-24

绘制pr曲线图_生存分析如何绘制事件发生累计概率曲线图?相关推荐

  1. 电路分析导论_生存分析导论

    电路分析导论 In our extremely competitive times, all businesses face the problem of customer churn/retenti ...

  2. 如何对一个变量数据进行正则判定_生存分析数据中的BuckleyJamesMultipleRegression Model...

    一.模型简介 目前,生存分析领域,最常用的是Cox比例风险回归模型,该模型具有良好的特性,不仅可以分析各种自变量对生存时间的影响,而且对基准风险分布不作任何要求(半参数模型).Cox模型使用时要满足一 ...

  3. 变量的作用域和生存期:_生存分析简介:

    变量的作用域和生存期: In the previous article, I have described the Kaplan-Meier estimator. To give a quick re ...

  4. python 生存分析_生存分析之KM法

    KM法即乘积极限法(product-limit method),是现在生存分析最常用的方法,是由Kaplan和Meier于1958年提出,因此称Kaplan-Meier法,通常简称KM法.KM法是这样 ...

  5. python绘制社会关系网络图_文本分析之制作网络关系图——Python

    今天给大家带来我一个脚本,用来分析社会网络关系. 这个图我没有用到gephi或者其他的工具,是我用python纯脚本运行出来的.简单的实现了封装,大家有兴趣可以下载下脚本,运行下. 原理知识 我就简单 ...

  6. 批处理bat绘制五彩爱心_这个女人通过绘制世界上最长的洞穴而启发了首批热门电子游戏之一...

    批处理bat绘制五彩爱心 重点 (Top highlight) Claire L. Evans is the author of Broad Band: The Untold Story of the ...

  7. r语言怎么以第二列绘制线图_用卫星图像绘制世界海岸线图-第二部分

    r语言怎么以第二列绘制线图 Part I of this blog series is here. 本博客系列的第一部分 在这里 . At the UKHO we are interested in ...

  8. python中用于绘制各种图形_如何在Python绘制图形

    如何在Python绘制图形 Python提供了一种最流行的绘图库,称为Matplotlib.它是开源的,跨平台的,可以根据数组中的数据制作2D图.它通常用于数据可视化并通过各种图形表示. Matplo ...

  9. teechart绘制实时曲线_快速学会CAD绘制传输线路图纸

    一工具 CAD工程设计软件 二方法和步骤 万事开头难,遇到不懂的知识刚开始都有畏难的情绪,只要有决心学习,诚心想学会一项技能,那学会学好它就只是时间问题了.我们常常面临时间紧.需要快速入门甚至熟练地解 ...

最新文章

  1. python3调用OCR识别
  2. # 秒转换成分钟_10分钟时间,我用Excel完成了别人一天的数据分析工作
  3. 磊哥最近面试了好多人,聊聊我的感受!(附面试知识点)
  4. 【MM系列】SAP 关于更改物料的价格控制类型
  5. cesium three性能比较_硬金和千足金都是黄金,哪个比较好?为什么80%人都说硬金不好?...
  6. 谈谈Web Workers
  7. Python Package 之 Faker(随机姓名、电话)
  8. 3DGIS合伙人招募
  9. OpenModelica使用入门
  10. ZBrush雕刻人物:人体比例及肌肉骨骼介绍
  11. collect2:error:ld returned 1 exit status解决方案
  12. 计算机主机重装主机过程,电脑更换硬盘重装系统全过程详解
  13. 各大系统如何接入统一的登录认证
  14. Rosenblatt感知器
  15. 从整车控制器VCU模型入门simulink(3)
  16. 百度云服务器搭建(一)
  17. 盘点2021年流行报表开发工具【测评】
  18. Linux下CD/DVD刻录软件
  19. 减少小米MIUI广告
  20. JAVA程序计数器理解

热门文章

  1. CentOS/用FTP客户端软件连接到服务器
  2. asp.net2.0导出pdf文件完美解决方案
  3. SQL SERVER数据库文件收缩
  4. 修改oracle数据库密码
  5. 《Linux内核分析》MOOC课程之从汇编语言角度看计算机是如何工作的
  6. [JBoss] - 环境搭建
  7. winPcap_2_编译环境*注意*
  8. 实用正则表达式(实用篇)
  9. js离焦事件_JavaScript中的事件
  10. 【MM配置】Global Data 全局数据相关配置