AUC面积(area under curve) 是ROC曲线下与坐标轴围成的面积,这个面积数值 ≤ 1。
由于ROC曲线一般都处于y = x这条直线的上方,所以AUC的取值范围在0.5和1之间。
AUC值是评价预测模型的重要指标,AUC越大说明模型区分度越好,也就是区分病人与非病人的能力就越强。
在logistic预测模型中,只有一个AUC值,但在cox预测模型中,AUC值是随着时间变化而变化的。
在一些文章当中也会看到预后预测模型里会看到不同时间的AUC曲线图,陈老师就今天就给大家介绍一下如何应用R语言进行不同时间点AUC折线图的绘制。
加载所需要的包
library(foreign) library(rms)library(survivalROC)
导入数据,建立cox回归模型
需要操作数据可在公众号回复"cox"获取
setwd("D:/R") #设置工作空间,需要在D盘下建一个R文件夹,后把cox数据放进去setcox<-read.spss("cox.sav", to.data.frame = T) setcox$horTh<-factor(setcox$horTh,labels = c("否","是"))setcox$menostat<-factor(setcox $menostat,labels = c("绝经前","绝经后"))ddist <- datadist(setcox)options(datadist="ddist")y<-Surv(setcox$time,setcox$cens)coxmod.step<-cph(y ~ horTh + tsize + tgrade + pnodes + progrec, data=setcox,surv = T,x=T,y=T)
通过循环语句,计算不同时间点的AUC值
result<-c("AuC","time")n<-c(365,730,1095)for(i in n){ cutoff<-i setcox$FirPro = c(1- (summary(survfit(coxmod.step,newdata=setcox),times=cutoff)$surv)) #计算不同时间点死亡率 PRoc<- survivalROC(Stime = setcox$time, status = setcox$cens, marker = setcox$FirPro, predict.time = cutoff, method = "KM") #死亡率为X用"KM"法拟合生存ROC曲线 PRoc<-data.frame(PRoc[c(4,6)]) #提取AUC值及时间 result<-rbind(result,round(PRoc,3)) #将不同次数据进行合并}
画折线图
result<-result[-1,]resultplot(result,type="b")
最后呈现的就是三个不同时间点AUC折线图
如果需要增加时间点,只要在n里多设几个时间点即可。
陈老师辛辛苦苦写完这代码以后,才发现有专门的包来绘制时间依赖的AUC值,我先研究一下,后续再分享给大家。
操作所需数据请大家在公众号后台回复“ cox ”获取
更多临床预测模型内容可关注本公众号的培训通告
培训通告
2022年,我们召集了一批富有经验的高校专业队伍,着手举行短期统计课程培训班,包括 R 语言 、meta分析、临床预测模型、真实世界临床研究、问卷与量表分析、 医学统计与SPSS 、 临床试验数据分析、 重复测量资料分析 、 结构方程模型 等9门课 。如果您有需求,不妨点击查看: