R语言多因素cox回归构建预测模型

杀杀

(第一步不作赘述,一般会使用单因素cox或者寻找差异基因等方法,筛选与生存相关的分子,准备进行下一步的模型构建)

本篇举例是筛选了12个单因素cox与生存显著相关的分子(p和adj.p皆小于0.05,以构建模型,并达到显著区分生存的效果

  1. 准备用于cox的矩阵,包含:一列生存时间,一列生存状态,其余12列为纳入多因素cox的12个分子的表达,行名为样本名。


    示例数据
  2. 做多因素cox。
multi_Cox <- coxph(Surv(RFS_time_Months, RFS_Status) ~ ., data = Data_tnbc)
  1. 逐步回归,采用前向/后向/双向的规则去除冗余或无法使预测效能更佳的因素。
step_Cox <- step(multi_Cox ,direction = "backward") ##参数还有forward和both
cox_summary <- summary(step_Cox )
  1. 使用入选的因素来构建模型,为每个样本进行风险打分,并根据中位风险打分将样本分为高低风险。
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"))
  1. 将新生成的高低风险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模型训练,可以通过输入不同的因素/增减因素,来训练模型达到最佳效果

你可能感兴趣的:(R语言多因素cox回归构建预测模型)