Cox比例风险回归模型单因素多因素生存分析

  • Post author:
  • Post category:其他




TCGA

Cox比例风险回归模型临床应用非常广泛,Cox分析得到的结果是可以直接运用到临床应用的,所以这个分析对癌症临床诊断有非常关键的作用,检测高低风险的关键基因,就可以预测病人5年生存率。

Cox比例风险回归模型,简称Cox回归模型。该模型又英国统计学家D.R.Cox于1972年提出,主要用于肿瘤和其他慢性病的预后分析,也可用于队列研究的病因探索。Cox回归模型能处理多个因素对生存时间影响的问题。

这里用到的癌症是:宫颈鳞状细胞癌CESC(临床307个样本,基因表达有304个样本)



1.TCGA数据库下载宫颈鳞状细胞癌数据

首先需要合并差异基因得到的表达量和临床信息

这个步骤非常重要,也是让很多人感觉麻烦的地方,TCGA数据库样本量大,一个重要的癌症样本300-500个,临床信息又是独立存在,这里用到的是总生存时间和生存状态,得到一个行名是样本,列名包括总生存时间、生存状态、以及所有差异基因,对应的数据是差异基因的表达量,当然这个表达量是处理过的,不是TCGA下载下载下来的原始数据。

如果还没有得到生存时间、生存状态的文件,也没有得到差异基因的表达量,那就要先做差异分析,提取生存时间。简单回顾一下,提取生存时间会用到TCGA数据库下载的metadata.txt文件,这个文件大家很熟悉,可以直接在TCGA数据库下载的;差异分析涉及的内容就比较多,首先要从TCGA数据库下载基因表达数据,然后用perl脚本合并所有样本的表达矩阵,得到矩阵之后,要对ID进行转换,TCGA数据库用的是ensmbol ID,需要转换gene symobl,得到gene symobl的矩阵之后,就可以做差异分析,做了差异分析,就可以接着我们上面的合并工作了。

在这里插入图片描述
TCGA临床数据于表达数据合并



2.单因素Cox分析

有了生存时间和表达量合并的文件,就可以做单因素Cox分析,直接用我们的R做分析,得到这样一个表格文件。

在这里插入图片描述
单因素cox分析



3.提取单因素P值

Cox单因素分析得到了单个基因的风险比和P值,可以筛选P值一个标准的基因,拿到这些基因,然后把这些基因的表达量筛选出来,还有样本的生存时间和生存状态,放在一个文件里面,用来做这些基因的多因素分析,当然了,筛选的基因不要多,控制在20个左右。简单点说,就是筛选这20个左右基因如同步骤一的文件。



4.多因素Cox分析

利用上面得到的关键基因的表达量做多因素分析,方法和单因素的差不多,只是这时用到了所有基因,而单因素是对每个基因做分析,多因素是用这些关键基因一起分析。可以得到风险值和高低风险分类。

风险表格
风险表格



5.绘制生存曲线、ROC曲线

用到的都是上面多因素分析得到的数据,用所有样本的风险比例,生存时间,就可以做生存曲线,ROC曲线。
在这里插入图片描述
风险生存曲线

在这里插入图片描述
ROC曲线



6.高低风险热图绘制

这里需要用到两个数据,一个是Cox多因素分析得到的基因,这个是根据Cox公式计算得到的,这里我们得到了7个,提取这7个基因的表达量,还有这7个基因在高低风险的分类,就可以绘制一张热图,热图从左到右的样本是风险分值以此从低到高的。
在这里插入图片描述
在这里插入图片描述

R语言实例练习:

单因素回归分析:

library("survival")
#install.packages('survminer')
library("survminer")
data("lung")
#Surv()函数创建生存数据对象(主要输入生存时间和状态逻辑值),再用survfit()函数对生存数据对象拟合生存函数
    
#Surv:用于创建生存数据对象
#survfit:创建KM生存曲线或是Cox调整生存曲线
fit <- survfit(Surv(time, status) ~ sex, data = lung)
#survdiff:用于不同组的统计检验
survdiff(Surv(time, status) ~ sex, data = lung)
#三种作图方法:
plot(fit)
ggsurvplot(fit,
           pval = TRUE, conf.int = TRUE,
           risk.table = TRUE, # Add risk table
           risk.table.col = "strata", # Change risk table color by groups
           linetype = "strata", # Change line type by groups
           surv.median.line = "hv", # Specify median survival
           ggtheme = theme_bw(), # Change ggplot2 theme
           palette = c("#E7B800", "#2E9FDF")
)
plot(fit,xlab="Time(Days)",ylab="Survival",main="title",col=c("blue","red"),lty=2,lwd=2) 
legend("topright",c("A","B"),col=c("blue","red"),lty=2,lwd=2,cex=0.7)

第一个作图语句输出:

在这里插入图片描述

Cox回归分析:

library("survival")
library("survminer")
#Cox模型主要用到的是coxph()函数,但需要先用Surv()函数产生一个生存对象;
#另外coxph()函数支持的方法有:exact,breslow以及exact,默认是exact
data("lung")
# res.cox <- coxph(Surv(time, status) ~ sex, data = lung)
# summary(res.cox)
#coef就是公式中的回归系数b(有时也叫做beta值)
#因此exp(coef)则是Cox模型中最主要的概念风险比(HR-hazard ratio)
# HR = 1: No effect
# HR < 1: Reduction in the hazard
# HR > 1: Increase in Hazard
# 在癌症研究中:
# hazard ratio > 1 is called bad prognostic factor
# hazard ratio < 1 is called good prognostic factor
res.cox <- coxph(Surv(time, status) ~ age + sex + ph.ecog, data =  lung)
summary(res.cox)
# Create the new data  
sex_df <- with(lung,
               data.frame(sex = c(1, 2), 
                          age = rep(mean(age, na.rm = TRUE), 2),
                          ph.ecog = c(1, 1)
               )
)
fit <- survfit(res.cox, newdata = sex_df)
ggsurvplot(fit, data = sex_df, conf.int = TRUE, 
           legend.labs=c("Sex=1", "Sex=2"),
           ggtheme = theme_minimal())



在这里插入图片描述



版权声明:本文为wuyameng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。