美文网首页生信基础信息学习生信学习
TCGA Cox模型-训练集、内部验证集、外部验证集综合构建Co

TCGA Cox模型-训练集、内部验证集、外部验证集综合构建Co

作者: 误入BioInfor的大黄鸭 | 来源:发表于2021-11-13 01:53 被阅读0次

前面我们已经进行了单因素Cox回归,LASSO回归及多因素Cox回归建模,而我们想对建好的模型进行验证,本例通过内部验证组和外部验证组对Cox模型进行内部验证和外部验证,并对模型进行可视化。

7.内部验证组和外部验证组进行模型验证


#test1组的基因表达矩阵
test1GeneExp=test1[,CoxGenes]

#求test1组的风险值
Test1RiskScore=apply(test1GeneExp,1,riskFun)

#以中位值分为高风险组和低风险组
riskTest1=as.vector(ifelse(Test1RiskScore>TrainRiskMedian,"high","low"))

#构建生存分析模型
diffTest1=survdiff(Surv(time, status) ~riskTest1,data = test1)

#计算p值
Test1PValue=1-pchisq(diffTest1$chisq,df=1)

#做ROC分析
Test1ROC = survivalROC(Stime=test1$time, status=test1$status, marker = Test1RiskScore, predict.time =1,  method="KM")

#test2组的基因表达矩阵
test2GeneExp=test2[,CoxGenes]

#求test2组的风险值
Test2RiskScore=apply(test2GeneExp,1,riskFun)

#以中位值分为高风险组和低风险组
riskTest2=as.vector(ifelse(Test2RiskScore>TrainRiskMedian,"high","low"))

#构建生存分析模型
diffTest2=survdiff(Surv(time, status) ~riskTest2,data = test2)

#计算p值
Test2PValue=1-pchisq(diffTest2$chisq,df=1)

#做ROC分析
Test2ROC = survivalROC(Stime=test2$time, status=test1$status, marker = Test2RiskScore, predict.time =1,  method="KM")

8.输出结果文件


#判断p值和AUC值是否达到最低标准,一般p小于0.05且AUC大于0.65都是比较好的标准
if((TrainPValue<0.05) & (TrainROC$AUC>0.65) & (Test1PValue<0.05) & (Test1ROC$AUC>0.65) & (Test2PValue<0.05) & (Test2ROC$AUC>0.65)){

#输出分组的基因表达矩阵
trainExp=cbind(ID=row.names(trainGeneExp),trainGeneExp)
test1Exp=cbind(ID=row.names(test1GeneExp),test1GeneExp)
write.table(trainExp1,file="train_exp_time.txt",sep="\t",quote=F,row.names=F)
write.table(testExp1,file="test1_exp_time.txt",sep="\t",quote=F,row.names=F)
#这里讲下输出sep="\t"表示以空格分隔,quote=F表示输出的列名不用加双引号,row.name=F表示不输出行名,这里我们说一下,为什么都有了行名,cbind(ID=row.names(trainGeneExp),trainGeneExp)在这里我们还用cbind个行名到表格里,是因为如果用R给的方法输出行名,你就会发现,在用Excel打开txt文件的时候,列名会对不上列,因此我们自造行名,不用write.table函数自带的输出行名的功能

#输出单因素Cox结果
write.table(SingleCoxOut,file="SingleCoxOut.txt",sep="\t",quote=F,row.names=F)

#输出lasso回归结果
#绘制lambda图
pdf(file="lambda.pdf")
plot(r1, xvar = "lambda", label = TRUE)
dev.off()
#绘制交叉验证图
pdf(file="cvfit.pdf")
plot(cvr2)
abline(v=log(c(cvr2$lambda.min,cvr2$lambda.1se)),lty="dashed")   #画出均方误差最小时的lambda值和距离均方误差最小时一个标准误的lambda值(非常拗口)
dev.off()

#输出多因素结果(这里也需要cbind,单独定一列行名,前面有讲过原因)
MultiCoxOut=cbind(ID=rownames(MultiCoxOut),MultiCoxOut)
write.table(MultiCoxOut,file="MultiCox.txt",sep="\t",quote=F,row.names=F)
#输出风险结果,需要用到前面的基因表达矩阵,高低风险分组信息
TrainRiskOut =cbind(trainGeneExp,riskTrain))
TrainRiskOut=cbind(ID=rownames(TrainRiskOut),TrainRiskOut)
write.table(TrainRiskOut,file="TrainRisk.txt",sep="\t",quote=F,row.names=F)
Test1rainRiskOut =cbind(test1GeneExp,riskTest1))
Test1rainRiskOut=cbind(ID=rownames(Test1RiskOut),Test1RiskOut)
write.table(Test1RiskOut,file="Test1Risk.txt",sep="\t",quote=F,row.names=F)
Test2rainRiskOut =cbind(test2GeneExp,riskTest2))
Test2rainRiskOut=cbind(ID=rownames(Test2RiskOut),Test2RiskOut)
write.table(Test2RiskOut,file="Test2Risk.txt",sep="\t",quote=F,row.names=F)

#如果结果已经满足了,就退出循环了
break

}

可视化部分之后更新,本教程到这里就结束啦,欢迎大家关注支持~误入BioInfor的大黄鸭,回复“TCGACox”获取完整版的代码

相关文章

网友评论

    本文标题:TCGA Cox模型-训练集、内部验证集、外部验证集综合构建Co

    本文链接:https://www.haomeiwen.com/subject/hneazltx.html