R 生存分析3:Cox等比例风险回归及等比例风险检验

news2024/12/25 12:33:05

虽然Kaplan-Meier分析方法目前应用很广,但是该方法存在一下局限:

  1. 对于一些连续型变量,必须分类下可以进行生存率对比

  2. 是一种单变量分析,无法同时对多组变量进行分析

  3. 是一种非参数分析方法,必须有患者个体数据才能进行分析

英国统计学家David Cox在1972年进一步拓展了Kaplan-Meier,将性别和年龄等因素包含在内,也就是Cox Proportional Hazard Model(Cox回归),该方法可以用来预测一个或多个不同变量在某一时间对死亡率的影响。它同时适用于数值变量和类别变量,可以同时评估几种风险因素对生存时间的影响,检验特定因素如何影响特定时间点特定事件(例如,感染,死亡)的发生率因此广泛应用于生物医学的统计和分析。

图片

   (Remembering Sir David Cox, 1924–2022)

值得注意的是Cox回归的是一种半参数法,其分布本身同样也不含参数假设,只是性别、年龄等影响因素对生存概率的影响是用参数来表达的。本文主要内容是对COX回归及该方法使用前提等比例风险假设进行介绍,具体包括以下内容:

  • COX回归的原理及假设

  • 如何在R语言中实现单变量COX回归

  • 如何在R语言中实现多变量COX回归

  • 绘制森林图展示多变量COX回归结果

  • 如何在R语言中对生存数据进行等比例风险检验

2.原理及假设

在生存分析文献中,预测变量(或因子)通常称为协变量,发生率被称为风险率。Cox 模型核心是由h(t)表示的危险函数,可理解为在时间 t 死亡的风险,其模型算法如下:

在上述模型中称为基线风险函数,与其他形式的回归一样存在β项乘以每个预测变量。由于基线风险表示协变量值均为 0 或处于参考水平的个体的风险,所以类似于线性回归模型中的截距。另外由于基线风险函数不依赖于任何参数,并且在估计模型参数时完全消失,因此,Cox 回归输出不包括截距。在上述模型中, β 表示风险比 (hazard ratio,HR),HR> 1的协变量被称为不良预后因素;HR<1的协变量被称为良好的预后因子。

目前风险比(HR)通常用于报告肿瘤学随机临床试验的结果。在肿瘤学随机临床试验(RCT)中,经常使用风险比(HR)来估计至事件发生时间终点的治疗效果,如总生存期(OS)和无进展生存期(PFS)。HR提供了整个研究期间试验组和对照组之间风险率比值的估计值,例如OS终点的HR = 0.75,意味着试验组的死亡风险相比对照组降低约25%。

3. COX回归R语言实现

本文依然采用上篇研究中的bladder1 数据集进行分析,采用患者复发作为关注的事件:

library(tidyverse)
library(survival)
library(survminer)
data(cancer, package="survival")
bladder1 <-
  bladder1 %>% 
  mutate(recurr = if_else(status == 1, 1, 0),
         time = stop - start,
         rtumor = as.numeric(na_if(rtumor, ".")),
         rsize = as.numeric(na_if(rsize, "."))) %>% 
  filter(start == 0)
  1.   单变量COX回归

使用coxph函数对干预措施进行单变量COX回归:

bladder1.cox.1 <- coxph(Surv(time, recurr) ~ treatment, data = bladder1)
summary(bladder1.cox.1)
Call:
coxph(formula = Surv(time, recurr) ~ treatment, data = bladder1)

  n= 118, number of events= 62 

                       coef exp(coef) se(coef)      z
treatmentpyridoxine -0.3532    0.7024   0.3202 -1.103
treatmentthiotepa   -0.3830    0.6818   0.3025 -1.266
                    Pr(>|z|)
treatmentpyridoxine    0.270
treatmentthiotepa      0.205

                    exp(coef) exp(-coef) lower .95
treatmentpyridoxine    0.7024      1.424    0.3750
treatmentthiotepa      0.6818      1.467    0.3769
                    upper .95
treatmentpyridoxine     1.316
treatmentthiotepa       1.234

Concordance= 0.533  (se = 0.038 )
Likelihood ratio test= 2.05  on 2 df,   p=0.4
Wald test            = 2.07  on 2 df,   p=0.4
Score (logrank) test = 2.09  on 2 df,   p=0.4

