Cox与KM生存分析及结果解读 不同的生存分析方法 单因素和多因素生存分析的比较km cox回归分析差异 生存分析结果详解 结果解读 参数详细解释 全因死亡率

article/2025/8/28 8:55:38

在这里插入图片描述
生存分析KM法与Cox法异同介绍
KM 方法即Kaplan-Meier survival estimate是一种无参数方法(non-parametric)来从观察的生存时间来估计生存概率的方法。KM生存分析模型,是单变量分析(univariable analysis),在做单变量分析时,**模型只描述了该单变量和生存之间的关系而忽略其他变量的影响。(**为什么要考虑multi-variables?比如在比较两组病人拥有和不拥有某种基因型对生存率的影响,但是其中一组的患者年龄较大,所以生存率可能受到基因型 或/和 年龄的共同影响)。同时,Kaplan-Meier方法只能针对分类变量(治疗A vs 治疗B,男 vs 女),不能分析连续变量对生存造成的影响。为了解决上述两种问题,Cox比例风险回归模型(Cox proportional hazards regression model)就被提了出来。

此,Cox比例风险回归模型,可以分析连续变量对生存造成的影响,也可以多变量分析对生存的影响。

R语言中的生存分析R包介绍
R是数据分析常用的软件之一,通过各种功能强大的R包,可以简单方便的实现各种分析。在R语言中,能够进行生存分析的R包很多,survival和survminer是其中最基本的两个,survival负责分析,survimner负责可视化,二者相结合,可以轻松实现生存分析。

R语言中的KM模型分析

  1. 准备生存数据
    对于每个个体而言,其生存数据会出现两种情况,*****第一种是观测到生存时间,通常用1表示,第二种则是删失。通常用0表示。*survival自带了一个测试数据lung, 内容如下所示

在这里插入图片描述

每一行代表一个样本,time表示生存时间,status表示删失情况,这里只有1和2两种取值,默认排序后的第一个level对应的值为删失,这里则为1表示删失。其他列为样本对应的性别,年龄等基本信息。
2. 进行生存分析
这里根据性别这个二分类变量,采用KM算法来估计生存曲线,代码如下(summary结果只显示部分)

library(“survival”)
library(“survminer”)

kmfit<-survfit(Surv(time, status) ~ sex, data =  lung) 忽略其他因素,只看性别对生存结局的影响
> summary(kmfit)
Call: survfit(formula = Surv(time, status) ~ sex, data = lung)sex=1time n.risk n.event survival std.err lower 95% CI upper 95% CI11    138       3   0.9783  0.0124       0.9542        1.00012    135       1   0.9710  0.0143       0.9434        0.99913    134       2   0.9565  0.0174       0.9231        0.99115    132       1   0.9493  0.0187       0.9134        0.98726    131       1   0.9420  0.0199       0.9038        0.98230    130       1   0.9348  0.0210       0.8945        0.977

从kmfit中summary可以看到已经包含了每个时间点的生存概率,删失等信息,通过这些信息,完全可以自己写代码来画图。为了方便,我们直接采用survminer中的函数来进行可视化。

  1. 分析结果的可视化
    最基本的可视化方式如下
library("survminer")
ggsurvplot(kmfit,pval = TRUE, conf.int = TRUE,risk.table = TRUE,risk.table.col = "strata",linetype = "strata",surv.median.line = "hv",ggtheme = theme_bw(),palette = c("#E7B800", "#2E9FDF"))

在这里插入图片描述

语言中的Cox模型分析

单变量Cox回归 univariate analysis

library("survival")
library("survminer")res.cox <- coxph(Surv(time, status) ~ sex, data =  lung)
summary(res.cox)
summary的结果:Call:
coxph(formula = Surv(time, status) ~ sex, data = lung)n= 228, number of events= 165 coef exp(coef) se(coef)      z  Pr(>|z|)   
sex -0.5310    0.5880   0.1672 -3.176  0.00149 **
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1exp(coef) exp(-coef) lower .95 upper .95
sex     0.588      1.701    0.4237     0.816
Concordance= 0.579  (se = 0.021 )
Likelihood ratio test= 10.63  on 1 df,   p=0.001
Wald test            = 10.09  on 1 df,   p=0.001
Score (logrank) test = 10.33  on 1 df,   p=0.001

