分享一个绘制带置信区间的ROC曲线的代码模板

效果图如: library(timeROC)library(survival)ROC.DSST=timeROC(T=time,        delta=status        ,marker=test.score,        cause=1,weighting="marginal",        times=c(12,12*3,1...

效果图如:

attachments-2019-02-cP5e057q5c6a19f7b95d0.png

library(timeROC)
library(survival)
ROC.DSST=timeROC(T=time,
        delta=status
        ,marker=test.score,
        cause=1,weighting="marginal",
        times=c(12,12*3,12*5,12*10),
        iid=TRUE)
plot(c(0,1),c(0,1),type='l',xlab='False positive rate',ylab='Ture positive rate')
for(i in 1:length(ROC.DSST$times)){
  los=lowess(ROC.DSST$FP[,i], y=ROC.DSST$TP[,i], f = 1/3, iter = 100)
  los$x=c(0,los$x,1)
  los$y=c(0,los$y,1)
  lines(los,col=rainbow(length(ROC.DSST$times))[i],lwd = 2)
}
if(max(ROC.DSST$times)<20){
  lb='Years'
}else if(max(ROC.DSST$times)<365){
  lb='months'
}else{
  lb='days'
}
legend('bottomright',paste0(ROC.DSST$times
                            ,'-',lb
                            ,' '
                            #,' AUC='
                            ,round(ROC.DSST$AUC,2)
                            ,' '
                            ,paste0(round(confint(ROC.DSST,level = 0.9)$CI_AUC[,1],2),'-',
                                    round(confint(ROC.DSST,level = 0.9)$CI_AUC[,2],2))
                            )
       ,col = rainbow(length(ROC.DSST$times))
       ,lty = rep(1,length(ROC.DSST$times)),lwd=rep(1,length(ROC.DSST$times))
       ,merge = TRUE,cex = 0.8
       ,title = paste0(paste0(rep(' ',ceiling(strwidth(paste0(ROC.DSST$times[1]
                                                            ,'-',lb
                                                            ,' '))/strwidth(' '))),collapse = ''),'AUC 95%CI'))

进一步获取p值的函数为:compare



  • 发表于 2019-02-18 10:38
  • 阅读 ( 8881 )
  • 分类:编程语言

2 条评论

请先 登录 后评论
不写代码的码农
祝让飞

生物信息工程师

118 篇文章

作家榜 »

  1. 祝让飞 118 文章
  2. 柚子 91 文章
  3. 刘永鑫 64 文章
  4. admin 57 文章
  5. 生信分析流 55 文章
  6. SXR 44 文章
  7. 张海伦 31 文章
  8. 爽儿 25 文章