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

article/2025/8/28 10:38:04

## 近期将推出 医学生R语言入门课;R语言与高级统计学 付费专栏,感谢大家支持 ##

上次提到单因素cox回归分析:

(生物信息学)R语言与统计学入门(九)—— 单因素cox回归分析_Lijingxian教你学生信的博客-CSDN博客_r语言单因素回归分析​COX回归模型,又称“比例风险回归模型(proportional hazards model,简称Cox模型)”,是由英国统计学家D.R.Cox(1972)年提出的一种半参数回归模型。该模型以生存结局和生存时间为因变量,可同时分析众多因素对生存期的影响,能分析带有截尾生存时间的资料,且不要求估计资料的生存分布类型。由于上述优良性质,该模型自问世以来,在医学随访研究中得到广泛的应用,是迄今生存分析中应用最多的多因素分析方法。​https://blog.csdn.net/weixin_46500027/article/details/124428439?spm=1001.2014.3001.5501但是,单因素cox回归分析往往不符合显示,一个变量往往不能反应结局变量的情况,且往往可能受到其他变量的制约。

因此,在单因素cox回归分析之后,我们还需要进行多因素cox回归分析。
​​​​​​​

下面分享一下多因素Cox回归分析,我们来看下面这一组数据:

 这是TCGA前列腺癌数据,要下载相关数据可以去我的资源中下载,目前上传了FPKM和CPM格式的表达数据和临床数据。

我们要分析后面四个指标对RFS的影响,可以用到多因素cox回归分析。

下面我们看代码,先读取数据:

setwd("D:\\")
dir()
data <- read.csv("Cox.csv",header = T,sep = ",")
head(data)# > head(data)
#         sampleID RFS.time RFS age gleason TNM ALYREF
#1 TCGA-CH-5751-01      365   1  68      10   4 3.958
#2 TCGA-ZG-A9KY-01      130   0  73       9   4 3.527
#3 TCGA-G9-6363-01     1378   0  64       7   4 2.618
#4 TCGA-G9-6365-01     1363   0  71       7   4 2.147
#5 TCGA-G9-6494-01     1771   0  66       7   4 1.792
#6 TCGA-EJ-5518-01     2104   1  66       9   4 1.487

然后加载coin包,运行cox回归函数:

library(coin)
cox <- coxph(Surv(RFS.time,RFS)~age+gleason+TNM+ALYREF,data)
summary(cox)# 结果如下
# > summary(cox)
#Call:
#coxph(formula = Surv(RFS.time, RFS) ~ age + gleason + TNM + ALYREF, 
#    data = data)
#
#  n= 421, number of events= 52 
#
#             coef exp(coef)  se(coef)      z Pr(>|z|)    
#age     -0.007634  0.992395  0.021284 -0.359    0.720    
#gleason  0.803836  2.234095  0.169679  4.737 2.16e-06 ***
#TNM      0.244095  1.276466  0.307639  0.793    0.428    
#ALYREF   0.034479  1.035080  0.135279  0.255    0.799    
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#        exp(coef) exp(-coef) lower .95 upper .95
#age        0.9924     1.0077    0.9518     1.035
#gleason    2.2341     0.4476    1.6020     3.116
#TNM        1.2765     0.7834    0.6985     2.333
#ALYREF     1.0351     0.9661    0.7940     1.349
#
#Concordance= 0.706  (se = 0.041 )
#Likelihood ratio test= 38.28  on 4 df,   p=1e-07
#Wald test            = 33.63  on 4 df,   p=9e-07
#Score (logrank) test = 40  on 4 df,   p=4e-08

可以看到,除了gleason评分之外,其余的变量都没有意义,包括我们要研究的基因ALYREF。

我们用逐步回归法,排除可能存在共线性的变量,筛选出最有价值的变量:

step(cox,direction = "both")# > step(cox,direction = "both")
#Start:  AIC=500.67
#Surv(RFS.time, RFS) ~ age + gleason + TNM + ALYREF
#
#          Df    AIC
#- ALYREF   1 498.73
#- age      1 498.80
#- TNM      1 499.30
#<none>       500.67
#- gleason  1 523.88
#
#Step:  AIC=498.73
#Surv(RFS.time, RFS) ~ age + gleason + TNM
#
#          Df    AIC
#- age      1 496.84
#- TNM      1 497.47
#<none>       498.73
#+ ALYREF   1 500.67
#- gleason  1 523.76
#
#Step:  AIC=496.84
#Surv(RFS.time, RFS) ~ gleason + TNM
#
#          Df    AIC
#- TNM      1 495.54
#<none>       496.84
#+ age      1 498.73
#+ ALYREF   1 498.80
#- gleason  1 521.76
#
#Step:  AIC=495.54
#Surv(RFS.time, RFS) ~ gleason
#
#          Df    AIC
#<none>       495.54
#+ TNM      1 496.84
#+ ALYREF   1 497.40
#+ age      1 497.47
#- gleason  1 530.95
#Call:
#coxph(formula = Surv(RFS.time, RFS) ~ gleason, data = data)
#
#          coef exp(coef) se(coef)     z       p
#gleason 0.8674    2.3807   0.1518 5.714 1.1e-08
#
#Likelihood ratio test=37.41  on 1 df, p=9.552e-10
#n= 421, number of events= 52 

逐步回归法最终得出的结果是,只留下gleason评分就可以了,其他的变量可以筛走,不重要。

那么这个基因就没有研究的必要了,赶紧换一个基因吧。

这也是我们在做基础实验,选择基因的标准,单因素先初筛,多因素再进一步筛选,研究多因素cox回归有意义的基因,这样不会被质疑。


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

相关文章

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;该函数有两个参数…

Python - 怎么将一个数字拆分成多个随机数字

前情提要 使用numpy.random.choice()的时候&#xff0c;通过参数p&#xff08;一个列表&#xff09;来指定所给选择元素的选择概率。但参数p&#xff08;选择概率&#xff09;要保证和为1&#xff0c;这时我又想随机生成选择概率&#xff0c;所以现在的问题就是怎么将1拆分成多…

python随机生成一个数字_如何实现python随机生成数字?

今天小编就生成随机数,整理了多个方式,方便大家在项目时,根据自己的需求,直接拿来套用即可,以下内容相当详细,具体来看看吧~ 说明:python中生成随机数主要用到random模块,方法主要包括:randint、uniform、random、sample、choice等几种常用方法; 环境:Mac OS 10.1…

python随机生成三位数字_python3 随机生成数字

原博文 2019-11-25 10:07 − random模块 random.randint(1,10)--随机生成0-10之间的随机整数 random.uniform(1,10)--随机生成0-10之间的实数 random.randrange(9,100,10)--从9-100之间随机选取一个实数,差为10,也就是说从9,19,29,39,49... 0 3530 相关推荐 2019-12-0…