生存分析机器学习

生存分析:时间背后的数据价值!

💡 生存分析是一种研究现象或物体随时间推移而发生的变化的方法,可广泛应用于金融、医疗、保险、交通等领域,比如预测疾病复发风险、评估投资产品收益、估算保险赔付概率等。通过挖掘数据背后的价值,可以帮助我们更好地理解现象、优化决策,实现效益最大化。

机器学习:让数据焕发生机

💡 机器学习则已经渗透到我们生活的方方面面,例如:推荐系统、图像识别、语音识别等。极大地提高了数据处理效率和准确性,将机器学习应用到生存分析中,将让数据分析变得更加高效、智能。

学习

1: 从本文你可以获得什么?

数据分析的目的无外乎就是通过统计方法找差异和相关关系,进而将数据分析分为:分类,回归(预测连续值)和生存分析。生存分析本质上也是一种回归问题,但和传统回归的不同之处是数据存在删失。删失原因包括:1)失访;2)其它原因死亡;3)到研究结束为止,研究对象仍未出现终点事件。

在数据分析过程中,小编发现大家最大的问题是无法将自己的变量在不同的分析目的中顺延下去,因此,基于此生存分析合集,你将主要学会如何具体应用深度学习模型进行生存分析,并且迅速掌握用python及R语言实现用自己的数据进行生存分析,发表文章。

整个过程,公众号回复关键字可免费获得数据及脚本。关于软件安装、环境搭建和自己数据导入分析过程中的问题可加小编微信,一对一远程辅导。

2:如何学习?

    小编认为,任何一项学习都是以理论指导下的实践优化。是以掌握生存分析中的核心概念是非常有必要的。鉴于目前生存分析的解读性文章太多,本公众号主打数据分析的实践、实战、复盘以及高分文章的复盘,本文只罗列核心的几个概念,欲只更多,大家可自行检索其他。

3:核心概念

生存时间(Survival Time):从某个特定事件开始,到观察对象发生研究事件(如死亡)或被截断(如失访、实验结束)所经历的时间。

删失(Censoring):是指在观察时间内,研究对象并未发生所关心的结局事件(如疾病复发、死亡等),但由于其他原因,导致我们无法获得该对象的事件发生时间。删失可以分为左删失、区间删失和右删失。
1)左删失是指在观察开始时,研究对象已经处于某种状态,我们无法获得该对象从起始点到观察开始时的生存时间信息。换句话说,生存时间被“剪去”了左端,因此被称为左删失。
举个栗子:假设要研究某种癌症的复发,生存时间是第一次确诊和第二次确诊的间隔。但研究对象不记得第一次确诊时间,我们无法知道患者确诊的具体时间,这就是左删失。

2)区间删失是生存分析中一种特殊的删失情况,它既包括左删失,也包括右删失。在区间删失中,我们只知道研究对象事件发生时间的一个时间区间,而无法确定具体的发生时间点。换句话说,生存时间在时间区间内是未知的。
举个栗子:假设要研究某种疾病的潜伏期,研究人员对一批已经感染该疾病的患者进行随访。由于潜伏期可能受到多种因素的影响,部分患者的潜伏期仅能确定一个大致的时间范围(如:20-30天),而无法确定具体的感染和发病时间。这种情况就属于区间删失。

3)右删失是指在观察期内,研究对象并未发生所关心的事件,但由于其他原因(如失访、搬迁等),导致我们无法获得该对象的事件发生时间。换句话说,生存时间被“剪去”了右端,因此被称为右删失。右删失通常发生在长期随访研究中,部分研究对象可能在观察期内失访或因其他原因无法继续参与研究。
举个栗子:在上述研究癌症复发的例子中,如果一个接受标准治疗的患者在观察期结束前因为其他原因(如搬迁)失去了联系,我们无法获得该患者在观察期内是否发生癌症复发或死亡的信息。这种情况就称为右删失。

在数据分析和录入中,遇到删失的处理方式:删除、填补(均数、中位数、众数)、临近值或相似值估计、多重差补法、缺失作为类别进行统计或机器学习处理。

存活函数(Survival Function):存活函数是描述个体在某个给定时间点上生存的概率。它是生存时间的累积分布函数(CDF),表示在给定时间 t 上存活的概率。

