R语言小白绘图系列|第41弹·多时间点依赖的生存ROC曲线

文摘   2024-11-03 18:39   德国  

R 语言小白绘图系列

第 41 弹|多时间点依赖的生存ROC曲线

多时间点依赖的生存ROC曲线简介

多时间点依赖的生存ROC曲线(time-dependent ROC curve)是一种用于评估生存模型预测性能的关键工具。它通过在不同时间节点上计算敏感性和特异性,展示了模型在各时间点对结局事件的预测能力。相较于传统的ROC曲线,此方法能够捕捉到生存数据的动态特性,有助于揭示模型在不同随访期的准确度和稳定性。多时间点依赖的生存ROC曲线广泛应用于生物医学研究,尤其是在癌症预后、心血管风险预测等领域,提供了对模型性能更为全面的评估。

应用实例

下图是一个多时间点依赖的生存ROC曲线,图中横坐标代表假阳性率,纵坐标代表真阳性率;曲线下面积AUC用来衡量预测的准确性,AUC值越接近1,预测的准确性越高。图中有三条曲线,代表同一变量的三个不同时间点(见图例),可以看出:绿色曲线的AUC最大,红色曲线的AUC最小;即可得出,通过该变量预测患者的1年生存率准确性最高,预测3年生存率其准确性最低。

图 多时间点依赖的生存ROC曲线

源文件

图 输入的源文件示例

输入文件包含

id: 样品名称

futime:生存时间

fustat:生存状态

score:风险评分(或基因表达量)

代码

环境准备

这段代码的目的是安装并加载survivalsurvminertimeROC三个R包,设置输入输出文件和工作目录,为多时间点的ROC曲线分析做准备。以下是逐行解释:

逐行解释:

# 安装必要的R包
install.packages("survival")
install.packages("survminer")
install.packages("timeROC")
  • 这三行代码分别用于安装survivalsurvminertimeROC包:
    • survival:用于生存分析,处理生存时间和状态。
    • survminer:用于生存分析结果的可视化,特别是生存曲线的绘制。
    • timeROC:用于生成时间依赖的ROC曲线,以评估不同时间点上的模型性能。
# 加载已安装的R包
library(survival)
library(survminer)
library(timeROC)
  • 这三行代码加载了survivalsurvminertimeROC包,以便在接下来的分析中使用这些包中的函数。
# 设置输入文件、输出文件和变量名
inputFile = "input.txt"  # 定义输入数据文件
outFile = "ROC.pdf"      # 定义输出文件名,保存ROC曲线
var = "score"            # 指定用于分析的变量,称为“score”
  • inputFile:设置输入数据文件的名称为input.txt,这个文件将包含用于生存分析的数据。
  • outFile:设置输出文件名为ROC.pdf,最终绘制的ROC曲线将保存为这个PDF文件。
  • var = "score":指定用于分析的变量为"score",将用于生成时间依赖的ROC曲线。
# 设置工作目录
setwd("D:\\biowolf\\bioR\\43.multiTimeROC")
  • setwd():设置当前工作目录为D:\\biowolf\\bioR\\43.multiTimeROC,所有文件的读取和保存都将在这个目录下进行。

总结

这段代码的主要作用是安装和加载survivalsurvminertimeROC包,设置输入输出文件以及工作目录,为后续基于score变量的多时间点ROC分析做准备。通过这些设置,接下来可以根据指定的变量绘制不同时间点的ROC曲线,并保存到PDF文件中。

读取输入文件

这段代码的目的是从指定的文件 input.txt 中读取数据,并将其存储在数据框 rt 中。以下是逐行解释:

# 读取输入数据文件
rt = read.table(inputFile, header = TRUE, sep = "\t", check.names = FALSE)

