用R语言用生存资料做基于radiomic(影像组学)的生存分析

2023-12-18 00:48

本文主要是介绍用R语言用生存资料做基于radiomic(影像组学)的生存分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近写好了一篇肿瘤二区SCI,具体就不透露了,来跟大家分享一下经验,觉得好的可以留言哈。本文内不懂得可以留言我们一起讨论,很多词在

前面的文章中已经写了。

要想做基于影像组学的生存分析,肯定是离不开和医院的合作,因为你要拿数据啊,医院出数据,你提供算法,俩人共同第一作者……下面以预测某癌症手术后的复发为目的,按处理顺序来讲一下这个大概是要怎么做。(这里生存终点是指复发,生存时间是治疗开始到复发或者删失)

  • 拿数据

拿数据之前,你要和医生商量好对数据做怎么样的标定,如按照你的生存终点,对文件夹分类放置病例。另外随访信息也要处理好,主要是用那些临床因子很完整的病人。这一步没做好,后面会很头疼的。另外说一下,有文献指出,做生存分析时,发生终点事件的样本越多越好,即删失数目越少越好,最好是删失数小于30%,当然,如果你的结果够好,这都不是问题。

 

  • 提取radiomic特征

这一步我推荐大家会python的用pyRadiomics,不会用的就用3DSlicer的同名插件。这是哈佛医学院出的用来提取组学中常用的一些特征(强度,纹理,形状,小波等),很全面,文档也很规整,只是现在只能用nrrd格式的数据,对dicom支持的不好,因为dicom需要处理复杂的文件头,当然自己写得提特征程序就更好。

 

 

  • 分训练集和验证集

数据量少就别分训练验证集了,最好用交叉验证,做内部验证。数据量多(比如大于100),你可以按照2:1或者1:1的方法随机分训练验证集。

 

  • 特征降维

 

提取完组学特征,你会发现一个病人就有几百个特征,而你的数据量一般都是小于特征数量的,这样你就需要对特征进行降维,选用合适的降维方法非常重要,常用的方法是基于主成分分析的方法或者Cox模型加上惩罚项。

 

  • 建模

选用适当的用于生存分析的模型,具体你可以上WOS搜radiomic survival analysis关键字,一大堆文献,找分高的,看看人家用什么模型,站在前

 

人的肩膀上走得更快,这句话在哪都没错。可以用随机生存森林或者Cox风险比例回归模型,是比较常用的。随机森林推荐使用R包:randomForestSRC

将降维之后的特征,一般这就是和终点事件高度相关的特征,代入模型,得到每个病人发生终点事件的风险(或者叫做可能性,可用predict函数得到),

组学中有一个高大尚的名字,叫做“组学标签 radiomic signature”。

 

  • 分高低风险组

 

在训练集上用模型拟合数据之后,对工科生来讲不难理解,就是再用模型对验证集上每个病人做一个预测,其实就是表示这些病人复发的可能性有

多大,就像Cox回归里面的PI用于对每个病人做预后打分,是类似的。之后的事情就是在验证集上分析了。因为之前我们得到了每个病人发生终点事件的

可能性(模型预测的值),根据这个值,我们取一个cutoff(大部分文献中是用的是训练集中病人预测值的中值,然后也用于验证集),分别把训练集和

验证集的病人分成两组,也就是常见的高低风险组(High/Low risk group)。

 

  • 做K-M曲线

分别在训练集和验证集做K-M曲线,分析高低风险组病人的生存率是否有差别。这里需要使用log-rank(又叫时序检验)假设检验来判断两组生存

率是否有统计学差异。通常问题的零假设是“两组病人生存率的分布在组学标签这一特征上相同”,若log-rank得到的p值小于0.05,则说明可以通过组学

标签将病人分开,分开的高低风险组的两组病人有统计学差异,这就是我们想要的结果——组学标签可以作为一个有效的biomarker。推荐包survival

以上这些已经够随随便便发一个中文期刊了,要想进一步证明组学标签的有效性,还要进行单因素和多因素分析,并且要根据实际问题做更进一步

的分析,以及检验模型的预测能力。

最近找工作,更多的分析等有时间再写。

哦对了,R语言推荐使用Rstudio 装各种包就是一个命令的事情。更详细的参考PPT

 

 

这篇关于用R语言用生存资料做基于radiomic(影像组学)的生存分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、