【R语言】生存分析模型

2024-05-09 01:20
文章标签 语言 生存 分析模型

本文主要是介绍【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("男性", "女性"):更改图例标签为 "男性" 和 "女性"。

这篇关于【R语言】生存分析模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971988

相关文章

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而