Cox回归结果可以解释如下:
统计显着性。标记为“z”的列给出了Wald统计值。它对应于每个回归系数与其标准误差的比率(z = coef / se(coef))。wald统计评估是否beta(ββ)系数在统计上显着不同于0。从上面的输出,我们可以得出结论,变量性别具有高度统计学意义的系数。

回归系数。Cox模型结果中要注意的第二个特征是回归系数(coef)的符号。一个积极的信号意味着危险(死亡风险)较高,因此对于那些变量值较高的受试者,预后更差。变量性被编码为数字向量。1:男,2:女。Cox模型的R总结给出了第二组相对于第一组,即女性与男性的风险比(HR)。性别的β系数= -0.53表明在这些数据中,女性的死亡风险(低存活率)低于男性

危害比例。指数系数(exp(coef)= exp(-0.53)= 0.59)也称为风险比,给出协变量的效应大小。例如,女性(性别= 2)将危害降低了0.59倍,即41%。女性与预后良好相关。

风险比的置信区间。总结结果还给出了风险比(exp(coef))的95%置信区间的上限和下限,下限95%界限= 0.4237,上限95%界限= 0.816。

全球统计学意义的模型。最后,输出为模型的总体显着性提供了三个替代测试的p值:可能性比率测试,Wald测试和得分logrank统计。这三种方法是渐近等价的。对于足够大的N,他们会得到相似的结果。对于小N来说,它们可能有所不同。似然比检验对于小样本量具有更好的表现,所以通常是优选的。

2.多变量Cox回归

要一次性将单变量coxph函数应用于多个协变量,请输入:

res.cox <- coxph(Surv(time, status) ~ age + sex + ph.ecog, data =  lung)
summary(res.cox)
Call:
coxph(formula = Surv(time, status) ~ age + sex + ph.ecog, data = lung)n= 227, number of events= 164(1 observation deleted due to missingness)coef exp(coef)  se(coef)      z Pr(>|z|)
age      0.011067  1.011128  0.009267  1.194 0.232416
sex     -0.552612  0.575445  0.167739 -3.294 0.000986 ***
ph.ecog  0.463728  1.589991  0.113577  4.083 4.45e-05 ***
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1exp(coef) exp(-coef) lower .95 upper .95
age        1.0111     0.9890    0.9929    1.0297
sex        0.5754     1.7378    0.4142    0.7994
ph.ecog    1.5900     0.6289    1.2727    1.9864Concordance= 0.637  (se = 0.025 )Likelihood ratio test= 30.5  on 3  df,   p=1e-06 Wald test            = 29.93  on 3 df,   p=1e-06 Score (logrank) test = 30.5  on 3 df,   p=1e-06

所有3个整体测试(可能性,Wald 和 得分)的p值都是显着的,表明该模型是显着的。这些测试评估了所有的beta(ββ)为0.在上面的例子中,检验统计是完全一致的,综合零假设被完全拒绝。

在多变量Cox分析中,协变量性别和ph.ecog仍然显着(p <0.05)。然而,协变量年龄并不显着(P = 0.17,这比0.05)。

性别p值为0.000986,危险比HR = exp(coef)= 0.58,表明患者性别和死亡风险降低之间有很强的关系。协变量的风险比可以解释为对风险的倍增效应。例如,保持其他协变量不变,女性(性别= 2)将危害降低0.58倍,即42%。我们的结论是,女性与良好的预后相关。

类似地,ph.ecog的p值是4.45e-05,危险比HR = 1.59,表明ph.ecog值与死亡风险增加之间的强关系。保持其他协变量不变,ph.ecog值越高,生存率越差。

相比之下,年龄的p值现在是p = 0.23。风险比HR = exp(coef)= 1.01,95%置信区间为0.99至1.03。由于HR的置信区间为1,这些结果表明,年龄在调整了ph值和患者性别后对HR的差异的贡献较小,并且仅趋向显着性。例如,保持其他协变量不变,额外的年龄会导致每日死亡危险因素为exp(beta)= 1.01或1%,这不是一个重要的贡献。

