绘制时间依赖AUC折线图

文摘   职场   2024-07-02 00:11   北京  

绘制时间依赖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")



测试数据展示
测试数据结构展示
sampleData函数不仅可以模拟二分类和生存资料,还可以模型竞争风险模型资料
#构建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函数可以返回画图用的所有数据
plotAUC可以同时绘制时间依赖AUC图
plotAUC(xx,conf.int=TRUE)
绘制包含可信区间的时间依赖AUC图
#绘制两条AUC折线图的差值图并显示可信区间
plotAUC(xx,which="contrasts",conf.int=TRUE)
两个时间依赖AUC折线图差值后图并有可信区间


灵活胖子的科研进步之路
医学博士,R语言及Python爱好者,科研方向为真实世界研究,生信分析与人工智能研究。
 最新文章