杀杀
(第一步不作赘述,一般会使用单因素cox或者寻找差异基因等方法,筛选与生存相关的分子,准备进行下一步的模型构建)
本篇举例是筛选了12个单因素cox与生存显著相关的分子(p和adj.p皆小于0.05,以构建模型,并达到显著区分生存的效果
-
准备用于cox的矩阵,包含:一列生存时间,一列生存状态,其余12列为纳入多因素cox的12个分子的表达,行名为样本名。
- 做多因素cox。
multi_Cox <- coxph(Surv(RFS_time_Months, RFS_Status) ~ ., data = Data_tnbc)
- 逐步回归,采用前向/后向/双向的规则去除冗余或无法使预测效能更佳的因素。
step_Cox <- step(multi_Cox ,direction = "backward") ##参数还有forward和both
cox_summary <- summary(step_Cox )
- 使用入选的因素来构建模型,为每个样本进行风险打分,并根据中位风险打分将样本分为高低风险。
riskScore=predict(step_Cox ,type = "risk",newdata = Data_tnbc)
coxGene=row.names(cox_summary$coefficients)
coxGene=gsub("`","",coxGene)
outCol=c("funtime","funstat",coxGene)
risk=as.vector(ifelse(riskScore>median(na.omit(riskScore)),"high","low"))
- 将新生成的高低风险label加入第一步的矩阵的新一列,并用cox或者生存分析检验其风险和生存差异。
Data_tnbc$risklabel_new <- risk
cox_new <- coxph(Surv(RFS_time_Months, RFS_Status) ~ risk, data =Data_tnbc)
cox_new
surv_TTP<-survfit(Surv(RFS_time_Months, RFS_Status) ~ risk, data =Data_tnbc)
ggsurvplot(surv_TTP,
pval = TRUE, #计算并显示组间差异的显著性
conf.int = F, #是否显示置信区间,这里没显示
risk.table = F, #风险表格,显示对应的患者数量
xlim = c(0, 120),#x轴范围,这里是120个月的意思
break.time.by = 24, #x轴间隔,每24个月显示一格
xlab = "RFS_time_Months", #x轴的label
ylab = "Survival Proportion",#y轴的label
legend.title = TitleNames,
main = "Survival curves",
submain = title)
以上是基础的cox模型训练,可以通过输入不同的因素/增减因素,来训练模型达到最佳效果