Cox回归预测模型:模型的验证——ROC曲线

前面介绍了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的格式输出,"+"号图标按钮可以将图片放大。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值