风险函数(Hazard Function):风险函数是描述在给定时间点 t 上事件发生的瞬时风险。它表示在某个时间点上事件发生的概率密度函数(PDF),给出了在该时间点上事件发生的概率。

生存曲线(Survival Curve):生存曲线是描述个体随时间变化的生存概率。它是存活函数的图形表示,通常为递减的曲线。

中位生存时间(Median Survival Time):中位生存时间是指在存活函数中,使得存活概率为0.5的时间点。它表示一半个体事件发生的时间点。

协变量(Covariates):协变量是可能影响生存时间的其他变量,如年龄、性别、治疗方案等。在生存分析中,可以考虑协变量对生存时间的影响。

累积风险(Cumulative Hazard):表示在给定时间范围内,事件累积发生概率的累积概率。它与生存函数互为补数。

4: 生存分析的方法

Kaplan-Meier估计:

     Kaplan-Meier方法是一种非参数方法,用于估计生存函数。它根据数据中观察到的生存时间和截断数据,绘制生存曲线,直观地展示生存情况和时间分布。

Log-Rank检验:

      Log-Rank检验是一种非参数的检验方法,不依赖于分布假设。它广泛应用于生存分析中,用于比较不同治疗组、不同风险因素或不同事件发生情况下的生存差异。

寿命表法:

     寿命表法是一种基于人群的历史数据或经验数据的方法,用于估计生存率和风险率。

半参数生存模型:

     这类模型结合了参数模型和非参数模型的优点,通常包括基线风险函数和协变量效应两部分。常见的半参数模型包括Cox比例风险模型、加速失效时间模型(AFT)等。

参数生存模型:这类模型基于特定的概率分布假设,对生存时间和风险率进行建模。常见的参数生存模型包括指数分布、威布尔分布、对数正态分布等。参数模型的优点是解析形式较简单,但可能受限于分布假设。

非参数生存模型:这类模型不基于特定的概率分布假设,可以灵活地适应各种生存时间分布。常见的非参数生存模型包括核估计方法等。非参数模型的优点是可以适应各种生存时间分布,但计算复杂度可能较高。

机器学习:

     随机生存森林(Random Survival Forest):随机生存森林是一种基于决策树的集成学习方法,用于生存分析预测。它通过构建多棵决策树,每棵树都使用随机选择的特征和样本进行训练,最后综合多棵树的预测结果得到最终的预测。

      支持向量机(Support Vector Machine,SVM):支持向量机是一种常用的机器学习算法,在生存分析中也有应用。通过将生存数据映射到高维空间,支持向量机可以在非线性情况下建立决策边界,从而进行生存时间的预测和分类。

      人工神经网络(Artificial Neural Networks,ANN):人工神经网络是一种模仿生物神经系统结构和功能的机器学习模型。在生存分析中,可以使用多层感知器(Multilayer Perceptron)等神经网络结构,通过学习和优化网络权重,进行生存时间的预测和建模。

     集成学习方法(Ensemble Learning):集成学习方法将多个基本模型的预测结果进行组合,从而得到更准确的预测。在生存分析中,可以使用基于集成学习的方法,如Bagging、Boosting等,对多个模型进行集成,提高生存时间的预测准确性。

     CoxBoost: Cox Boosting是一种集成学习方法,将Cox比例风险模型与Boosting算法相结合,用于解决生存分析问题。Boosting算法是一类迭代的统计学习方法,通过迭代地调整训练样本的权重,并结合一系列弱学习器(如决策树)来提高模型性能。

深度学习模型:

  Cox-nnet:Cox-nnet 是一种结合了深度学习和 Cox 比例风险模型的方法。它使用神经网络模型来估计 Cox 模型中的基线风险函数,然后利用经典的 Cox 模型进行相对风险的估计。Cox-nnet 可以灵活地处理各种类型的特征,包括连续型、分类型和高维稀疏型特征。
  DeepHit:DeepHit 是一种用于生存分析的深度学习模型,基于多任务学习的思想。它将生存分析任务分解为两个子任务:事件时间预测和事件状态预测。DeepHit 使用递归神经网络(Recurrent Neural Network)来学习时间相关特征,并利用深度神经网络(Deep Neural Network)来预测事件状态。

     DeepSurv:DeepSurv 是一种基于神经网络的生存分析模型,它使用多层感知器(Multilayer Perceptron)作为基本架构。它的输入是个体的特征信息和生存时间,输出是相对风险的估计值。DeepSurv 的目标是最小化 Cox 比例风险模型的负对数部分似然函数。
  以上只是生存分析的部分内容,本专栏将重点带大家在R语言及Python在Cox regression、机器学习和深度学习模型的实战复现中体会生存分析的魅力。

