R语言绘制可用于论文发表的生存曲线图|科研绘图·24-08-25

小罗碎碎念

有关于生存曲线的基本概念(例如删失事件的定义)和绘图的详细教程我已经在5月的推文中介绍过了,有需求的同学欢迎前去考古。

R语言绘制生存分析曲线·从概念到实战的保姆级教程|2024-05-12

https://mp.weixin.qq.com/s/Z6gBbpBlALT_KKgEW29Stg

今天这期推文的目的是把主要的代码框架梳理出来,方便快速调用,省去浏览知识点分析的过程。

成品展示

跟着这期推文,你最后能实现的效果如下。

image-20240825082923321


一、曲线解读

假设我们已经掌握了一定的基础知识,那么可以看下列这个曲线。

原文链接:https://mp.weixin.qq.com/s/EiQUtJI7KlXnK_AYMhVL1g

①OS:总生存期

②纵坐标:患者生存率

③横坐标:观察时间

④HR:目标gene高表达组相对于低表达组的死亡风险比;HR<1,代表gene高表达抑制死亡;P<0.05说明两组间差异有统计学意义

⑤代表删失数据

⑥两条曲线在各个时间点上对应的人数

⑦组别:代表不同组别对应曲线


二、曲线绘制

先调用自带的数据做一些分析,然后我再介绍如何利用自己的数据进行分析。

2-1:装包

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

2-2:导入内置数据集

使用survival包的lung数据集进行演示。

View(lung) # 查看数据集

image-20240512035203570

  1. inst # 机构代码;

  2. time # 生存天数;

  3. status # 生存状态;

  4. age # 年龄;

  5. sex # 性别,1为男性,2为女性;

  6. ph.ecog、ph.karno、pat.karno # 为病人和患者评分,这里用不到;

  7. meal.cal # 进食时消耗的卡路里;

  8. wt.loss # 最近6个月内的体重下降。


2-3:拟合生存曲线

创建生存对象

survival包中先使用Surv()函数创建生存对象,生存对象是将事件时间和删失信息合并在一起的数据结构。

attach(lung) # 绑定数据集 
Surv(time,status) # 创建生存对象

这个生存对象通常用于后续的生存分析模型中,如Cox比例风险模型等,以估计生存函数、风险比或者进行时间至事件的分析。


拟合曲线

在R语言中,生存分析通常涉及使用survival包中的survfit()函数来拟合生存数据。

fit <- survfit(Surv(time,status) ~ sex,data = lung) # 数据集来源 
fit # 查看拟合曲线信息
plot(fit)#绘制曲线

现在其实就可以绘制一个非常粗糙的曲线了,后续会介绍如何完善。

image-20240824112127054


绘制基础曲线

在R语言中,ggsurvplot() 函数是 survminer 包提供的一个用于绘制生存曲线的高级函数,它基于 ggplot2 包的图形语法。

ggsurvplot(fit, data = lung)

image-20240824112236982


三、自定义曲线

3-1:增加中位生存时间

中位生存时间(median survival time)又称为生存时间的中位数,表示刚好有50%的个体其存活期大于该时间,是生存分析中常用的概括性统计量。

图解法是计算中位生存时间的方法。其利用生存曲线图,从纵轴生存率为50%处画一条与横轴平行的线,并与生存曲线相交,然后自交点画垂线与横轴相交,此交点对应的时间即为中位生存时间。

ggsurvplot(fit, data = lung, surv.median.line = "hv") # 增加中位生存时间

image-20240824112426629

从图上可以看出,男性的中位生存时间小于女性。由之前的结果可知具体时间——男性为270,女性为426。


3-2:增加置信区间

ggsurvplot(fit, data = lung, surv.median.line = "hv",conf.int = TRUE) # 增加置信区间

image-20240824112526757


3-3:累计风险曲线

当你在 ggsurvplot() 函数中设置 fun = "cumhaz" 时,函数会生成累积风险曲线,而不是默认的生存曲线。累积风险曲线通常用于展示在不同时间点之前至少一次发生事件的累积概率

ggsurvplot(fit, data = lung, conf.int = TRUE,fun = "cumhaz") # 绘制累计风险曲线

image-20240512094308432

⚠️累积风险曲线在某些情况下比生存曲线更有用,尤其是在想要强调事件发生风险随时间的累积效应时。然而,累积风险曲线的解释可能比生存曲线更复杂,因此在选择使用时需要考虑分析的目的和受众。


3-4:风险表

ggsurvplot(fit, data = lung, conf.int = TRUE,risk.table = TRUE) # 绘制累计风险曲线

image-20240824112855903


3-5:总患者生存曲线

