前面介绍了C-index和校准曲线对Cox回归模型的验证方法。今天将探讨利用ROC曲线来验证Cox回归模型的区分度。ROC曲线下的面积,即AUC值,范围在0至1之间。AUC值越接近1,模型的预测区分能力越强。接下来,我们将详细介绍如何使用R语言绘制ROC曲线并计算AUC值。
1、原始数据
第1列的num.为受试者编号;第2列的os_status,为生存状态,0为删失,1为死亡;第3列的os_time,为生存时间;第4列的characteristic1,是连续性变量;第5列的characteristic2,是二分类变量;第6列的characteristic3,是三分类变量。
2、安装所需要的R包
install.packages("survival")
install.packages("timeROC")
install.packages("readr")
3、加载所需要的R包
library(survival)
library(timeROC)
library(readr)
4、数据读取
data<-read_csv("C:/Users/Lenovo/Desktop/COX/data.csv")
#引号内为数据路径
5、模型构建
将拟合的Cox回归模型存储在对象f中。使用survival包的coxph函数构建一个Cox比例风险模型,使用data数据框中的os_time和os_status列来定义生存时间和状态,以及三个预测变量characteristic1、characteristic2和characteristic3。
f<-coxph(Surv(os_time,os_status)~characteristic1+characteristic2
+characteristic3,data=data)
使用predict函数计算上述Cox模型的线性预测子,并将结果添加为data数据框中的新列lp。
data$lp<-predict(f,newdata=data,type="lp")
6、ROC曲线分析
time_roc<-timeROC(
T=data$os_time,#指定观察的生存时间
delta=data$os_status,#生存结局
#由Cox模型预测得到的线性预测子分数,作为预测变量。
marker=data$lp,
cause=1,#阳性结局指标值
#采用“marginal”,这意味着在计算ROC曲线时使用KM方法来处理右删失数据。
weighting="marginal",
#定义在哪些具体时间点(如12个月和18个月)计算ROC曲线。
times=c(12,12*1.5),
ROC=TRUE,#保存sensitivities和specificties值
iid=TRUE#保存置信区间,但是样本量大了后,耗时耗资源
)
7、计算12个月的AUC及其95%CI置信区间
tweleve.months<-paste0("12months AUC (95%CI)=",
sprintf("%.3f",time_roc$AUC[1]),"(",
sprintf("%.3f",confint(time_roc,level=0.95)
$CI_AUC[1,1]/100),"-",
sprintf("%.3f",confint(time_roc,level=0.95)
$CI_AUC[1,2]/100),")")
8、计算18个月的AUC及其95%CI置信区间
eighteen.months<-paste0("18months AUC (95%CI)=",
sprintf("%.3f",time_roc$AUC[2]),"(",
sprintf("%.3f",confint(time_roc,level=0.95)
$CI_AUC[2,1]/100),"-",
sprintf("%.3f",confint(time_roc,level=0.95)
$CI_AUC[2,2]/100),")")
9、绘制ROC曲线
分别绘制12个月和18个月的ROC曲线在同一图上,使用不同的颜色标记不同的时间点。在图的右下角添加一个图例,展示两个时间点的AUC值及其置信区间。
plot(title="",time_roc,col="DodgerBlue",time=12,lty=1,lwd=2,
family="serif")#绘制ROC曲线
plot(time_roc,time=12*1.5,lty=1,lwd=2,add=TRUE,col="LightSeaGreen",
family="serif")#add=TRUE指在前一条基础上新增
legend("bottomright",c(tweleve.months, eighteen.months),
col=c("DodgerBlue","LightSeaGreen"),lty=1,lwd=2)
10、最后,可以点击"Export"可以将图片以jpg或者PDF的格式输出,"+"号图标按钮可以将图片放大。