多个ROC曲线绘制(受试者工作特征曲线)

ROC曲线纵坐标为真阳性率(TPR灵敏度),横坐标为假阳性率(1-特异度FPR)。关于真阳性率,假阳性率等的概念这里不做赘述。曲线越靠近左上角,越有诊断价值,ROC曲线下面积越大,越有应用价值。

横坐标:1-Specificity,伪正类率(False positive rate, FPR),预测为正但实际为负的样本占所有负例样本的比例;

纵坐标:Sensitivity,真正类率(True positive rate, TPR),预测为正且实际为正的样本占所有正例样本的比例。

在作图过程中可能出现需要多个不同时间的ROC曲线,比如1年,3年,5年该如何绘制ROC曲线在一张图上呢!

install.packages("survivalROC")

library(survivalROC)

require(ggsci)

library("scales")

pal_nejm("default")(8)

show_col(pal_nejm("default")(8))

rt=read.table("lassoRisk.txt",header=T,sep="\t",check.names=F,row.names=1)    #??ȡlasso?ع??????ļ?

pdf(file="ROC.pdf",width=6,height=6)

par(oma=c(0.5,1,0,1),font.lab=1.5,font.axis=1.5)

roc=survivalROC(Stime=rt$futime, status=rt$fustat, marker = rt$riskScore,

      predict.time =5, method="KM")

plot(roc$FP, roc$TP, type="l", xlim=c(0,1), ylim=c(0,1),col='#BC3C29FF',

  xlab="False positive rate", ylab="True positive rate",

  main=paste("ROC curve"),

  lwd = 2, cex.main=1.3, cex.lab=1.2, cex.axis=1.2, font=1.2)

roc1=survivalROC(Stime=rt$futime, status=rt$fustat, marker = rt$riskScore,

                predict.time =3, method="KM")

lines(roc1$FP, roc1$TP, type="l",col="#0072B5FF",xlim=c(0,1), ylim=c(0,1))

roc2=survivalROC(Stime=rt$futime, status=rt$fustat, marker = rt$riskScore,

                predict.time =1, method="KM")

lines(roc2$FP, roc2$TP, type="l",col="#EE4C97FF",xlim=c(0,1), ylim=c(0,1))

legend(0.6,0.2,c(paste("AUC of 5 year = ",round(roc$AUC,3)),

                paste("AUC of 3 year = ",round(roc1$AUC,3)),

                paste("AUC of 1 year = ",round(roc2$AUC,3))),

      x.intersp=1, y.intersp=0.8,

      lty= 1 ,lwd= 2,col=c("#BC3C29FF","#0072B5FF","#EE4C97FF"),

      bty = "n",# bty框的类型

      seg.len=1,cex=0.8)#

abline(0,1,col="gray",lty=2)

dev.off()



生信小白:如果有疑问可以加群或者联系我,随时愿意解答。

Weixin: xuningbo6926

邮箱:nbxu1206@gmail.com

生信分析交流群:1098119483

qq生信分析交流群二维码:见下图,加入群聊,有最新代码及课程资料(生信自学网,生信技能树)更新!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容