限制立方样条(RCS)做生存分析

一、引言

在医学和统计学领域,生存分析是一种分析个体生命长度和生存时间的重要方法。了解人们生存的期限和影响因素,对于制定健康政策、优化医疗资源的分配以及个体护理方案的制定都至关重要。传统的生存分析方法如Kaplan-Meier曲线和Cox比例风险模型已经广泛应用,但它们对数据的假设有一定的限制。

为了克服传统方法的限制,限制立方样条(Restricted Cubic Splines,简称RCS)成为一种强大而灵活的工具,可以更准确地估计个体生存函数。RCS是一种非参数的灵活拟合方法,通过将生存时间转化为各个节点上的分段函数来建模生存曲线。它可以适应各种生存时间分布,而不需要过多的假设。

本文旨在探讨RCS在生存分析中的应用和优势。首先,我们将介绍RCS的基本原理和建模方法。然后,我们将讨论RCS在生存分析中的应用案例,并与传统方法进行比较。接下来,我们将探讨RCS的局限性和可能的改进方向。最后,我们将总结本文的主要内容。

二、文献分享

《Association of BMI with overall and cause-specific mortality: a population-based cohort study of 3.6 million adults in the UK》

这篇文章是2018年发表在柳叶刀上的文献,是一项基于英国的人口总体队列研究,研究了BMI(身体质量指数)与总体和特定原因的死亡率之间的关联。

  • 「研究对象」:360万名成年人。

  • 「研究目的」:探究BMI对死亡率的影响,并了解不同BMI范围内的死亡原因分布。研究采用了大规模队列研究的方法,跟踪参与者的BMI和死亡情况,通过对数据进行回归分析和风险评估,来评估BMI与总体和特定原因死亡率之间的关联。

  • 「研究方法」:在这项基于人口的队列研究中,我们使用了与国家死亡登记数据相连的英国一级护理数据,数据来自临床实践研究数据联机(CPRD)。我们使用调整后的Cox回归模型,检查了BMI与全因死亡率的关联,以及BMI与广泛范围的特定死因(记录为国际疾病分类第10版[ICD-10]代码)之间的关联。我们包括所有在16岁及以上收集BMI数据并进行后续随访的个体。随访开始于以下情况中的最后一个:CPRD研究标准随访开始时间,第一个BMI记录的5周年纪念日,或1998年1月1日(死亡登记数据的起始日期);随访终止于死亡或2016年3月8日。完全调整的模型按性别分层,并根据基线年龄、吸烟、酒精使用、糖尿病、多重剥夺指数和日历期调整。模型既适用于从未吸烟者,也适用于整个研究人群。我们还进行了广泛的敏感性分析。使用Poisson模型,包括BMI、年龄和性别,估计了40岁时基线的男性和女性在不同BMI范畴下的预期寿命。

  • 「研究结果」:BMI与更具体的死亡结果之间的关联显示在非线性样条模型(这里是部分结果)从图中我们可以看到,不管是在全人群还是非吸烟人群中,BMI与all-cause, communicable, and non-communicable disease mortality之间呈U型关系,死亡率最低点的BMI大概是25Kg/m2。死亡风险均随着BMI先降低后增加。

三、RCS简介

研究数据通常来自于观察某个特定群体的个体,并收集其相关信息。这些数据可以是从临床试验、队列研究、调查问卷等途径获得的。数据的特征通常包括个体的生存时间、生存状态(例如是否死亡)、危险因素(例如年龄、性别、治疗方案等)以及其他可能影响生存的变量。

  • 「限制立方样条的原理和优势」


限制立方样条是一种非参数的拟合方法,通过将连续变量(如生存时间)转化为多个分段函数来建模生存曲线。RCS在建模过程中不对数据分布作出假设,因此适用于各种类型的生存数据。与传统方法相比,RCS具有更高的灵活性,可以更准确地拟合生存曲线的形状。通过使用适当的节点数和位置,RCS可以探测到生存风险的非线性关系,并提供更精细的生存预测。

  • 「生存时间和时间截断指示符的定义」


生存时间是指从某个初始事件(如诊断、手术等)到目标事件(如死亡、复发等)之间的时间间隔。在生存分析中,我们通常使用时间截断指示符来处理那些在观察期限结束时没有遇到目标事件的个体。即使没有遇到目标事件,我们仍然希望利用这些数据对生存曲线进行建模和估计。

四、RSC建模和结果

5.1 数据集载入

library(survival)
str(gbsg)

结果展示:

