生存分析函数小结

【生存分析】参数模型 - 加速失效(AFT)模型 加速失效(AFT)模型 假设 TTT 为失效时间,xxx 为协变量,加速失效(accelerate failure time)模型的假设是,一个人的生存时间等于人群基准生存时间 * 这个人的加速因子,其数学形式如下: T=t∗eθ⋅x, t=eμ+σ∗WT=t * e^{\theta \cdot x},\ t=e^{\mu + \sigma*W}T=t∗eθ⋅x, t=eμ+σ... 阅读详情

http://bbs.sciencenet.cn/blog-252888-719677.html 

生存分析(survival analysis)适合于处理时间-事件数据。例如中风病人从首次发病到两次复发,其中就涉及到时间和事件。此例中时间就是复发的时间间隔,事件就是是否复发。如果用普通的线性回归对复发时间进行分析,就需要去除那些没有复发的病人样本。如果用Logistic回归对是否复发进行分析,就没有用到时间这个因素。而生存分析同时考虑时间和事情这两个因素,效果会更好些。


在R语言中我们可以使用survival包进行生存分析,其中主要的函数功能罗列如下:

Surv:用于创建生存数据对象
survfit:创建KM生存曲线或是Cox调整生存曲线
survdiff:用于不同组的统计检验
coxph:构建COX回归模型
cox.zph:检验PH假设是否成立
survreg:构建参数模型



下面是使用一个实例来使用R中的生存分析函数,其中用到的数据集可以在 这里下载 。

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
# Example from Survival Analysis- A Self-Learning Text, Third Edition
 
library (survival )
addicts  <- read.table ( 'ADDICTS.txt' , T )
names (addicts ) <- c ( 'id' , 'clinic' , 'status' , 'survt' , 'prison' , 'dose' )
 
# 1. 估计生存函数,观察不同组间的区别
 
# 建立生存对象
Surv (addicts $survt ,addicts $status == 1 )
 
# 估计KM生存曲线
y  <- Surv (addicts $survt ,addicts $status == 1 )
kmfit1  <- survfit (y ~ 1 )
summary (kmfit1 )
plot (kmfit1 )
 
# 根据clinic分组估计KM生存曲线
kmfit2  <- survfit (y ~addicts $clinic )
plot (kmfit2 , lty  = c ( 'solid' , 'dashed' ), col =c ( 'black' , 'blue' ),
    xlab = 'survival time in days' ,ylab = 'survival probabilities' )
legend ( 'topright' , c ( 'Clinic 1' , 'Clinic 2' ), lty =c ( 'solid' , 'dashed' ),
      col =c ( 'black' , 'blue' ))
 
# 检验显著性
survdiff (Surv (survt ,status ) ~clinic , data =addicts )
 
# 用strata来控制协变量的影响
survdiff (Surv (survt ,status ) ~ clinic  +strata (prison ),data =addicts )
 
# 2. 用图形方法检验PH假设
 
