背景
绘制不同拟合模型的time-dependent AUC。

出自PMID: 29741566文章
应用场景
绘制不同拟合模型的timeROC曲线。
环境设置
使用国内镜像安装包
options("repos"= c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
install.packages("timeROC")
加载包
library(timeROC)
library(survival)
Sys.setenv(LANGUAGE = "en") #显示英文报错信息
options(stringsAsFactors = FALSE) #禁止chr转成factor
输入文件
比普通的ROC的输入多了一列时间变量time
tr <- read.csv("easy_input.csv", row.names = 1)
head(tr)
#查看数据集的例数和变量数
dim(tr)
开始计算
根据需要拟合不同的模型,此处的三个拟合模型分别为:
- 指标a、age、sex构建的模型1
- 指标b、age、sex构建的模型2
- 以及指标c、age、sex构建的模型3
以ROC.a为例,使用的函数为timeROC。
- T,数据集中的时间变量
- delta,数据集中的结局变量(该函数要求删失数据的赋值一定设置为0)
- marker为主要研究变量
- other_markers为其他校正的协变量
- cause为结局事件对应的赋值
- weighting为计算权重的方式,可以设置为marginal(采用KM方法),也可以设置为cox(采用Cox方法)
- times为计算AUC的时间点,根据实际需求设置
- iid的默认设置为FALSE,如果后续需要使用AUC的置信区间,则设置为TRUE,如果不需要的话,则可不进行设置。本例中可以不进行设置。
ROC.a <- timeROC(T=tr$time,
delta=tr$status, marker=tr$a,
other_markers=as.matrix(tr[,c("age","sex")]),
cause=1,
weighting="marginal",
times=c(0,50,100,150,200,250,300,350,400),
iid=TRUE)
# ROC.b的设置与其他两个相比,marker设置不同,可以看到tr$b前后多一个负号(“-”)
# 原因在于该变量和结局事件的关系是该变量数值增大,结局事件发生率反而降低。
ROC.b <- timeROC(T= tr$time, delta= tr$status, marker=-tr$b,
other_markers=as.matrix(tr[,c("age","sex")]),
cause=1,weighting="marginal",
times=c(0,50,100,150,200,250,300,350,400),
iid=TRUE)
ROC.c <- timeROC(T=tr$time, delta=tr$status,marker=tr$c,
other_markers=as.matrix(tr[,c("age","sex")]),
cause=1,weighting="marginal",
times=c(0,50,100,150,200,250,300,350,400),
iid=TRUE)
开始画图
分别绘制三个模型对应的timeROC曲线,采用的函数为plotAUCcurve。
- 该函数的第一部分为前面模型输出的结果;
- 第二部分conf.int指图中是否绘制置信区间,若为FALSE,则不添加置信区间,若为TRUE,则绘制相应置信区间线;
- 第三部分为线条的颜色设置,除第一条曲线外,后面的都需添加add=TRUE,以保证全部的曲线绘制在一张图上。
pdf("timeROC.pdf", 6, 5)
plotAUCcurve(ROC.a, conf.int=FALSE, col="red")
plotAUCcurve(ROC.b, conf.int=FALSE, col="darkblue", add=TRUE)
plotAUCcurve(ROC.c, conf.int=FALSE, col="darkgreen", add=TRUE)
# 图例设置
legend("topright", c("A model","B model","C model"),
col=c("red","darkblue","darkgreen"),
bty='n', lty=1, lwd=2, cex=0.8)
dev.off()