> str(gbsg)
'data.frame':   686 obs. of  10 variables:
 $ age    : int  49 55 56 45 65 48 48 37 67 45 ...
 $ meno   : int  0 1 1 0 1 0 0 0 1 0 ...
 $ size   : int  18 20 40 25 30 52 21 20 20 30 ...
 $ grade  : int  2 3 3 3 2 2 3 2 2 2 ...
 $ nodes  : int  2 16 3 1 5 11 8 9 1 1 ...
 $ pgr    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ er     : int  0 0 0 4 36 0 0 0 0 0 ...
 $ hormon : int  0 0 0 0 1 0 0 1 1 0 ...
 $ rfstime: int  1838 403 1603 177 1855 842 293 42 564 1093 ...
 $ status : Factor w/ 2 levels "0","1": 1 2 1 1 1 2 2 1 2 2 ...

age:患者年龄
meno:更年期状态(0表示未更年期,1表示已更年期)
size:肿瘤大小
grade:肿瘤分级
nodes:受累淋巴结数量
pgr:孕激素受体表达水平
er:雌激素受体表达水平
hormon:激素治疗(0表示否,1表示是)
rfstime:复发或死亡时间(以天为单位)
status:事件状态(0表示被截尾,1表示事件发生)

5.2 安装和加载依赖包

install.packages("remotes")
library(remotes)
remotes::install_github("liuqiang070488/ggrcs")
library(ggrcs)
library(survival)
library(rms)
library(ggplot2)
library(scales)
library(survminer)

5.3 检验是否符合线性关系

#例如,我们检验数据集中age与风险的非线性关系
ggcoxfunctional(Surv(rfstime, status)~age+log(age)+sqrt(age),data=gbsg)

这个函数可以进行age和生存的线性关系诊断,采用的方法是鞅残差,从下图age的1次、log和1/2次方来看,可以看出年龄和死亡之间存在非线性关系。

5.4 利用RCS曲线确认自由度

确定RCS的自由度数量需要在灵活性和过拟合之间进行权衡。自由度数量越多,模型越灵活,可以更准确地拟合生存曲线的形状。然而,如果自由度数量过多,模型可能过度适应样本数据,导致过拟合。一种常用的方法是根据数据集的大小来选择自由度数量,通常建议在3到5之间进行试验,并选择具有最佳拟合度和预测能力的自由度数量。

#1.构建模型。【节点数为3.4.5均进行了构建和比较】
fit <- cph(Surv(rfstime, status) ~ rcs(age, 3), x=TRUE, y=TRUE,data=gbsg)
fit1 <- cph(Surv(rfstime, status) ~ rcs(age, 4), x=TRUE, y=TRUE,data=gbsg)
fit2 <- cph(Surv(rfstime, status) ~ rcs(age, 5), x=TRUE, y=TRUE,data=gbsg)

fit
fit1
fit2

结果展示:

> fit
Cox Proportional Hazards Model

cph(formula = Surv(rfstime, status) ~ rcs(age, 3), data = gbsg, 
    x = TRUE, y = TRUE)

                        Model Tests    Discrimination    
                                              Indexes    
Obs        686    LR chi2      6.67    R2       0.010    
Events     299    d.f.            2    R2(2,686)0.007    
Center -1.5409    Pr(> chi2) 0.0356    R2(2,299)0.016    
                  Score chi2   7.18    Dxy      0.047    
                  Pr(> chi2) 0.0275                      

     Coef    S.E.   Wald Z Pr(>|Z|)
age  -0.0343 0.0129 -2.66  0.0077  
age'  0.0374 0.0148  2.54  0.0112  

> fit1
Cox Proportional Hazards Model

cph(formula = Surv(rfstime, status) ~ rcs(age, 4), data = gbsg, 
    x = TRUE, y = TRUE)

                        Model Tests    Discrimination    
                                              Indexes    
Obs        686    LR chi2     21.69    R2       0.031    
Events     299    d.f.            3    R2(3,686)0.027    
Center -3.7621    Pr(> chi2) 0.0001    R2(3,299)0.061    
                  Score chi2  24.92    Dxy      0.135    
                  Pr(> chi2) 0.0000                      

      Coef    S.E.   Wald Z Pr(>|Z|)
age   -0.0931 0.0188 -4.96  <0.0001 
age'   0.2464 0.0550  4.48  <0.0001 
age'' -0.7802 0.1954 -3.99  <0.0001 

> fit2
Cox Proportional Hazards Model

cph(formula = Surv(rfstime, status) ~ rcs(age, 5), data = gbsg, 
    x = TRUE, y = TRUE)

                        Model Tests    Discrimination    
                                              Indexes    