通过HR的置信区间和P值可以看出三种干预措施对减少患者转移风险上没有统计学差异。

2. 多变量COX回归 

使用coxph函数对所有变量进行多变量COX回归

bladder1.cox.2 <- coxph(Surv(time, recurr) ~ treatment + number + size, data = bladder1)
summary(bladder1.cox.2)
Call:
coxph(formula = Surv(time, recurr) ~ treatment + number + size, 
    data = bladder1)

  n= 118, number of events= 62 

                        coef exp(coef) se(coef)      z
treatmentpyridoxine -0.34130   0.71085  0.32227 -1.059
treatmentthiotepa   -0.55105   0.57634  0.31257 -1.763
number               0.25249   1.28723  0.06498  3.886
size                 0.05892   1.06069  0.07414  0.795
                    Pr(>|z|)    
treatmentpyridoxine 0.289585    
treatmentthiotepa   0.077904 .  
number              0.000102 ***
size                0.426761    
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                    exp(coef) exp(-coef) lower .95
treatmentpyridoxine    0.7108     1.4068    0.3780
treatmentthiotepa      0.5763     1.7351    0.3123
number                 1.2872     0.7769    1.1333
size                   1.0607     0.9428    0.9172
                    upper .95
treatmentpyridoxine     1.337
treatmentthiotepa       1.064
number                  1.462
size                    1.227

Concordance= 0.642  (se = 0.038 )
Likelihood ratio test= 14.94  on 4 df,   p=0.005
Wald test            = 16.55  on 4 df,   p=0.002
Score (logrank) test = 17.75  on 4 df,   p=0.001

多变量COX回归结果显示,初始肿瘤数量增加了风险,因此预后更差。

3. 森林图(forest plot)绘制

使用ggforest函数对回归结果进行森林图绘制

ggforest(bladder1.cox.2, data = bladder1)

图片

4. 等比例风险检验R语言实现

等比例风险(PH):在任意一个时间点,两组人群发生时间的风险比例是恒定的;或者说其危险曲线应该是成比例而且是不能交叉的;也就是如果一个体在某个时间点的死亡风险是另外一个体的两倍,那么在其他任意时间点的死亡风险也同样是2倍 ,但是有时在研究过程中会遇到延迟反应、假性进展,从而导致生存曲线(如PFS)早期就纠缠在一起,几个月后才分开,这时Cox模型的假设就不成立了。

在进行COX回归前,通常需要进行以下三种检验:

  • 使用Schoenfeld residuals 检查等比例风险(proportional hazards)

  • 使用Deviance residual 检查异常值(outliers);

  • 使用Martingale residual检查风险与协变量之间的非线性关系( non-linearity)

  1. 使用Schoenfeld residuals进行等比例风险检验

test.ph.2 <- cox.zph(bladder1.cox.2)
print(test.ph.2)
           chisq df    p
treatment 1.0940  2 0.58
number    0.0865  1 0.77
size      1.1794  1 0.28
GLOBAL    2.4600  4 0.65

从上述输出来看,对每个协变量的检验都没有统计学意义,而全局检验也没有统计学差异,因此,我们可以假设成比例的风险。同时可以使用ggcoxzph函数绘制各变量scaled Schoenfeld residuals残差图。

ggcoxzph(test.ph.2)

图片

如果图片中的红点系统偏离水平线则表明存在非等比例风险,而等比例风险假设估计值不会随时间变化很大。

2.使用deviance残差图检测是否有异常值 

可通过ggcoxdiagnostics函数展示deviance residuals或者dfbeta values图形来检查异常值。其中type指y轴展示的误差项,c(“martingale”, “deviance”, “score”, “schoenfeld”, “dfbeta”, “dfbetas”, “scaledsch”, “partial”)

ggcoxdiagnostics(
  bladder1.cox.2,
  type = "dfbeta"
)

图片

上述图片展示了删除每个观察结果后回归系数的估计变化,上面的图片表明,没有一个观察结果本身有特别的影响。

3.使用Martingale residual检测非线性关系

通过绘制Martingale残差与协变量的散点图来检验非线性。

ggcoxfunctional(Surv(time, recurr) ~  number + log(number) + sqrt(number), 
data = bladder1)

图片

上述图片显示了连续协变量与cox比例风险模型的残差的关系,上图表示初始肿瘤数量有轻微的非线性。

