timeROC
<h1>背景</h1><p>绘制不同拟合模型的time-dependent AUC。</p>
<p><img src="https://tcapi.voiceclouds.cn:8444/uploads/2025/12/07/miv3sp734pakbv04kqv.png" alt="" /></p>
<p>出自PMID: 29741566文章</p>
<h1>应用场景</h1>
<p>绘制不同拟合模型的timeROC曲线。</p>
<h1>环境设置</h1>
<p>使用国内镜像安装包</p>
<pre><code class="language-r">options("repos"= c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
install.packages("timeROC")
</code></pre>
<p>加载包</p>
<pre><code class="language-{r}">library(timeROC)
library(survival)
Sys.setenv(LANGUAGE = "en") #显示英文报错信息
options(stringsAsFactors = FALSE) #禁止chr转成factor
</code></pre>
<h1>输入文件</h1>
<p>比普通的ROC的输入多了一列时间变量time</p>
<pre><code class="language-{r}">tr <- read.csv("easy_input.csv", row.names = 1)
head(tr)
#查看数据集的例数和变量数
dim(tr)
</code></pre>
<h1>开始计算</h1>
<p>根据需要拟合不同的模型,此处的三个拟合模型分别为:</p>
<ul>
<li>指标a、age、sex构建的模型1</li>
<li>指标b、age、sex构建的模型2</li>
<li>以及指标c、age、sex构建的模型3</li>
</ul>
<p>以ROC.a为例,使用的函数为timeROC。</p>
<ul>
<li>T,数据集中的时间变量</li>
<li>delta,数据集中的结局变量(该函数要求删失数据的赋值一定设置为0)</li>
<li>marker为主要研究变量</li>
<li>other_markers为其他校正的协变量</li>
<li>cause为结局事件对应的赋值</li>
<li>weighting为计算权重的方式,可以设置为marginal(采用KM方法),也可以设置为cox(采用Cox方法)</li>
<li>times为计算AUC的时间点,根据实际需求设置</li>
<li>iid的默认设置为FALSE,如果后续需要使用AUC的置信区间,则设置为TRUE,如果不需要的话,则可不进行设置。本例中可以不进行设置。</li>
</ul>
<pre><code class="language-{r}">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)
</code></pre>
<h1>开始画图</h1>
<p>分别绘制三个模型对应的timeROC曲线,采用的函数为plotAUCcurve。</p>
<ul>
<li>该函数的第一部分为前面模型输出的结果;</li>
<li>第二部分conf.int指图中是否绘制置信区间,若为FALSE,则不添加置信区间,若为TRUE,则绘制相应置信区间线;</li>
<li>第三部分为线条的颜色设置,除第一条曲线外,后面的都需添加add=TRUE,以保证全部的曲线绘制在一张图上。</li>
</ul>
<pre><code class="language-{r}">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()
</code></pre>
<p><img src="https://tcapi.voiceclouds.cn:8444/uploads/2025/12/07/miv41c0q9cy2jq9v93g.png" alt="" /></p>
<p>文中所用数据可以关注公众号“生信喵实验柴”<br />
<img src="https://tcapi.voiceclouds.cn:8444/uploads/2025/09/07/mf9nu72s90ofyseu9hl.png" alt="" /><br />
发送关键词“20250512”获取</p>
页:
[1]