【R语言】生存分析模型

生存分析模型是用于研究时间至某个事件发生的概率的统计模型。这个事件可以是死亡、疾病复发、治疗失败等。生存分析模型旨在解决在研究时间相关数据时的挑战,例如右侧截尾(右侧截尾表示未观察到的事件发生,例如研究结束时还未发生事件)和数据缺失。

生存分析模型最常用的是 Cox 比例风险模型,也称为 Cox 回归模型,它是一种半参数化的模型,用于估计时间相关数据中危险比(hazard ratio)的关系。危险比描述了不同条件下事件发生的概率之比。在 Cox 比例风险模型中,假设危险函数是可共享的,即不受时间的影响,而危险比只依赖于协变量的值。

除了 Cox 比例风险模型外,还有其他类型的生存分析模型,如加速失效时间模型(accelerated failure time model)、Weibull 比例风险模型等。这些模型在不同的数据情况下可能更适用,具体取决于研究的问题和数据的性质。

生存分析模型通常应用于医学、流行病学、社会科学等领域,用于研究疾病生存率、药物治疗效果、生存质量等方面。以下通过Cox模型做一个生存风险分析:

 

 代码如下:

if(!require(devtools)) install.packages("devtools")
devtools::install_github("kassambara/survminer", build_vignettes = FALSE)
library("survminer")
require("survival")
fit <- survfit(Surv(time, status) ~ sex, data = lung)
ggsurvplot(fit, data = lung)ggsurvplot(fit, data = lung, censor.shape="|", censor.size = 4)
  1. 首先,它检查是否已经安装了 devtools 包。devtools 是一个用于在 R 中开发和安装包的工具包。如果没有安装,它会使用 install.packages() 函数安装 devtools 包。

  2. 接下来,它使用 devtools 包中的 install_github() 函数从 GitHub 上安装 survminer 包。survminer 是一个 R 包,提供了用于生存分析可视化的工具和函数。

  3. 一旦 survminer 包安装完成,代码通过 library() 函数加载了 survminer 包以便后续使用。library("survminer")survminer 包加载到 R 的工作环境中。

  4. 然后,代码使用 require() 函数来检查是否已经加载了 survival 包。survival 包是一个用于生存分析的常用包。如果未加载,require() 函数会加载 survival 包。

  5. survfit() 函数用于拟合生存分析模型。在这个例子中,它拟合了一个 Cox 比例风险模型,其中生存时间由 time 变量表示,事件状态由 status 变量表示,与性别 sex 之间的关系进行建模。这个模型是基于 lung 数据集。

  6. 最后,ggsurvplot() 函数用于绘制生存曲线图。它接收拟合的生存分析模型 fit 和数据集 lung 作为输入,并生成一个生存曲线图,用于可视化不同性别在生存时间上的差异。

 代码如下:

ggsurvplot(fit,data = lung,size = 1,                 # 改变线条大小palette =c("#E7B800", "#2E9FDF"),# 自定义颜色调色板conf.int = TRUE,          # 添加置信区间pval = TRUE,              # 添加 p 值risk.table = TRUE,        # 添加风险表risk.table.col = "strata",# 风险表按组着色legend.labs =c("男性", "女性"),      # 更改图例标签risk.table.height = 0.25, # 当有多个组时,修改风险表高度很有用ggtheme = theme_bw()      # 更改 ggplot2 主题为黑白风格
)

这段代码调用了 ggsurvplot() 函数,用于绘制生存曲线图,并设置了一些参数进行绘图的自定义。

  • size = 1:改变生存曲线的线条大小。
  • palette = c("#E7B800", "#2E9FDF"):定义了两个颜色,用于表示不同性别的生存曲线。
  • conf.int = TRUE:在生存曲线上添加了置信区间。
  • pval = TRUE:在生存曲线图上添加了 p 值。
  • risk.table = TRUE:在图的旁边添加了风险表。
  • risk.table.col = "strata":根据不同的组(strata)对风险表进行了着色。
  • legend.labs = c("男性", "女性"):将图例标签更改为了 "男性" 和 "女性"。
  • risk.table.height = 0.25:当有多个组时,可以使用此参数来修改风险表的高度。
  • ggtheme = theme_bw():将 ggplot2 的主题更改为了黑白风格。

 

代码如下: 

ggsurvplot(fit,                     # 拟合生存曲线的 survfit 对象。data = lung,             # 用于拟合生存曲线的数据集。risk.table = TRUE,       # 显示风险表。pval = TRUE,             # 显示 log-rank 检验的 p 值。conf.int = TRUE,         # 显示生存曲线点估计的置信区间。xlim = c(0,500),         # 设置 X 轴范围为 0 到 500 天。xlab = "时间(天)",      # 自定义 X 轴标签。break.time.by = 100,     # 按 100 天的时间间隔分割 X 轴。ggtheme = theme_light(), # 使用 theme_light() 函数定制绘图和风险表的主题。risk.table.y.text.col = T, # 颜色风险表文本注释。risk.table.y.text = FALSE # 在风险表的文本注释中显示条形图而不是名称。
)