可视化估计的生存时间分布
已经将Cox模型拟合到数据中,可以在特定风险组的任何给定时间点可视化预测的存活比例。函数survfit()估计生存比例,默认情况下为协变量的平均值。

绘制生存曲线:

kmfit<-survfit(Surv(time, status) ~ sex, data =  lung)
ggsurvplot(kmfit,pval = TRUE, conf.int = TRUE,risk.table = TRUE, risk.table.col = "strata", linetype = "strata", surv.median.line = "hv", ggtheme = theme_bw(), palette = c("#E7B800", "#2E9FDF"))

Cox回归分析结果及其解读 实战

在这里插入图片描述

纳入性别、术中放疗、占位处、腹膜转移情况、分期、胰胆管浸润程度变量,构建多因素COX比例风险模型。结果发现:术中放疗较无术中放疗,对生存时间的影响具有统计学意义(HR=0.30,95%CI 0.10-0.92, P=0.035);四期病人相对三期病人,对生存时间的影响具有统计学意义(HR=3.59,95%CI 1.46-8.93, P=0.006);手术时年龄对生存时间的影响有统计学意义(HR=1.06,95%CI 1.03-1.10, P=0.001),具有其他变量对生存时间的影响无统计学意义(P>0.05)。
下载 (16).jpeg
进一步解读

2.Cox回归受到等比例风险假定的限制,应用请慎重

Cox全称是Cox比例风险模型,在建模时需要满足等比例风险假定。

什么是等比例风险?

由于HR值是两组曲线风险函数值(死亡速度)的比值,同时风险函数值是生存曲线的切线斜率,那么HR值是生存曲线切线斜率的比值。

实际上,**由于每个时点都有相应的“死亡”速度h(t),根据每个时点比较风险值,都可以计算一个HR。因此,我们可以得到无穷个HR值,而它可能会随着时间的变化而变化。
但是我们总体上,一个研究因素在Cox回归中就只有一个HR值,怎么办?以哪个时间点的HR代表总的HR呢?或者说中的HR反映了哪个时间段的风险比值呢?
怎么办?干脆我们规定好,在HR基本不随时间变化情况下,我们才能构建回归模型,这就是等比例风险假定。**所有时间点风险比值相同,即等比例,也就是HR值相同。那么最后计算出来的HR就能代表所有时间点的HR了!

我用两幅图来表达等比例与不等比例,更多的关于等比例风险假定的识别与备用方法,我们将在下一文再进行介绍。

在这里插入图片描述

2. KM LogRank分析与Cox回归的异同

Logrank分析与Cox均可以用于探讨研究因素与“死亡”风险的关系。特别是Logrank与单因素Cox回归,在原理与结果具有相似

Logrank与单因素Cox回归都是简单关联性分析方法。

LogRank从生存率变化趋势角度分析不同暴露组别或者不同干预措施直接之间有无差异;而单因素Cox回归则从死亡速度角度来分析差异性。其实生存率变化趋势和死亡速度,说起来差不多是一回事。

两者区别在于,Cox回归可以计算研究因素对“死亡”风险的影响程度,HR,但是受到等比例风险假定的限制,LogRank呢,很难计算HR,但受到约束条件少。

两者均不能有效分析多因素情况下,研究因素的效应,因为它们无法计算调整HR值和调整P值。

特别在观察性研究中,每个因素的效应都可能受到其它因素的干扰,只有控制了其它因素的干扰后,才能准确探讨目标因素的效应。这个时候,便需要多因素回归分析。

紧跟下一点,继续介绍多因素回归。

3.Cox回归广泛应用于随访性研究

随访性研究的实验性研究和队列研究,均需要Cox回归。

在实验性研究中,我们一般需要LogRank帮忙计算P值来反映治疗效果或者组间差异性,但是LogRank无法直接计算HR值。因此,一般情况下,我们会结合Cox回归帮忙求一个HR值和95% 置信区间。