分析流程

R语言和Python在数据中的分析过程就像是在工具箱(packages)里取出具体的工具(function)去实现不同的目的,所以R语言和Python的数据分析速成就是在于对于包和函数的学习。

  用R或python进行数据分析的流程包括:

  1.数据加载
  2.数据清洗
  3.统计分析
  4.数据建模
  5.模型诊断
  6.数据预测
  7.预测评估
  8.模型比较

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel里如何的科学计数法的数字转换成数值?

比如下图,要想把它们转换成3250跟1780,有什么快捷的办法吗? 科学计数法在excel里的格式,与我们常规在数学上写的有差异。这个转换可以这样做: 1.转换后的效果: 2.问题分析 题目中所附截图,单元…

vue3.0项目生成标签条形码(插件:jsbarcode)并打印(插件:Print.js)支持pda扫码枪扫描

文章目录 功能场景生成条形码设置打印功能踩坑 功能场景 功能场景:供应链中对一些货品根据赋码规则进行赋码,赋码之后生成根据赋码结果生成条形码,执行打印功能,贴在货品之上,打印之后可以用pda的手枪进行扫描&#x…

服务端渲染 --- 模板引擎

一、Apach 替换页面的内容 template.html <table><thead><tr><th onclick"javascript;sortTable(0);">名称</th><th class"detailsColumn" onclick"javascript:sortTable(1);">大小</th><th clas…

ROS 2边学边练(28)-- 将launch文件集合到ROS 2包中

前言 上一篇我们单独创建了文件夹&#xff08;可以任何路径&#xff09;&#xff0c;并在其中创建编写了一份launch文件&#xff0c;调用了小海龟例程&#xff0c;但通常情况下这并非是launch文件的典型应用场景&#xff0c;更多的是在ROS 2功能包中创建使用launch文件。 动动…

Java将List平均分成多少份或者按照指定大小进行分割

目录 1. 将List平均分成多少份2. 将List按照每份指定的大小进行分割3. 完整代码示例以及测试 前言&#xff1a;此方法其实就是将一个列表按照指定份数或者指定大小对数据列表进行分割&#xff0c;如果不能整除则会将剩余的放到最后一个数组 1. 将List平均分成多少份 /*** 将Li…

算法训练营第44天|完全背包 LeetCode 518.零钱兑换Ⅱ 337.组合总和Ⅱ

完全背包 题目链接&#xff1a; 完全背包 代码&#xff1a; #include<iostream> #include<vector> using namespace std;void test(vector<int>weight,vector<int>value,int bagweight){vector<int>dp(bagweight1,0);for(int i0;i<weight.…

从AdTech转战Martech,驰骛科技的PaaS之路

中国最早的Adtech公司之一&#xff0c;在被全资收购后&#xff0c;其创始团队又创立了一家Martech公司。赛道的变更也从侧面反映出中国营销技术市场的发展轨迹。 驰骛科技创始团队来自易传媒核心团队&#xff0c;驰骛科技创始人程华奕是易传媒创始人兼CTO&#xff0c;是中国最早…

现在给政府机关医院学校部队供货的方式有哪些?

给政府机关、医院、学校和部队供货的方式主要包括以下几种&#xff1a; 直接采购&#xff1a;政府机关、医院、学校和部队通过招标或直接与供应商进行谈判&#xff0c;确定采购的产品和价格。这种方式常见于大宗或重要物资的采购&#xff0c;能够确保采购过程的透明度和公正性…

使用 Citavi 和 NVivo 简化您的文献综述和研究分析

NVivo 是一款支持定性研究方法和混合研究方法的软件。它可以帮助您收集、整理和分析访谈、焦点小组讨论、问卷调查、音频等内容。NVivo&#xff08;1.0版&#xff09;是Windows和Mac的主要版本。遵循最新的主要版本NVivo 12&#xff08;Windows和Mac&#xff09;。 NVivo 强大…

Linux服务器硬件及RAID配置

