TCGA学习01:数据下载与整理 - 简书
TCGA学习02:差异分析 - 简书
TCGA学习03:生存分析 - 简书
TCGA学习04:建模预测-cox回归 - 简书
TCGA学习04:建模预测-lasso回归 - 简书
TCGA学习04:建模预测-随机森林&向量机 - 简书
第四步:建模预测
根据某些临床信息以及感兴趣的基因表达,来建立用于预测生存概率的模型,方法参考花花老师教程有以下四种。
法1:COX回归
Cox比例风险回归模型(Cox proportional hazards regression model)的特点是可以进行多变量分析;且变量类型不限于二分类变量,也可以是连续型变量。
1、建模
#加载数据、包
load("tosur.RData")
library(survival)
library(survminer)
#这里暂时考虑了三个因素
s=Surv(time, event) ~ gender + tumor_stage + age_group
# coxph建模
model <- coxph(s, data = meta )
summary(model)
观察下图的summary结果,先重点关注下一下内容
-
coef
值:结果为负,表示男性死亡风险低于女性,或者说有较高的生存概率。 -
exp(coef)
值,也称为风险比(HR)。HR = 1: 无影响,HR < 1: 降低风险,HR > 1: 增加风险。在本例中gendermale的exp(coef)值为0.86,表示男性可将危险降低0.86倍。 -
low .95
与upper .95
表示HR值的95%置信度区间CI,如果95%CI跨越了1,一般就不认为该因素对生存有显著影响。 - 输出给出了模型总体显着性的三个替代测试的p值:似然比检验,Wald检验和得分数据统计。这三种方法是渐近等价的。对于足够大的N,它们将给出类似的结果。对于小N,它们可能有所不同。对于小样本量,似然比检验具有更好的行为,因此通常是优选的。
2、绘制森林图
ggforest(model, data = meta,
main = "Hazard ratio", #森林图的标题
cpositions = c(0.10, 0.22, 0.4), #调整前三列的距离,防止过宽或过窄(重叠)
fontsize = 1.0,
refLabel = "1", #相对变量的数值标签
noDigits = 4 #保留HR值以及95%CI的小数位数
)
-
如下图从左到右的按列内容分别为因素、具体分组、每组的HR值及置信区间,最后为该组的P值大小(应该是每个因素里都有一个组作为参考比较,视为1)
随便找的数据,果然结果不好,熟悉流程为主~~
此外森林图左下角会给出出现结局事件的个数,COX生存模型的P值,AIC值和C-index值。关于C-index这里扩展一下--
3、C-index
- C-index,C指数即一致性指数(concordance index),用来评价模型的预测能力/拟合效果。
- C-index的计算方法是:把所研究的资料中的所有研究对象随机地两两组成对子。以生存分析为例,对于一对病人,如果生存时间较长的一位,其预测生存时间长于生存时间较短的一位,或预测的生存概率高的一位的生存时间长于生存概率低的另一位,则称之为预测结果与实际结果一致。
- C-index一般在0.5-1之间。0.5为完全随机,说明该模型没有预测作用,1为完全一致,说明该模型预测结果与实际完全一致。在实际应用中,很难找到完全一致的预测模型,既往研究认为,C-index在0.50-0.70为较低准确度:在0.71-0.90之间为中等准确度;而高于0.90则为高准确度。
fp <- predict(model)
fp #模型预测521个样本预测的生存概率
c_index1=summary(model,data=meta)$concordance[[1]]
# 或者Hmisc的rcorr.cens函数,结果都一样
c_index2=1-with(meta,rcorr.cens(fp,Surv(time, event)))[[1]]
# 或者直接在森林图左下角看出
花花老师在这篇文章里,还介绍了一个关于cox的风险因子三联图,暂时还没有太理解。存此下~
参考文章
1、TCGA数据分析流程梳理总结(含目录) - 简书
2、生存分析之Cox比例风险模型 - 简书
3、R语言之生信⑧Cox比例风险模型(多因素) - 简书
4、R语言之生信⑦Cox比例风险模型(单因素) - 简书
5、生存分析(Survival Analysis)、Cox风险比例回归模型(Cox proportional hazards model)及_人工智能_dqhl1990的博客-CSDN博客
6、生存模型的C-index(C指数)_JavaScript_FanJin的博客-CSDN博客