在队列研究中,Cox回归可以起到两点作用,第一,在多因素模式下,探讨多个影响因素,第二,可以利用多因素,来控制干扰因素(即混杂因素),来探讨目标暴露因素的作用。因为LogRank和单因素Cox回归都只能探讨简单关联性,而无法排除干扰因素的影响。

Cox回归和HR值


http://chatgpt.dhexx.cn/article/JStsLRUU.shtml

相关文章

咋筛选变量进入多因素回归 纳入变量 变量选择 类似机器学习的特征选择 cox回归分析cox多因素

在前期推送的内容中&#xff0c;我们介绍了构建多因素回归模型&#xff0c;探讨对结局指标有独立作用的影响因素&#xff0c;就好比侦探破案找出真凶的过程。我们作为研究人员&#xff0c;就像是一名侦探&#xff0c;通过统计学方法及专业知识&#xff0c;在众多的嫌疑人中一一…

(生物信息学)R语言与统计学入门(九)—— 单因素cox回归分析

## 近期将推出 ​​​​​​​苦逼医学生R语言入门;R语言与高级统计学 付费专栏&#xff0c;感谢大家支持 ##​​​​​​​ COX回归模型&#xff0c;又称“比例风险回归模型(proportional hazards model&#xff0c;简称Cox模型)”&#xff0c;是由英国统计学家D.R.Cox(1972)年…

(生物信息学)R语言与统计学入门(十)—— 多因素Cox回归分析

## 近期将推出 医学生R语言入门课;R语言与高级统计学 付费专栏&#xff0c;感谢大家支持 ## 上次提到单因素cox回归分析&#xff1a; &#xff08;生物信息学&#xff09;R语言与统计学入门&#xff08;九&#xff09;—— 单因素cox回归分析_Lijingxian教你学生信的博客-CSD…

SPSS如何进行Cox回归分析操作

问题与数据 某研究者拟观察某新药的抗肿瘤效果&#xff0c;将70名肺癌患者随机分为两组&#xff0c;分别采用该新药和常规药物进行治疗&#xff0c;观察两组肺癌患者的生存情况&#xff0c;共随访2年。研究以死亡为结局&#xff0c;两种治疗方式为主要研究因素&#xff0c;同时…

R语言生存分析:Cox回归

上次介绍了生存分析中的寿命表、K-M曲线、logrank检验、最佳切点的寻找等&#xff0c;本次主要介绍Cox回归。 本推文不涉及理论&#xff0c;只有实操&#xff0c;想要了解生存分析的理论的请自行学习。 Cox回归 使用survival包中的lung数据集用于演示&#xff0c;这是一份关…

SPSS教学—Cox回归模型探索多因素对生存期的影响

Cox回归模型又称为比例风险回归模型&#xff0c;该模型以生存结局和生存时间作为因变量&#xff0c;进而分析众多因素对生存期的影响&#xff0c;是一个典型的多因素分析方法。 SPSS中就带有Cox回归模型方法&#xff0c;本节将带大家进行深入的了解与探索&#xff0c;话不多说…

oracle dump enq hw,等待事件enq:HW–contention说明及解决方法

一、今天在查看awr报告中&#xff0c;发现Top 5 Timed Foreground Events发现enq: HW - contention的等待事件&#xff1b; 二、enq: HW - contention的官方说明&#xff1a; The HW enqueue is used to serialize the allocation of space beyond the high water mark of a se…

关于enq: TX - allocate ITL entry的问题分析

今天发现系统在下午1点左右的时候负载比较高,就抓取了一个最新的awr报告. Snap Id Snap Time Sessions Cursors/Session Begin Snap: 20892 26-Nov-14 13:20:17 3623 5.4 End Snap: 20893 26-Nov-14 13:30:17 3602 5.4 Elapsed: 10.01 (mins) DB Time…

enq: TX - index contention

解决方案&#xff1a;alter system set “_lm_drm_disable”5 sid’*’;&#xff08;重启库&#xff09;

oracle enq: tm,Tuning enq: TM – contention with foreign key (外键引起的队列)

