殺殺
(第一步不作贅述肩袍,一般會使用單因素cox或者尋找差異基因等方法呼盆,篩選與生存相關(guān)的分子鳞绕,準備進行下一步的模型構(gòu)建)
本篇舉例是篩選了12個單因素cox與生存顯著相關(guān)的分子(p和adj.p皆小于0.05,以構(gòu)建模型而昨,并達到顯著區(qū)分生存的效果
-
準備用于cox的矩陣帆焕,包含:一列生存時間惭婿,一列生存狀態(tài),其余12列為納入多因素cox的12個分子的表達叶雹,行名為樣本名财饥。
示例數(shù)據(jù) - 做多因素cox。
multi_Cox <- coxph(Surv(RFS_time_Months, RFS_Status) ~ ., data = Data_tnbc)
- 逐步回歸折晦,采用前向/后向/雙向的規(guī)則去除冗余或無法使預測效能更佳的因素钥星。
step_Cox <- step(multi_Cox ,direction = "backward") ##參數(shù)還有forward和both
cox_summary <- summary(step_Cox )
- 使用入選的因素來構(gòu)建模型,為每個樣本進行風險打分满着,并根據(jù)中位風險打分將樣本分為高低風險谦炒。
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, #是否顯示置信區(qū)間编饺,這里沒顯示
risk.table = F, #風險表格乖篷,顯示對應(yīng)的患者數(shù)量
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)
以上是基礎(chǔ)的cox模型訓練撕蔼,可以通過輸入不同的因素/增減因素,來訓練模型達到最佳效果