这段代码调用了 ggsurvplot() 函数,用于绘制生存曲线图,并设置了一些参数进行绘图的自定义。

  • fit:拟合生存曲线的 survfit 对象。
  • data = lung:用于拟合生存曲线的数据集。
  • risk.table = TRUE:显示风险表。
  • pval = TRUE:显示 log-rank 检验的 p 值。
  • conf.int = TRUE:显示生存曲线点估计的置信区间。
  • xlim = c(0,500):设置 X 轴范围为 0 到 500 天。
  • xlab = "时间(天)":自定义 X 轴标签为 "时间(天)"。
  • break.time.by = 100:按 100 天的时间间隔分割 X 轴。
  • ggtheme = theme_light():使用 theme_light() 函数定制绘图和风险表的主题。
  • risk.table.y.text.col = T:颜色风险表文本注释。
  • risk.table.y.text = FALSE:在风险表的文本注释中显示条形图而不是名称。

 代码如下:

ggsurv <- ggsurvplot(fit,                     # 拟合生存曲线的 survfit 对象。data = lung,             # 用于拟合生存曲线的数据集。risk.table = TRUE,       # 显示风险表。pval = TRUE,             # 显示 log-rank 检验的 p 值。conf.int = TRUE,         # 显示生存曲线点估计的置信区间。palette = c("#E7B800", "#2E9FDF"), # 自定义颜色调色板。xlim = c(0,500),         # 设置 X 轴范围为 0 到 500 天。xlab = "时间(天)",      # 自定义 X 轴标签。break.time.by = 100,     # 按 100 天的时间间隔分割 X 轴。ggtheme = theme_light(), # 使用 theme_light() 函数定制绘图和风险表的主题。risk.table.y.text.col = T, # 颜色风险表文本注释。risk.table.height = 0.25, # 风险表的高度。risk.table.y.text = FALSE, # 在风险表的文本注释中显示条形图而不是名称。ncensor.plot = TRUE,      # 绘制时间 t 处被截尾的观察数。ncensor.plot.height = 0.25, # 截尾观察数的高度。conf.int.style = "step",  # 自定义置信区间的样式。surv.median.line = "hv",  # 添加中位生存指针。legend.labs =c("男性", "女性")      # 更改图例标签。
)
ggsurv

这段代码调用了 ggsurvplot() 函数来创建一个生存曲线图,并将结果存储在名为 ggsurv 的变量中,然后打印出这个生存曲线图。

  • ncensor.plot = TRUE:绘制时间 t 处被截尾的观察数。
  • ncensor.plot.height = 0.25:截尾观察数的高度。
  • conf.int.style = "step":自定义置信区间的样式为 "step"。
  • surv.median.line = "hv":添加中位生存指针,指定其样式为水平垂直线。
  • legend.labs = c("男性", "女性"):更改图例标签为 "男性" 和 "女性"。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

重定向_缓冲区