5. 优点和局限

相较于K-M分析,COX回归方法存在以下优点:首先,HR囊括了整个KM生存曲线中的所有信息,因此总结了RCT整个持续时间内的治疗效果。相比之下,中位生存期仅关注治疗组生存曲线上的一个点,最多代表“组平均年龄”,作为个体患者疾病控制持续时间或OS的指标过于简单。其次,HR提供了治疗组之间相对疗效的估计值(例如,OS终点的HR = 0.75,意味着试验组的死亡风险相比对照组降低约25%)。

但是该方法运用的前提是等比例风险(PH)假设:研究期间每个时间间隔的风险率比值近似恒定。因而如果生存数据严重违反等比例风险假设,则该方法的结果便难以解释,此时需要采用其他方法进行分析(后续文章更新):

  1. 分层COX回归(stratified cox regression)

  2. 使用时间依从性变量( time-varying dependent variable)拓展COX回归

  3. 参数生存分析(parametric survival analysis)

  4. 限制平均生存时间(Restricted mean survival time)。。。

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

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

相关文章

春秋云境CVE-2023-27179

简介 GDidees CMS v3.9.1及更低版本被发现存在本地文件泄露漏洞&#xff0c;漏洞通过位于 /_admin/imgdownload.php 的 filename 参数进行利用。 正文 进入靶场发现没有什么可以利用的地方&#xff0c;那么就按照靶场提示来&#xff0c;直接访问/_admin/imgdownload.php 打开…

鸿蒙雄起!风口就在当下,你如何抉择?

近年来&#xff0c;华为自主研发的鸿蒙操作系统&#xff08;HarmonyOS&#xff09;引起了广泛的关注和讨论。鸿蒙系统不仅标志着华为在软件领域的一次重大突破&#xff0c;也预示着全球智能设备市场格局的潜在变化。本文将深入探讨鸿蒙系统的兴起、其在市场上的表现以及对程序员…

【SQL】1633. 各赛事的用户注册率(COUNT函数 表达式用法)

题目描述 leetcode题目&#xff1a;1633. 各赛事的用户注册率 Code select contest_id, round(count(*)/(select count(*) from Users)*100, 2) as percentage from Register group by contest_id order by percentage desc, contest_id ascCOUNT()函数 COUNT函数用法&#…

k8s入门到实战(十一)—— DaemonSet详细介绍及使用

DaemonSet 说明 是个 Pod 控制器能够确保 k8s 的所有节点都运行一个相同的 pod 副本,假设这个 pod 名称为 pa 当增加 node 节点时&#xff0c;这个节点会自动创建一个 pa副本当删除 node 节点时&#xff0c;pa 副本会自动删除 删除 daemonset 会删除它们创建的 pod 使用场景 需…

PyQt:实现自定义绘制pyqtgraph折线图中的symbol图标

一、写在前面 1.关于symbol的官方文档说明&#xff1a;symbol 2.我自己绘制的自定义symbol符号&#xff0c;如下图&#xff1a;一个在坐标轴上移动的“小货车” 2.默认可以选择的有以下多种symbol符号 但最后一项也说明了&#xff1a;支持QPainterPath绘制的自定义符号形状。…

案例分析-IEEE 754浮点标准

案例一&#xff1a; 请分析IEEE 754双精度浮点数规格化数的表示范围。 案例二&#xff1a; 规格化浮点数的Bias为什么采用2k-1-1而不是2k-1​&#xff1f;非规范数的指数E1-Bias而不是0-Bias&#xff1f; &#xff08;1&#xff09; ① bias 127时 E e - 127 &#xff08;00…

0.96寸OLED屏调试 ----(一)

所需设备&#xff1a; 1、USB 转 SPI I2C 适配器&#xff1b;内附链接 2、0.96寸OLED显示模块&#xff1b; 备注&#xff1a;专业版、升级版都适用&#xff1b; 首先介绍一下OLED显示模块&#xff0c;SSD1306是一款OLED驱动芯片&#xff0c;拥有最大128*64像素支持&#xff…

卷积变体-----分组卷积、深度可分离卷积、膨胀卷积