ggsurvplot(fit, # 创建的拟合对象 data = lung, # 指定变量数据来源 conf.int = TRUE, # 显示置信区间 pval = TRUE, # 添加P值 surv.median.line = "hv", # 添加中位生存时间线 add.all = TRUE) # 添加总患者生存曲线

image-20240512095250773


3-6:自定义调色板

ggsurvplot(fit, # 创建的拟合对象 data = lung, # 指定变量数据来源 conf.int = TRUE, # 显示置信区间 pval = TRUE, # 添加P值 surv.median.line = "hv", # 添加中位生存时间线 palette = "hue") # 自定义调色板 

image-20240512095528289


3-7:美化生存曲线

ggsurvplot(fit, # 创建的拟合对象 data = lung, # 指定变量数据来源 conf.int = TRUE, # 显示置信区间 pval = TRUE, # 添加P值 surv.median.line = "hv", # 添加中位生存时间线 risk.table = TRUE, # 添加风险表 xlab = "Follow up time(d)", # 指定x轴标签 legend = c(0.8,0.75), # 指定图例位置 legend.title = "sex", # 设置图例标题 legend.labs = c("Male", "Female"), # 指定图例分组标签 break.x.by = 100) # 设置x轴刻度间距

image-20240512100344373


3-8:添加标题

ggsurvplot(fit, data = lung, conf.int = TRUE, pval = TRUE, surv.median.line = "hv", risk.table = TRUE, xlab = "Follow up time(d)", legend = c(0.8,0.75), legend.title = "sex", legend.labs = c("Male", "Female"), break.x.by = 100,title = "Author-LXLTX") # 添加图表标题

image-20240825082857755

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/410635.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL进阶技巧:如何按任意时段分析时间区间问题? | 分区间讨论【左、中、右】

目录 0 场景描述 1 数据准备 2 问题分析 方法1:分情况讨论,找出重叠区间 方法2:暴力美学法。按区间展开成日期明细表 3 拓展案例 4小结 0 场景描述 现有用户还款计划表 user_repayment ,该表内的一条数据,表示用户在指定日期区间内 [date_start, date_end] ,每天…

秋招突击——8/21——知识补充——计算机网络——cookie、session和token

文章目录 引言正文Cookie——客户端存储和管理Session——服务端存储和管理Token补充签名和加密的区别常见的加密算法和签名算法 面试题1、HTTP用户后续的操作&#xff0c;服务端如何知道属于同一个用户&#xff1f;如果服务端是一个集群机器怎么办&#xff1f;2、如果禁用了Co…

【Python 千题 —— 基础篇】简易图书管理系统

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目描述 题目描述 编写一个面向对象的程序,模拟一个图书管理系统。要求定义一个 Book 类,具有基本的书籍信息功能;然后,创建一个 Library 类,用于管理多个 B…

Vue3搜索框(InputSearch)

效果如下图&#xff1a;在线预览 APIs InputSearch 参数说明类型默认值width搜索框宽度&#xff0c;单位 pxstring | number‘100%’icon搜索图标boolean | slottruesearch搜索按钮&#xff0c;默认时为搜索图标string | slotundefinedsearchProps设置搜索按钮的属性&#xf…

【Qt】容器类控件GroupBox

容器类控件GroupBox 使用QGroupBox实现一个带有标题的分组框&#xff0c;可以把其他的控件放在里面里面作为一组&#xff0c;这些内部的控件的父元素也就不是this了。 其目的只是为了让界面看起来更加好看&#xff0c;例如当一个界面比较复杂的时候&#xff0c;包含了很多的控…

APP封装安装配置参考说明

APP封装安装配置参考说明 一, 环境准备 宝塔环境 nginx php5.6 mysql5.6 java-openjdk1.8 apktool 1,安装 nginx,php,mysql自行安装 java-openjdk1.8 安装 推荐使用命令行安装 1.1 yum install java-1.8.0-openjdk1.2 yum install -y java-1.8.0-openjdk-devel1.3 设置…

Unity | 性能标准分析工具图形API简介

目录 一、相关术语 1.物理页 2.PSS内存 3.Reserved Total 二、耗时推荐值 三、内存推荐值 四、分析工具 1.Profiler &#xff08;1&#xff09;Profiler各平台对比 &#xff08;2&#xff09;构建到目标平台 &#xff08;3&#xff09;Frame数量修改 &#xff08;4…

天宝TBCTrimble Business Center中文版本下载安装使用介绍

天宝TBC&#xff1a;测绘之道&#xff0c;尽在其中 引言 昔日杜甫&#xff0c;忧国忧民&#xff0c;今朝我辈&#xff0c;测绘天下。天宝TBC&#xff0c;乃测绘之利器&#xff0c;助我等行走于山川河流之间&#xff0c;绘制天地之图。此文将以杜甫之笔&#xff0c;述说TBC之妙…

【数据结构】栈(stack)

目录 栈的概念 栈的方法 栈的实现 数组实现 push方法 压栈 pop方法 出栈 peek方法 获取栈顶元素 size方法 获取有效元素个数 链表实现 结尾 完整代码 数组实现栈代码 双向链表实现栈代码 栈的概念 栈是一种特殊的线性表&#xff0c;只允许在 固定的一段 进行插入…

kafka发送消息-生产者发送消息的分区策略(消息发送到哪个分区中?是什么策略)

生产者发送消息的分区策略&#xff08;消息发送到哪个分区中&#xff1f;是什么策略&#xff09; 1、默认策略&#xff0c;程序自动计算并指定分区1.1、指定key&#xff0c;不指定分区1.2、不指定key&#xff0c;不指定分区 2、轮询分配策略RoundRobinPartitioner2.1、创建配置…

使用idea快速创建springbootWeb项目(springboot+springWeb+mybatis-Plus)

idea快速创建springbootWeb项目 详细步骤如下 1&#xff09;创建项目 2&#xff09;选择springboot版本 3&#xff09;添加web依赖 4&#xff09;添加Thymeleaf 5&#xff09;添加lombok依赖 然后点击create进入下一步 双击pom.xml文件 6&#xff09;添加mybatis-plus依赖 …

【系统分析师】-案例篇-数据库

1、分布式数据库 1&#xff09;请用300字以内的文字简述分布式数据库跟集中式数据库相比的优点。 &#xff08;1&#xff09;坚固性好。由于分布式数据库系统在个别结点或个别通信链路发生故障的情况下&#xff0c;它仍然可以降低级别继续工作&#xff0c;系统的坚固性好&…

Ubuntu搭建FTP服务器

目录 1.ftp简介 2.vsftpd 2.1.介绍 2.2.安装与卸载 2.3.综合案例 - 本地用户模式 2.4.1.创建FTP用户 2.4.2.配置vsftpd 2.4.3.配置防火墙 1.ftp简介 一般来讲&#xff0c;人们将计算机联网的首要目的就是获取资料&#xff0c;而文件传输是一种非常重要的获取资料的方…

Docker 修改镜像源

由于docker hub 被禁&#xff0c;导致 docker 拉取镜像失败&#xff0c;解决办法就是使用国内的镜像源&#xff0c;目前国内的镜像源还是很多的&#xff0c;例如阿里云、腾讯云、华为云等等&#xff0c;下面演示一个更换成阿里云的步骤。 1. 阿里云获取加速地址 1.1 首先登录阿…

Git —— 1、Windows下安装配置git

Git简介 Git 是一个免费的开源分布式版本控制系统&#xff0c;旨在处理从小型到 快速高效的超大型项目。 Git 易于学习&#xff0c;占用空间小&#xff0c;性能快如闪电。 它超越了 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具 具有 cheap local branching、 方便的暂…

HIVE 数据仓库工具之第一部分(讲解部署)

HIVE 数据仓库工具 一、Hive 概述1.1 Hive 是什么1.2 Hive 产生的背景1.3 Hive 优缺点1.3.1 Hive的优点1.3.2 Hive 的缺点 1.4 Hive在Hadoop生态系统中的位置1.5 Hive 和 Hadoop的关心 二、Hive 原理及架构2.1 Hive 的设计原理2.2 Hive 特点2.3 Hive的体现结构2.4 Hive的运行机…

Linux 配置wireshark 分析thread 使用nRF-Sniffer dongle

Linux 配置wireshark nRF-Sniffer-for-802.15.4 1.下载固件和配置文件 https://github.com/NordicSemiconductor/nRF-Sniffer-for-802.15.4 2.烧写固件 使用nRF Connect for Desktop 中的 programmer 4.3烧写 https://www.nordicsemi.com/Products/Development-tools/nrf-conne…

【layUI】点击导出按钮,导出excel文件

要实现的功能如下&#xff1a;根据执行状态判断是否可以导出。如果可以导出&#xff0c;点击导出&#xff0c;在浏览器里下载对应的文件。 代码实现 html里&#xff1a; <table class"layui-hide" id"studentTable" lay-filter"studentTable&…

Dubbo3框架概述

1 什么是分布式系统? 《分布式系统原理与范型》定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distributed system)是建立在网络之上的软件系统。 简单来说:多个(不同职责)人共同来完成一件事! 任何一台服务器都无法…

open62541 使用账号密码认证示例

一、官方源码示例 源码参考 服务端官方示例&#xff1a; /* This work is licensed under a Creative Commons CCZero 1.0 Universal License.* See http://creativecommons.org/publicdomain/zero/1.0/ for more information. */#include <open62541/plugin/accesscont…