Obs        686    LR chi2     23.01    R2       0.033    
Events     299    d.f.            4    R2(4,686)0.027    
Center -4.3585    Pr(> chi2) 0.0001    R2(4,299)0.062    
                  Score chi2  27.55    Dxy      0.125    
                  Pr(> chi2) 0.0000                      

       Coef    S.E.   Wald Z Pr(>|Z|)
age    -0.1103 0.0226 -4.88  <0.0001 
age'    0.3864 0.1151  3.36  0.0008  
age''  -1.5493 0.6874 -2.25  0.0242  
age'''  1.4925 1.1025  1.35  0.1758 

3节点:R² = 0.016 和 Dxy = 0.047; 4节点:R² = 0.061 和 Dxy = 0.135; 5节点:R² = 0.062 和 Dxy = 0.125; R²和Dxy越大,拟合的模型越优。因此选择4节点。

5.5 模型拟合

dd<-datadist(gbsg)
options(datadist='dd')

fit <- cph(Surv(rfstime, status) ~ rcs(age, 4), x=TRUE, y=TRUE,data=gbsg)

ggrcs(data=gbsg,fit=fit,x="age",histcol="sky blue")

六、总结

如果想了解如何使用RCS进行建模非线性关系、优化治疗方案和预测疾病进展等,请关注和私信我,我们一起讨论学习。原创不易,如果觉得写的还行的话,请留下您的赞和再看,谢谢!

参考文献:

[1] Bhaskaran K, Dos-Santos-Silva I, Leon DA, Douglas IJ, Smeeth L. Association of BMI with overall and cause-specific mortality: a population-based cohort study of 3·6 million adults in the UK. Lancet Diabetes Endocrinol. 2018;6(12):944-953. doi:10.1016/S2213-8587(18)30288-2

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

minikube环境搭建

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系列、spring教程等&#xff0c;大家有兴趣的可以看一看 &#x1f4d9;Jav…

B004-表达式 类型转换 运算符

目录 表达式数据类型转换自动转换强制转换 运算符数学运算符自增自减运算符i与 i的区别 赋值运算符比较运算符位运算符(了解)逻辑运算符三目运算符 表达式 /*** 表达式定义&#xff1a;由常量 变量 运算符 括号组成的算式&#xff0c;为了按照一定的运算规则计算出结果值* 括…

HTML 入门 ( 一 )

HTML文档创建 首先创建一个txt文本文档 修改文件后缀 HTML标签 标签结构 标签又称为元素,是HTML的基本组成单位分为: 双标签与单标签推荐小写标签名 结构: 双标签示例代码: <marquee> My name is Kvein. </marquee>单标签示例代码: <input>标签的并列与嵌…

Autosar Dcm配置-手动配置RID及Routine功能实现-基于ETAS软件

文章目录 前言Routine介绍Routine配置DcmDsdDcmDspDcmDspRoutinesSWC配置总结前言 之前介绍了DID的配置,本文介绍UDS诊断中,另外一种常用的功能Routine的配置,及生成代码的使用。 Routine介绍 Routine一般用于ECU较复杂的控制功能。使用UDS服务ID为0x31 31后面跟的是子服…

【智能算法】智能算法空间搜索图GIF,探索开发对比图,动态展示理解更清晰~

目录 1.前文回顾2.空间搜索图3.探索开发对比图4.参考文献 1.前文回顾 前文已经提到智能算法统计指标&#xff0c;本文将进一步扩展算法空间搜索图GIF&#xff0c;探索开发对比图&#xff0c;动态展示理解更清晰&#xff1a; 【智能算法】省时方便&#xff0c;智能算法统计指标…

Python基于大数据的微博的舆论情感分析,微博评论情感分析可视化系统,附源码

博主介绍&#xff1a;✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不…

ExpressLRS硬件实测性能分析

ExpressLRS硬件实测性能分析 1. 源由2. 远航测试3. 实验室测试3.1 芯片RSSI与实测功率差异3.2 SNR信噪比稳定3.3 140db衰减器衰减&#xff0c;40个频点信号稳定 4. 外场测试4.1 无屏蔽样品4.2 有屏蔽样品4.3 有屏蔽vs无屏蔽样品 5. 估算6. 总结7. 补充说明 -- 50mW视频 1. 源由…

从0到1落地接口自动化测试(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前段时间写了一系列自动化测试相关的文章&#xff0c;当然更多的是方法和解决问题的思路角度去阐…

【AHK】显示画布\贴图周数\设置一个时钟显示周数

AHK没有直接显示画布的工具&#xff0c;但可以通过自定义GUI删去菜单栏显示。 具体逻辑&#xff0c;通过时间戳获取天数&#xff0c;然后再拿当前日期和开学日期作差&#xff0c;获取天数之后和数字7相除&#xff0c;再向下取整。 显示下过如图 ;先控制属性&#xff0c;下面依…

php:实现压缩文件上传、解压、文件更名、压缩包删除功能

效果图 1.上传文件 2.压缩包文件 3.itemno1文件 4.上传到系统路径\ItemNo 5.更名后的itemno1文件(命名&#xff1a;当天日期六位随机数) 代码 <form action"<?php echo htmlspecialchars($_SERVER[PHP_SELF], ENT_QUOTES, UTF-8); ?>" method"post…

机器人瓶胚检测工作站(H3U脉冲轴控制)

1、变量定义 2、程序监控1 2、 程序监控2 3、程序监控3 机器人输送料和机构的动作安全尤为重要&#xff0c;下面我们讨论下安全联锁控制逻辑 4、相机拍照触发信号 5、相机拍照触发时序

Harmony鸿蒙南向外设驱动开发-LCD

功能简介 LCD&#xff08;Liquid Crystal Display&#xff09;驱动编程&#xff0c;通过对显示器上电、初始化显示器驱动IC&#xff08;Integrated Circuit&#xff09;内部寄存器等操作&#xff0c;使其可以正常工作。 基于HDF&#xff08;Hardware Driver Foundation&#…

Axure学习:网站后台导航菜单的制作及对应内容的显示

​不少产品经理主要做的产品是后台系统&#xff0c;在做后台原型的时候对于有些部分的内容存在一些疑惑。 我们的学员也是一样&#xff0c;在做后台的时候遇到了一些问题&#xff0c;请教了老师&#xff0c;得到了解答。这里和大家分享一下&#xff0c;同学们的问题以及解决方…

找到冠军 II

题目&#xff1a; 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。每支队伍也是 有向无环图&#xff08;DAG&#xff09; 上的一个节点。 给你一个整数 n 和一个下标从 0 开始、长度为 m 的二维整数数组 edges 表示这个有向无环图&#xff0c;其中 edges[i] [u…

SpringBoot碎片化知识

参考资料&#xff1a; java官方词典&#xff1a;https://docs.oracle.com/javase/tutorial/information/glossary.html#F苍穹外卖&#xff1a;https://www.bilibili.com/video/BV1TP411v7v6 JavaBean规范 JavaBean规范是一种类的规范&#xff0c;其要求符合下列条件&#xf…

跟着教程使用腾讯云服务器一步步搭建网站教程,收藏级

使用腾讯云服务器搭建网站全流程&#xff0c;包括轻量应用服务器和云服务器CVM建站教程&#xff0c;轻量可以使用应用镜像一键建站&#xff0c;云服务器CVM可以通过安装宝塔面板的方式来搭建网站&#xff0c;腾讯云服务器网txyfwq.com整理使用腾讯云服务器建站教程&#xff0c;…

【vue】v-model.lazy等(非实时渲染)

v-model&#xff1a;实时渲染v-model.lazy&#xff1a;失去焦点/按回车后&#xff0c;才渲染v-model.number&#xff1a;值转换为数字v-model.trim&#xff1a;去除首尾空格 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

「JavaEE」初识进程

初识进程 &#x1f349;进程&#x1f34c;操作系统的进程管理 &#x1f349;PCB 重要属性&#x1f34c;进程的身份标识&#x1f34c;内存指针&#x1f34c;文件描述符表&#x1f34c;进程的状态&#x1f34c;优先级&#x1f34c;记账信息&#x1f34c;上下文 &#x1f349;内存…

LongAdder和AtomicLong的对比实验

LongAdder 的核心思想是热点分离&#xff0c;与 ConcurrentHashMap 的设计思想类似&#xff1a;将value值分离成一个数组&#xff0c;当多线程访问时&#xff0c;通过Hash算法将线程映射到数组的一个元素进行操作&#xff1b;而获取最终的value结果时&#xff0c;则将数组的元素…

C++ 之 【类与对象】 从入门到精通一条龙服务 进阶篇(类的6个默认成员函数,构造,析构。。。)

以后把闹钟换成唢呐&#xff0c;醒了就起床&#xff0c;不醒就上天堂 一、类的6个默认成员函数 二、构造函数 1.概念 2.特性 三、析构函数 1.概念 2.特性 四、拷贝构造函数 1.概念 2.特征 五、赋值运算符重载 1.运算符重载 2.赋值运算符重载 3.前置和后置重载 六…