目录 重定向 文件属性操作 浅谈重定向​编辑 深入重定向 dup2 缓冲区 缓冲区的理论理解 代码分析 重定向 文件属性操作 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(const char *path, struct stat *buf); int fstat(i…

Densenet+SE

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 这周开始学习关于经典模型的改进如加注意力机制&#xff0c;这周学习Densenet加通道注意力即SE注意力机制。 ##SE注意力机制简介 SE&#xff08;…

AI智能分析视频监控行业的发展趋势和市场发展浅析

监控视频AI智能分析技术的现状呈现出蓬勃发展的态势&#xff0c;这一技术源于计算机视觉和人工智能的研究&#xff0c;旨在将图像与事件描述之间建立映射关系&#xff0c;使计算机能够从视频图像中分辨出目标信息。 在技术上&#xff0c;监控视频AI智能分析技术已经实现了对视…

iOS ------ 内存五大分区

1&#xff0c;内存的概念&#xff1a; 虚拟内存&#xff08;Virtual Memory&#xff09;&#xff1a;虚拟内存是操作系统提供的一种机制&#xff0c;它使得应用程序能够访问超出物理内存限制的内存空间。虚拟内存将应用程序的内存地址空间分割成固定大小的页面&#xff08;Pag…

数字孪生涉及到的前沿技术:虚拟现实 人工智能 区块链 边缘计算。

数字孪生是各类技术的综合应用&#xff0c;除了咱们常见的传感器、数据采集、清洗、传输、建模、可视化技术外&#xff0c;还有还有一些前沿技术&#xff0c;会让数字孪生更加强大和智能&#xff0c;本文介绍几个。 虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#x…

ComfyUI中图像亮度/对比度/饱和度处理

用上面这个节点可以同时设置图片的亮度、对比度和饱和度。 【保姆级教程】一口气分享在ComfyUI中常用的30多种基本图像处理方式 更多好玩且实用AIGC工作流和节点 星球号&#xff1a;32767063 本期资料链接 往期学习资料 整理AI学习资料库

Python基础详解三

一&#xff0c;函数的多返回值 def methodReturn():return 1,2x,ymethodReturn() print(x,y) 1 2 二&#xff0c;函数的多种参数使用形式 缺省参数&#xff1a; def method7(name,age,address"淄博"):print("name:"name",age"str(age)&quo…

去哪儿网机票服务请求体bella值逆向

作者声明&#xff1a;文章仅供学习交流与参考&#xff01;严禁用于任何商业与非法用途&#xff01;否则由此产生的一切后果均与作者无关&#xff01;如有侵权&#xff0c;请联系作者本人进行删除&#xff01; 一、加密定位 直接全局搜索bella&#xff0c;在可疑的地方下断&…

二叉树习题汇总

片头 嗨&#xff01;大家好&#xff0c;今天我们来练习几道二叉树的题目来巩固知识点&#xff0c;准备好了吗&#xff1f;Ready Go ! ! ! 第一题&#xff1a;二叉树的最大深度 解答这道题&#xff0c;我们采用分治思想 1. 递归子问题&#xff1a;左子树的高度和右子树的高度 …

Ubuntu22.04下安装kafka_2.11-0.10.1.0并运行简单实例

目录 一、版本信息 二、安装Kafka 1.将Kafka安装包移到下载目录中 2.下载Spark并确保hadoop用户对Spark目录有操作权限 三、启动Kafka并测试Kafka是否正常工作 1.启动Kafka 2.测试Kafka是否正常工作 一、版本信息 虚拟机产品&#xff1a;VMware Workstation 17 Pro 虚…

WPF之自定义绘图

1&#xff0c;创建自定义控件类 class CustomDrawnElement:FrameworkElement{public static readonly DependencyProperty BackgroundColorProperty;static CustomDrawnElement(){FrameworkPropertyMetadata meta new FrameworkPropertyMetadata(Colors.SkyBlue);meta.Affects…

【初阶数据结构】栈

目录 栈的概念及结构栈的实现栈的结构栈的初始化栈的销毁入栈出栈取栈顶元素判断栈是否为空取栈中元素个数代码测试 完整代码Stack.hStack.ctest.c 栈的概念及结构 栈&#xff1a;是一种特殊的线性表&#xff0c;它只允许在固定的一端进行插入和删除元素的操作。   栈顶&…

代码随想录算法训练营DAY47|C++动态规划Part8|198.打家劫舍、213.打家劫舍II、198.打家劫舍III

文章目录 198.打家劫舍思路CPP代码 ⭐️213.打家劫舍II解决环的问题思路总结CPP代码 ⭐️198.打家劫舍III思路递归三部曲——确定参数和返回值递归三部曲——确定终止条件递归三部曲——确定单层遍历的逻辑 打印dp数组CPP代码暴力递归记忆化递归 198.打家劫舍 力扣题目链接 文章…

爬虫:爬取豆瓣电影

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 上篇我们将到如何利用xpath的规则&#xff0c;那么这一次&#xff0c;我们将通过案例来告诉读者如何使用Xpath来定位到我们需要的数据&#xff0c;就算你不懂H5代码是怎么个嵌套或者十分复…

3D模型素材有哪些常见的用途?

3D模型素材已经成为了设计、游戏开发、电影制作和建筑等领域的重要工具。它们以其独特的形式和丰富的细节&#xff0c;为这些领域的专业人士提供了无尽的创作可能性。 1.建筑和室内设计&#xff1a;在建筑设计中&#xff0c;3D模型可以帮助建筑师更直观地展示设计方案&#xff…

Mysql 基础 - 常见 子句

算数运算符 > < > < !/<> 逻辑运算符 3i in is null is not null 2l limit like 2o or 、order by 1a and ib between and 1n not and、or 、not、 in、 orderby、 limit、 like、 between...and、 is null 、is not null

智能家居4 -- 添加接收消息的初步处理

这一模块的思路和前面的语言控制模块很相似&#xff0c;差别只是调用TCP 去控制 废话少说&#xff0c;放码过来 增添/修改代码 receive_interface.c #include <pthread.h> #include <mqueue.h> #include <string.h> #include <errno.h> #include <…

全面的Partisia Blockchain 生态 4 月市场进展解读

Partisia Blockchain 是一个以高迸发、隐私、高度可互操作性、可拓展为特性的 Layer1 网络。通过将 MPC 技术方案引入到区块链系统中&#xff0c;以零知识证明&#xff08;ZK&#xff09;技术和多方计算&#xff08;MPC&#xff09;为基础&#xff0c;共同保障在不影响网络完整…

SOLIDWORKS Electrical电气元件智能开孔

实际的电气元器件安装中&#xff0c;一些元器件需要穿过孔洞安装&#xff0c;例如按钮、指示灯会在配电柜的控制面板上&#xff0c;需要穿过控制面板安装。这部分内容放在软件建模、装配时&#xff0c;往往比较复杂因为考虑孔的大小符合元器件规格、孔跟随元器件移动、同一元器…

Java 中的 HTTP 客户端库OkHttp、Apache HttpClient和HttpUrlConnection

大家好&#xff0c;我是G探险者。 项目开发里面经常会有这么一种场景&#xff1a;与服务器进行 HTTP 通信。一般存在于服务间远程调用的场景 Java 生态系统提供了多种 HTTP 客户端库&#xff0c;每种都有其自己的特点、优势和适用场景。 本文将介绍几种主要的 Java HTTP 客户…