TM – Enqueue contention 与Table Manipulation相关的入队争用&#xff0c;可以在使用需要锁定表的重组活动显式锁定表时看到。 ID1 ID2的含义 ID1 : 0(LGWR) or object_number&#xff0c; 即DBA_OBJECTS.OBJECT_ID ID2: 0 for a normal table / partition lock ; 1 for…

Oracle-enq: TX - row lock contention 等待事件分析

什么是enq:TX - row lock contention等待: 等待事件enq:TX - row lock contention 是Oracle常见的几大等待事件之一,在开启的事务中&#xff0c;为了维护事务数据的一致性&#xff0c;会在事务所涉及的修改行中添加TX锁以防止其他会话同时修改数据&#xff0c;当其他会话等待该…

Oracle死锁问题: enq: TX - row lock contention

前言 这篇文章也是记录近期遇到的问题以及从中学到的知识 &#xff0c;近期一直在救火&#xff0c;有些问题自认为还是挺有代表性的&#xff0c;有兴趣的话再继续向下看 问题现象 线上反馈&#xff0c;执行批量处理EXCEL数据时&#xff0c;系统一直卡在进度滚动条界面。处理任务…

oracle dump enq hw,enq:HW–contention 故障处理

enq: HW - contention 说明&#xff1a; 硬件队列用于序列化段的高水位线以外的空间分配。 可以用手动分配范围即可解决问题。 V$SESSION_WAIT,P2 / V$LOCK.ID1 is the tablespace number. V$SESSION_WAIT.P3 / V$LOCK.ID2 is the relative data block address (dba) of segmen…

oracle enq ta,Oracle 的 enq: TT - contention 等待事件

Oracle 的 enq: TT - contention 等待事件 在遇到 TT 锁等待时,你可能会被Oracle的文档所困扰。即便是在Oracle Database 12c的文档中,关于TT锁的描述也是:Temporary table enqueue。 这其实已经不准确了,从数据库中可以得到更详细和准确的描述,V$LOCK_TYPE中有着准确记录…

oracle enq ta,enq: TA – contention 等待事件

enq: TA – contention 等待事件 This enqueue is used when undo tablespace operations are being performed. Some examples of such operations are: When dropping an undo tablespace we acquire the enqueue in exclsuive mode to stop other sessions using the undo t…

关于AQS中的enq方法的理解

自己太笨了&#xff0c;总感觉有点绕&#xff0c;就整理下吧~ private Node enq(final Node node) {//自旋锁for (;;) {//tail默认就是nullNode t tail;if (t null) { // Must initialize//因为tail默认是null&#xff0c;所以首次一定会进来//compareAndSetHead在下面//也就…

队列等待之enq: TX - row lock contention

【性能优化】队列等待之enq: TX - row lock contention 问题背景&#xff1a; 客户反映某条sql DELETE SHAREINNERDOC WHERE SOURCEID:B1<br/>这个执行时间太长 问题解决 1> 查看awr报告&#xff1a; 有队列等待之enq: TX - row lock contention&#xff0c;对应的sq…

等待事件 enq:TX - row lock contention分析与解决

6月30日&#xff0c;数据库发生了大量锁表。大概持续1小时&#xff0c;并且越锁越多。后来通过业务人员停掉程序&#xff0c;并kill掉会话后解决。 几天后再EM上查看CPU占用&#xff1a; CPU发生了明显等待。 主要是由于enq:TX - row lock contention等待事件造成。 等待事…

java -- 随机获取字母或者数字

java只有涉及到随机的&#xff0c;最经常用到的方法就是Math.random()&#xff0c;这个方法会返回一个大于0小于1的随机数( 能取0不能取1 )&#xff0c;如果我们要随机0-9&#xff0c;就可以用&#xff08;Math.random()*10&#xff09;来表示&#xff0c;随机0-99也类似如此操…

JavaScript生成随机字母数字字符串

如何使用javascript生成随机字母数字字符串&#xff1f;下面本篇文章就来给大家介绍一下使用JavaScript生成随机字母数字字符串的方法&#xff0c;希望对大家有所帮助。 方法一&#xff1a;Math.random()方法和Math.floor()方法 ● 创建一个函数&#xff0c;该函数有两个参数…