绘制时间依赖AUC折线图
最近有几个同学问时间依赖AUC折线图的画法。如下图
这类图最常见的用法是预测模型类文章比较新模型与既往模型之间在诊断患者生存概率上AUC值得大小,这种AUC值当然是随着时间而改变的。以下分享一种比较容易的画法,也是我经常用的画法。画图的过程中还可以同时返回一个dataframe,这个dataframe包含画图所包含的数据。
教程原文地址:https://rdrr.io/cran/riskRegression/man/autoplot.Score.html
可以从参数中看到,比较关键的一步是之前构建Score.list对象
首先构建测试数据与Score.list对象
library(survival)
library(tidyverse)
library(riskRegression)
set.seed(2022)
d=sampleData(1000,outcome="survival")
nd=sampleData(1000,outcome="survival")
#构建cox比例风险模型函数
f1=coxph(Surv(time,event)~X1+X6+X8,data=d,x=TRUE,y=TRUE)
f2=coxph(Surv(time,event)~X2+X5+X9,data=d,x=TRUE,y=TRUE)
#构建score.list对象
xx=Score(list(f1,f2), #模型列表
formula=Surv(time,event)~1,#模型生存资料方程
data=nd, #数据来源
#可以看到数据不一定来源于coxph函数,这说明Score函数可以用于模型的外部验证
metrics="auc", #计算模型的效应值参数
null.model=F,
times=seq(2:20))#计算的COX函数的时间点
Score函数在riskRegression包中比较重要,只要构建了Score对象,后续的很多分析都可以基于它,可以看到,这个函数可用的参数也比较多,上面的代码只是显示了最常用的几个。 Score函数官网用法地址:https://rdrr.io/cran/riskRegression/man/Score.html
绘制时间依赖AUC折线图
aucgraph <- plotAUC(xx)
plotAUC(xx,conf.int=TRUE)
#绘制两条AUC折线图的差值图并显示可信区间
plotAUC(xx,which="contrasts",conf.int=TRUE)