用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

相关文章

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

C++ scoped_ptr 和 unique_ptr对比分析

《C++scoped_ptr和unique_ptr对比分析》本文介绍了C++中的`scoped_ptr`和`unique_ptr`,详细比较了它们的特性、使用场景以及现代C++推荐的使用`uni... 目录1. scoped_ptr基本特性主要特点2. unique_ptr基本用法3. 主要区别对比4. u

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng

Java多种文件复制方式以及效率对比分析

《Java多种文件复制方式以及效率对比分析》本文总结了Java复制文件的多种方式,包括传统的字节流、字符流、NIO系列、第三方包中的FileUtils等,并提供了不同方式的效率比较,同时,还介绍了遍历... 目录1 背景2 概述3 遍历3.1listFiles()3.2list()3.3org.codeha

GO语言zap日志库理解和使用方法示例

《GO语言zap日志库理解和使用方法示例》Zap是一个高性能、结构化日志库,专为Go语言设计,它由Uber开源,并且在Go社区中非常受欢迎,:本文主要介绍GO语言zap日志库理解和使用方法的相关资... 目录1. zap日志库介绍2.安装zap库3.配置日志记录器3.1 Logger3.2 Sugared

Go语言中如何进行数据库查询操作

《Go语言中如何进行数据库查询操作》在Go语言中,与数据库交互通常通过使用数据库驱动来实现,Go语言支持多种数据库,如MySQL、PostgreSQL、SQLite等,每种数据库都有其对应的官方或第三... 查询函数QueryRow和Query详细对比特性QueryRowQuery返回值数量1个:*sql

GO语言中gox交叉编译的实现

《GO语言中gox交叉编译的实现》本文主要介绍了GO语言中gox交叉编译的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、安装二、使用三、遇到的问题1、开启CGO2、修改环境变量最近在工作中使用GO语言进行编码开发,因