一、服务器硬件 塔式服务器&#xff1a;最初的服务器形态之一&#xff0c;类似于传统的台式电脑&#xff0c;但具有更强的处理能力和稳定性&#xff0c;适合小型企业或部门使用。 机架式服务器&#xff1a;设计为可安装在标准化机架内的模块化单元&#xff0c;可以有效地节省空…

致敬我过去的30年

曾几何时&#xff0c;30岁是一个遥不可及年纪&#xff0c;可是&#xff0c;今年我30了。 用雷总的话来说&#xff0c;就是现在的我&#xff0c;一事无成。 的确&#xff0c;好像真是一事无成 曾几何时&#xff0c;我想办一个伟大的企业&#xff0c;像马斯克那样&#xff0c;立一…

jetson nx 外接按钮,实现开机功能

本文参考自https://blog.csdn.net/m0_59584375/article/details/128050175 首先第一步&#xff0c;要短接jetson nx背面的AUTO ON 和DISABLE引脚 可以用跳帽短接&#xff0c;也可以直接用一根杜邦线连接这两个针脚 AUTO ON 和DISABLE引如下图红色圈 跳帽的样子如下图 我是直…

Mabtech:与结核病相关的肽库

Mabtech 新研发出了三个涵盖结核蛋白&#xff08;EspC、ESAT-6、CFP-10&#xff09;的肽库&#xff0c;可以区分潜伏性结核病和活动性结核病的区别。所有肽库都经过验证&#xff0c;都可用于ELISpot、FluoroSpot实验。 1. EspC scanning pool ● EspC scanning pool包含来自结…

42-软件部署实战(下):IAM系统安全加固、水平扩缩容实战

IAM应用安全性加固 iam-apiserver、iam-authz-server、MariaDB、Redis和MongoDB这些服务&#xff0c;都提供了绑定监听网卡的功能。将服务绑定到内网网卡上。 我们也可以通过iptables来实现类似的功能&#xff0c;通过将安全问题统一收敛到iptables规则&#xff0c;可以使我…

速看!2024中国(厦门)国际康复医疗展览会

2024中国&#xff08;厦门&#xff09;国际康复医疗展览会 2024 China (Xiamen) International Rehabilitation Medical Exhibition 时 间&#xff1a;2024年8月13-15日 August 13-15, 2024 地 点&#xff1a;厦门国际会展中心 Xiamen International Conference & Exh…

Java工具类:批量发送邮件(带附件)

​ 不好用请移至评论区揍我 原创代码,请勿转载,谢谢! 一、介绍 用于给用户发送特定的邮件内容,支持附件、批量发送邮箱账号必须要开启 SMTP 服务(具体见下文教程)本文邮箱设置示例以”网易邮箱“为例,其他如qq邮箱或企业邮箱均可,只要在设置中对应开启SMTP及授权码等操…

Unity URP 2022 Release-Notes

&#x1f308;Unity URP 2022 Release-Notes 本文信息收集来自自动搜集工具&#x1f448; 版本更新内容2022.3.15URP: Building 3D Sample Scenes (URP) Project fails(UUM-57781)2022.3.14URP: Fixed partially corrupted Android screen when Vulkan display rotation durin…

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day11】 —— MyBatis1

市面上主流ORM框架: EJB&#xff1a;重量级、高花费的ORM技术&#xff0c;支持JPA&#xff0c;尤其是EJB3低侵入式 的设计&#xff0c;增加了Annotation Hibernate&#xff1a;开源&#xff0c;支持JPA &#xff0c;被选作JBoss的持久层解决方案 iBatis&#xff1a;”SQL Mappi…

SpringBoot多数据源配置之事务管理

SpringBoot多数据源配置之事务管理 1.Spring编程式事务1.1 简单案例 2.mybatis多数据源事务2.1 简单mybatis项目结构2.2 application.yml配置2.3 读写数据源配置 3.测试 1.Spring编程式事务 Spring编程式事务是一种通过编写具体代码来实现事务管理的方式。 在编程式事务中, 开…

如何用ChatGPT进行论文撰写?

原文链接&#xff1a;如何用ChatGPT进行论文撰写&#xff1f;https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601619&idx1&snb686fbe87dedfac2df3a6afe780b2ffe&chksmfa820c34cdf5852251dca64597024ea62ddbde280086535ec251f4b62b848d9f9234688384e6…