plot (kmfit2 ,fun = 'cloglog' ,xlab = 'time in days using logarithmic
    scale' ,ylab = 'log-log survival' , main = 'log-log curves by clinic' )
# 不平行,不符合PH假设
 
#  3. 构建COX PH回归模型
 
y  <- Surv (addicts $survt ,addicts $status == 1 )
coxmodel  <- coxph (y ~ prison  + dose  + clinic ,data =addicts )
summary (coxmodel )
 
# 两模型选择
mod1  <- coxph (y  ~ prison  + dose  + clinic ,data =addicts )
mod2  <- coxph (y  ~ prison  + dose  + clinic  + clinic *prison
+ clinic *dose , data =addicts )
 
anova (mod1 ,mod2 )
stepAIC (mod2 )
# 简洁模型更好
 
# 风险预测
predict (mod1 ,newdata =pattern1 ,
       type = 'risk' )
 
# 4. 构建一个stratified Cox model.
 
# 当PH假设在clinic不成立,控制这个变量
mod3  <- coxph (y  ~ prison  + dose  +
               strata (clinic ),data =addicts )
summary (mod3 )
 
#  5.对PH假设进行统计检验
 
mod1  <- coxph (y  ~ prison  + dose  + clinic ,data =addicts )
cox.zph (mod1 ,transform =rank )
# P值小显示PH假设不符合
# 显示系数变化图
plot (cox.zph (mod1 ,transform =rank ),se = F ,var = 'clinic' )
 
#  6. 得到COX调整后生存曲线
 
mod1  <- coxph (y  ~ prison  + dose  + clinic ,data =addicts )
pattern1  <- data.frame (prison = 0 ,dose = 70 ,clinic = 2 )
summary (survfit (mod1 ,newdata =pattern1 ))
plot (survfit (mod1 ,newdata =pattern1 ),conf.int = F )
 
mod3  <- coxph (y  ~ prison  + dose  +
               strata (clinic ),data =addicts )
pattern2  <- data.frame (prison = .46 ,dose = 60.40 )
plot (survfit (mod3 ,newdata =pattern2 ),conf.int = F )
 
# 7. 构建参数模型
 
modpar1  <- survreg (Surv (addicts $survt ,addicts $status ) ~
                    prison  +dose  +clinic ,data =addicts ,
                  dist = 'exponential' )

summary(modpar1)


需要事先加载包 library(MASS)

R语言中常用函数手册 常用函数速查 阅读详情

相关推荐

利用深度学习进行生存分析——DeepSuv模型小结

局部似然(partial likelihood):L=\prod\limits_{i:E_i=1}\frac{\exp^{\hat h_\theta(x_i)}}{\sum\limits_{j\in R(T_i)}\exp^{\hat h_\theta(x_j)}} 其中i,j均为样本编号,E=1表示终止事件(死亡、复发)发生;R(T_i)表示满足T_j>T_i条件,对应的损失函数(定义为neg log partial likelihood loss):l=-\log L=-\sum\limits_{

guofei_fly的博客 1万+

MachineLearning 41. 机器学习之参数生存回归模型 (survreg)

简 介失效时间数据根据生存结局的发生情况,生存分析的数据资料常常分为终点事件(如死亡)和删失(其他生存结局)两类。生存分析不同类型的数据包括:完全数据(Complete data)删失数据(Censoring data)删失数据通常在其右上角标记"+"号,表示真实的生存时间未知,只知道比观察到的删失时间要长。在生存分析中,发生终点事件记为“1” ,删失记为"0” 。删失的类型包括:(1) 右...

weixin_41368414的博客 1848

心力衰竭患者生存概率预测:基于临床可解释机器学习的生存分析实践

生存分析是处理时间-事件数据(如死亡、复发)的基础统计方法,核心在于建模事件发生的时间分布并严谨处理右删失数据。其原理超越简单分类或回归,需兼顾风险函数估计、比例风险假设检验与删失机制建模。在心衰管理中,该技术具备显著临床价值——将模糊的‘预后差’转化为可量化的1年/2年/5年生存概率,直接支撑ICD植入、移植评估与姑息照护等关键决策。典型应用场景包括多中心心衰队列风险分层、治疗响应量化(如利尿反应性)、以及融合超声文本与实验室指标的异构数据建模。本文聚焦于如何用XGBoost、随机森林等可解释集成模型,在

weixin_33182798的博客 281

survreg函数出错:Invalid survival times for this distribution

使用survreg进行生存分析,建立回归模型,预测患者的生存时间,报错:Invalid survival times for this distribution

m0_37915852的博客 1304

R语言使用survival包的Surv函数创建生存对象并进行结果解读

R语言使用survival包的Surv函数创建生存对象并进行结果解读

statistics+insight+vista+power 2106

R数据分析:生存分析的做法和结果解释

今天给大家写写生存分析: Survival analysis corresponds to a set of statistical approaches used to investigate the time it takes for an event of interest to occur. 生存分析研究的我们感兴趣的事件发生的时间的分布情况。这里面的“生存”不一定指存活,因为生存分析在医学随访数据中用的很多,而这类数据的随访终点往往就是病人死亡,所以才叫做生存。生存分析研究的时间分布也不一

Codewar的博客 2951

译|生存分析Survival Analysis案例入门讲解(二)

译|生存分析Survival Analysis案例入门讲解(二)

素质云笔记 1376

R数据分析:生存分析的做法与解释续

今天更新续文,上篇文章写了生存曲线的画法,但是留了一个问题没有解决,就是Kaplan-Meier生存曲线实际上仅仅把病人分为两组做了生存率随时间的比较,但是它并没有考虑协变量。R数据分析:生存分析的做法和结果解释 那么,我们做研究的时候,你发现了两个组的生存情况不一样,是不是下一步你就要想看看到底是那些因素影响了我们的生存情况。今天的文章就尝试着解决这么样问题。 问题描述 我们今天要关注的问题变了,我们会想要探讨很多因素造成的病人生存情况的差异: 比如,我们今天想来探究一下究竟是哪些因素会影响结肠癌

Codewar的博客 2910

R语言:生存分析竞争风险模型,从理论到实战总结

临床研究中结局事件可能有多个, 例如结局B将阻止感兴趣事件A的出现或影响A发生的概率,B事件形成"竞争”关系,B为A竞争风险事件。常见场景是研究治疗方案A和复发的关系,如果患者在死亡就观察不到复发,“死亡”和“复发”存在竞争。传统生存分析回归前提假设是删失时间与失效时间是独立的且删失对回归系数β是无信息的,即结局不存在竞争风险。临床生存数据常常伴有多个结局,结局间若存在竞争关联关系,简单地将其他原...

郑老师统计 8535

理解累积风险函数

今天写写累积风险函数,是之前有粉丝后台留言的,一个同时要和“时间”与“风险”联系起来东西。英文叫。理解这个首先要理解瞬时风险。假设你正在参加一场超级马拉松比赛,终点远在天边。在你跑的过程中,每一秒钟,你都可能崩溃退赛。那么,在比赛开始的第一分钟,你退赛的可能性大,还是在跑了五个小时之后的某一分钟,你退赛的可能性大?肯定是跑了五个小时之后啊!为什么呢?因为疲劳在累积,身体损伤在叠加。这个“每一秒钟瞬间崩溃的可能性”,在统计学就是“瞬时风险率”,而。注意是累积风险不是累积风险函数哦。

Codewar的博客 72

生存数据中往往存在删失数据,这种情况下该如何估计模型的参数呢?如加速失效时间模型(log-weibull)

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1123

【Python数据分析300个实用技巧】76.统计分析与建模之生存分析必学:用Kaplan-Meier估计生存函数

生存分析就像程序员的时间管理——既要处理明确完成的任务(事件数据),也要考虑那些还没结束的工作(删失数据)。当你掌握了Kaplan-Meier这把瑞士军刀,用户流失分析将不再是雾里看花,临床实验数据也不再是难解谜题。记住:每个删失数据都藏着未完结的故事,每条生存曲线都诉说着用户的生命周期。保持对数据的敬畏,就像对待自己写的代码——看似冰冷的数字背后,都是真实世界的生动映射。编程之路亦是生存分析,会遇到各种"运行错误"和"超时中断"。但请相信,只要持续学习,你的技能生存曲线终将无限趋近100%!

1177

北航机器学习期末考试试题2020年春

北航机器学习期末考试试题2020春 看csdn上试题收费,积分还挺高,本着共享的理念,把2020春季ML考试的试题公开,若侵权,立删 前8道题10分,第9题20分 决策树采用ID3算法 对宇宙星球是否适合生存分类 SVM的原理;软间隔、硬间隔;以及对非线性样本点分类 集成学习的原理,以及及串行boosting以及bagging的简单概括 K-means与混合高斯模型的异同以及EM算法的原理,如何计算 马尔可夫随机场最大团;马尔可夫随机场的联合概率分布(势函数表示),贝叶斯网络联合概率分布 PCA主成分基于

qq_43343919的博客 5414

2020.07.01-07.15学习小结

ggplot immunedeconv xcell TCGA数据下载 TCGAbiolinks包 介绍:可用于检索,下载,并准备TCGA数据用于下游分析的R包 优点:具备一体化的下载整合,无需再使用复杂的方法对下载的单个数据重新进行整合。 引用:注明在R中使用“TCGAbiolinks” 使用: 不同的数据来源 Legacy 与 harmonized GDC Legacy Archive:以前在CGHUB和TCGA数据门户中存储的数据的原始数据,由TCGA数据协调中心(DCC)托管,在该门户中用GRCH

weixin_43907644的博客 1503

[QT笔记]QTableView与QTableWidget表头设置实战对比

本文深入对比了QT开发中QTableView与QTableWidget在表头设置上的核心差异与实践方法。QTableWidget提供开箱即用的便捷API,适合快速开发;而QTableView遵循模型-视图架构,表头数据由模型管理,虽设置稍复杂但灵活性与扩展性更强。文章通过实战代码示例,详细解析了两种组件的适用场景、性能考量及常见避坑指南,帮助开发者根据项目需求做出高效选择。

weixin_29018335的博客 322

Nginx反向代理MinIO私有桶签名失效?一招解决Host头校验问题

本文详细解析了Nginx反向代理MinIO私有桶时出现的签名失效问题,重点解决了Host头校验导致的"SignatureDoesNotMatch"错误。通过精准配置proxy_set_header保持Host头一致性,并提供了二级目录代理和调试指南,帮助开发者高效解决这一常见技术难题。

weixin_29201313的博客 321

php 算生存曲线,生存分析之生存曲线绘制

本文只涉及到生存曲线绘制,不涉及生存分析理论问题本文采用两种方法绘制生存曲线,其实是用plot()和ggsurvplot()两种函数绘图而已1. plot()函数绘制生存曲线基本流程Surv(): 用于创建生存数据对象 (主要输入生存时间和状态逻辑值)survfit():对生存数据对象拟合生存函数,创建KM(Kaplan-Meier)生存曲线survdiff(): 对不同组的生存率进行检验 (...

weixin_28724003的博客 769

5张图,搞懂三方支付机构的“备付金账户”体系

本文将详细解析第三方支付机构各类备付金账户的功能定位、所承载的支付业务处理流程以及日常管理。

银行信息系统应用架构详解 2142

【Python数据分析300个实用技巧】65.统计分析与建模之生存分析进阶:用Cox模型分析时间依赖型数据

编程就像冲浪,当传统方法遇到时间这个维度的大浪时,我们需要换上时变协变量的冲浪板。记住:好的生存分析不是算命,而是用数据演绎生命的故事。下次当你的模型遇到"时间悖论"时,不妨试试这些方法。毕竟,在数据科学的世界里,唯一不变的就是变化本身。保持对时间的敬畏,你的模型就会像瑞士机械表一样精准可靠。继续coding吧,少年!星辰大海的数据征途等着你去征服!

1398

Java 多线程(1)---- 初识线程

前言 多线程想必大家都不会陌生。因为在日常使用和开发中,多线程的使用实在是太常见了。我们都知道,发明多线程的目的是为了更好的利用计算机的 CPU 资源。比如在一个进程中如果只有一个线程(也叫主线程),那么如果当这个线程因为某种原因阻塞(等待用户输入数据等情况)的时候,那么相对应的这个进程也让出了 CPU 资源并暂停执行了。试想一下,如果我们在一个进程中添加多个线程,那么当这个进程中某个线程阻塞的...

指点 1543

深入探讨 VQ-VAE:理解变分量化自动编码器

VQ-VAE代表"Variational Quantized Variational Autoencoder",是一种生成模型,通常用于处理高维数据,如图像和音频。它的设计灵感来自于变分自动编码器(VAE)和量化方法,结合了它们的优点,使得 VQ-VAE 能够生成高质量的数据,并在数据表示上引入离散性。VQ-VAE 是一种强大的生成模型,结合了变分自动编码器和量化方法的优点。它在图像和音频生成、数据压缩和生成性对抗网络等领域具有广泛的应用。

DeepViewInsight的博客 7015

概率密度基本概念

(Probability Density)是概率论中用于描述随机变量分布的一种方式,特别适用于连续随机变量。它并不是一个概率值,而是表示单位范围内的概率大小或“浓度”。更具体地说,概率密度表示在某个特定值附近,随机变量可能取到某个值的相对可能性。

Sarah ~ 1674

Golang面试(一)莉莉丝游戏-Golang后端开发-中台部门

莉莉丝游戏-Golang后端开发-中台部门 开场白,双方自我介绍,对方介绍这个岗位情况,erlang语言,全部转向go。 聊项目,介绍IM架构以及使用Go写的服务简介 动态扩容相关问题:平常30万,现在100万,你们现在是如何应对的? 如果让你调整架构实现动态扩容,你会怎么做?回答了kafka,是一种,应该还要使用docker和k8s以及微服务框架等 如果使用kafka,你是如何确保消息有序?回答了redis,好像没回答到那个点 消息发送失败的问题,如何做到消息不丢?回答持久化存储、拉消息和ACK 发送失

xmcy001122的专栏 3899

R语言教材小结

 一、去哪里找R语言相关的资料 1.官方网站 http://cran.csdb.cn/index.html (官方文献集中地) 2.统计之都论坛 3.人大经济论坛-R子论坛 (免费资料也不少) 4.http://library.nu/ 这是网上电子书最多的地方,其中有一个R语言专门书柜(也就是一个shelves) 5.本博客的资料收集 6.笔者在verycd上发的一个书单

清静 1313

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3475

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

新书速览|R语言医学数据分析与可视化

R语言医学数据分析与可视化》最突出的优势的是“精准适配医学科研需求”,区别于通用的R语言教程,全程围绕医学场景展开,从临床试验数据统计、基因测序数据处理,到临床诊断试验评价、科研论文图表制作,18章内容层层递进,按“基础入门—核心方法—高级应用”清晰划分,既包含R语言环境搭建、数据集创建与清洗等基础内容,帮助零基础读者快速上手;在精准医学与大数据浪潮席卷医学科研的当下,数据分析与可视化已成为医学研究者不可或缺的核心技能,而R语言凭借免费开源、统计功能强大、可视化便捷的优势,成为生物医学领域的主流工具。

quanzhankaifaqua的博客 490

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 相关分析
下一篇: 转录组数据饱和度评估方法
SHMILYRINGPULL
博客等级 码龄16年 185粉丝 29原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值