参数解释:

  1. inputFile:指向你之前定义的输入文件(即 input.txt)。

  • 该文件包含生存时间(如futime)、生存状态(如fustat)以及你需要进行时间依赖ROC分析的变量(如score)。
  • header = TRUE

    • 表示文件的第一行是列名。R会将第一行解析为列名,而不是数据的一部分。
  • sep = "\t"

    • 指定文件中的列是以制表符(Tab)分隔的。如果输入文件是制表符分隔的文本文件,使用这个参数可以正确解析数据。
  • check.names = FALSE

    • 不自动修改列名。默认情况下,R会自动修改列名中包含非法字符的部分,但设置为 FALSE 后,列名将保持原样。

    总结

    这段代码通过read.table()函数从input.txt中读取数据,并存储到数据框rt中。你可以在后续分析中对rt进行操作,生成时间依赖的ROC曲线。

    绘制

    这段代码的目的是绘制基于生存数据的多时间点ROC曲线(1年、2年、3年)并显示各时间点的AUC值。以下是逐行解释:

    # 计算时间依赖的ROC曲线
    ROC_rt = timeROC(T = rt$futime, delta = rt$fustat,
                     marker = rt[, var], cause = 1,
                     weighting = 'aalen',
                     times = c(123), ROC = TRUE)
    • T = rt$futimefutime表示生存时间,将其作为时间变量。
    • delta = rt$fustatfustat表示生存状态,1表示事件发生(如死亡),0表示事件未发生。
    • marker = rt[, var]var是指定的用于计算ROC的变量(如"score"),表示预测变量。
    • cause = 1:指定感兴趣的事件是1(通常表示死亡)。
    • weighting = 'aalen':使用Aalen加权法进行时间依赖ROC计算。
    • times = c(1, 2, 3):指定多个时间点,分别计算1年、2年、3年的ROC曲线。
    • ROC = TRUE:生成ROC曲线对象。
    # 打开PDF设备,开始保存绘图
    pdf(file = outFile, width = 5, height = 5)
    • pdf():设置PDF输出,将生成的ROC曲线图保存为指定的文件outFile(即 ROC.pdf),宽度为5英寸,高度为5英寸。
    # 绘制不同时间点的ROC曲线
    plot(ROC_rt, time = 1, col = 'green', title = FALSE, lwd = 2)  # 1年
    plot(ROC_rt, time = 2, col = 'blue', add = TRUE, title = FALSE, lwd = 2)  # 2年
    plot(ROC_rt, time = 3, col = 'red', add = TRUE, title = FALSE, lwd = 2)  # 3年
    • plot(ROC_rt, time = 1, ...):绘制1年的ROC曲线,线条颜色为绿色。
    • plot(ROC_rt, time = 2, ..., add = TRUE):在同一图上添加2年的ROC曲线,线条颜色为蓝色。
    • plot(ROC_rt, time = 3, ..., add = TRUE):在同一图上再添加3年的ROC曲线,线条颜色为红色。
    • lwd = 2:设置线条宽度为2。
    # 添加图例,显示各时间点的AUC
    legend('bottomright',
           c(paste0('AUC at 1 year: ', sprintf("%.03f", ROC_rt$AUC[1])),
             paste0('AUC at 2 years: ', sprintf("%.03f", ROC_rt$AUC[2])),
             paste0('AUC at 3 years: ', sprintf("%.03f", ROC_rt$AUC[3]))),
           col = c("green"'blue''red'), lwd = 2, bty = 'n')
    • legend():在图的右下角添加图例。
      • 'bottomright':指定图例显示的位置为右下角。
      • paste0('AUC at 1 year: ', sprintf("%.03f", ROC_rt$AUC[1])):显示1年时的AUC值,保留三位小数。类似地,ROC_rt$AUC[2]ROC_rt$AUC[3] 分别是2年和3年的AUC值。
      • col = c("green", 'blue', 'red'):分别为1年、2年和3年的曲线指定颜色。
      • lwd = 2:设置图例线条的宽度。
      • bty = 'n':去除图例的边框。
    # 关闭PDF设备,保存绘图
    dev.off()
    • **dev.off()**:关闭PDF设备,完成文件的保存。绘制的ROC曲线已保存为指定的PDF文件。

    总结

    这段代码使用时间依赖的ROC分析,绘制了1年、2年、3年的ROC曲线,并显示每个时间点的AUC值。绘制结果保存为ROC.pdf文件,且在图例中显示各时间点的AUC。

    图 多时间点依赖的生存ROC曲线

    本文作者:充电宝团队


    现在:


    长按扫码关注:科研生信充电宝


    10元赞赏本文,即喜欢作者~


    即可直接解锁:


    《R语言小白绘图系列|第41弹·多时间点依赖性的生存ROC曲线》对应资源哦~


    看到这里你还不心动吗?


    赶紧关注、转发、点赞、分享,领取你的专属福利吧~



    好啦,以上就是今天推文的全部内容啦!


    版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本公众号不拥有所有权,也不承担相关法律责任。

    如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:kysxcdb@163.com 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。



    科研生信充电宝
    介绍科研;介绍统计;介绍生信;
     最新文章