用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

相关文章

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时