文章目录 一、分组卷积1.1 概述1.2 参数量变换 二、深度可分离卷积2.1 概述2.2 计算 三、膨胀卷积 一、分组卷积 1.1 概述 1. 分组卷积&#xff08;Group convolution &#xff09;最早在AlexNet中出现&#xff0c;由于当时的硬件资源有限&#xff0c;训练AlexNet时卷积操作不…

Axure中后台系统原型模板,B端页面设计实例,高保真高交互54页

作品概况 页面数量&#xff1a;共 50 页&#xff08;长期更新&#xff09; 兼容版本&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;网页模板、网站后台、中台系统、B端系统 作品特色 本品为「web中后台系统页面设计实例模板」&#xff0c;默林原创…

聊聊CSS

css 的介绍 学习目标 能够知道css的作用 1. css 的定义 css(Cascading Style Sheet)层叠样式表&#xff0c;它是用来美化页面的一种语言。 没有使用css的效果图 使用css的效果图 2. css 的作用 美化界面, 比如: 设置标签文字大小、颜色、字体加粗等样式。 控制页面布局, 比如…

逐步学习Go-协程goroutine

参考&#xff1a;逐步学习Go-协程goroutine – FOF编程网 什么是线程&#xff1f; 简单来说线程就是现代操作系统使用CPU的基本单元。线程基本包括了线程ID&#xff0c;程序计数器&#xff0c;寄存器和线程栈。线程共享进程的代码区&#xff0c;数据区和操作系统的资源。 线…

jMeter学习

一. JMeter介绍 1. 什么是JMeter&#xff1f; Apache JMeter™ 应用程序是开源软件&#xff0c;一个 100% 纯 Java 应用程序&#xff0c;旨在加载测试功能行为和测量性能 。它最初是为测试 Web 应用程序而设计的&#xff0c;但后来扩展到其他测试功能。 2. JMeter能做啥&#x…

RabbitMQ(简单模式)

2种远程服务调用 1openFeign&#xff1a; 优点&#xff1a;能拿到被调用的微服务返回的数据&#xff0c;系统系耦度高&#xff0c;系统稳定。 缺点&#xff1a;同步调用&#xff0c;如果有很多服务需要被调用&#xff0c;耗时长。 MQ,消息队列&#xff0c;RabbitMQ是消息we…

数据可视化-ECharts Html项目实战(8)

在之前的文章中&#xff0c;我们学习了如何设置散点图涟漪效果与仪表盘动态指针效果。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢 今天的文章&#xff0c;会…

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数(二)

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数&#xff08;二&#xff09; 说明记录 说明 简单介绍罗德里格斯变换以及OpenCV中的实现函数 记录

Machine Learning机器学习之向量机(Support Vector Machine,SVM)

目录 前言 算法提出背景&#xff1a; 核心思想&#xff1a; 原理&#xff1a; 应用领域&#xff1a; 一、支持向量机分类&#xff08;主要变体&#xff09; 二、构建常见的支持向量机模型 基于Python 中的 Scikit-learn 库构建线性支持向量机&#xff08;SVM&#xff09; 三、向…

蓝桥杯刷题之路径之谜

题目来源 路径之谜 不愧是国赛的题目 题意 题目中会给你两个数组&#xff0c;我这里是分别用row和col来表示 每走一步&#xff0c;往左边和上边射一箭&#xff0c;走到终点的时候row数组和col数组中的值必须全部等于0这个注意哈&#xff0c;看题目看了半天&#xff0c;因为…

【GPU系列】选择最适合的 CUDA 版本以提高系统性能

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

NVIDIA 发布 Project GR00T 人形机器人基础模型和 Isaac 机器人平台重大更新

系列文章目录 前言 Isaac 机器人平台现可为开发者提供全新的机器人训练仿真器、Jetson Thor 机器人计算机、生成式 AI 基础模型和由 CUDA 加速的感知和操作库。 Project GR00T 是一种多模态人形机器人通用基础模型&#xff0c;作为机器人的大脑&#xff0c;使它们能够学习技能…

Android客户端自动化UI自动化airtest从0到1搭建macos+demo演示

iOS客户端自动化UI自动化airtest从0到1搭建macosdemo演示-CSDN博客 一、基础环境 1. 安装jdk 选择jdk8 如果下载高版本 可能不匹配会失败 下载.dmg文件 苹果电脑 &#xff5c; macOS &#xff5c; jdk1.8 &#xff5c; 环境变量配置_jdk1.8 mac-CSDN博客 Java Downloads …