R语言小白绘图系列|第38弹·极简ROC曲线

文摘   2024-10-09 08:03   德国  

R 语言小白绘图系列

第 38 弹|极简ROC曲线

ROC曲线简介

ROC曲线(接收器操作特征曲线)是一种用于评估分类模型性能的工具,特别是在二分类问题中。它通过绘制真正率(True Positive Rate, TPR)假正率(False Positive Rate, FPR)来展示模型在不同阈值下的表现。

关键要素:

  1. 真正率(TPR)

  • 计算公式:TPR = TP / (TP + FN)
  • 代表模型正确识别为正类的比例。
  • 假正率(FPR)

    • 计算公式:FPR = FP / (FP + TN)
    • 代表模型错误识别为正类的比例。
  • 曲线的形状

    • ROC曲线从点(0,0)到(1,1)绘制。理想的模型应尽量靠近左上角,表示高TPR和低FPR。
  • AUC(曲线下面积)

    • AUC值介于0和1之间。值越接近1,模型性能越好;值为0.5则表示模型没有区分能力。

    应用场景:

    • 医学诊断、信用风险评估、客户流失预测等。

    ROC曲线是一个直观的工具,帮助用户在多个模型中进行比较选择。

    应用实例

    今天分享的内容是分类ROC曲线,因为这种曲线所预测的结果是离散的(例如样品状态为正常还是肿瘤,患者分期为Ⅰ期、Ⅱ期、Ⅲ期还是Ⅳ期),所以称为分类ROC曲线。下图中,横坐标代表特异性,纵坐标代表敏感性;曲线下面积AUC(Area Under Curve)用来衡量预测的准确性,AUC值越接近1,预测的准确性越高。分类ROC曲线可以帮助评判通过基因表达去预测样品状态或者病人分期的准确性如何(模型性能如何)。

    源文件

    输入文件有三列信息

    id: 样品名称

    Type:预测结论(正常/肿瘤)

    TTYH3基因的表达量

    代码

    环境准备

    这段代码的目的是安装并加载pROC包,设置输入输出文件和工作目录,为后续的ROC曲线绘制做准备。以下是逐行解释:

    # 安装pROC包
    install.packages("pROC")
    • 这行代码用于安装pROC包,该包用于绘制ROC曲线、计算AUC等。
    # 加载pROC包
    library(pROC)
    • 加载pROC包,以便使用其中的函数进行ROC曲线的绘制和分析。
    # 定义输入文件、输出文件和用于ROC分析的变量
    inputFile = "input.txt"  # 输入数据文件名
    outFile = "ROC.pdf"      # 输出PDF文件名
    x = "TTYH3"              # ROC分析使用的变量
    • inputFile:定义输入数据文件的名称,这个文件应该包含生存状态和用于分析的变量。
    • outFile:定义输出的PDF文件名,将保存绘制的ROC曲线。
    • x = "TTYH3":指定用于ROC曲线分析的变量TTYH3
    # 设置工作目录
    setwd("D:\\biowolf\\bioR\\40.ROC")
    • 这行代码将当前工作目录设置为"D:\\biowolf\\bioR\\40.ROC",以便在该目录中读取输入文件和保存输出文件。

    总结

    这段代码的目的是为接下来的ROC曲线绘制做好准备。安装并加载pROC包,定义输入、输出文件以及变量TTYH3,并设置工作目录。接下来可以基于这个变量进行ROC分析并绘制曲线。

    读入文件并整理

    这段代码的目的是读取输入文件并进行初步整理,具体解释如下:

    # 读取输入文件,整理数据
    rt = read.table(inputFile, header = TRUE, sep = "\t", check.names = FALSE, row.names = 1)
    • read.table()函数用于读取制表符分隔的文件。
      • inputFile: 指定输入的文件(input.txt)。
      • header = TRUE: 表示文件的第一行是列名。
      • sep = "\t": 表示文件是以制表符(Tab)分隔的。
      • check.names = FALSE: 不对列名进行检查或修改,保留原始列名。
      • row.names = 1: 指定第一列作为行名。

    读取后,数据将被保存在rt数据框中。

    y = colnames(rt)[1]
    • 这行代码提取数据框rt的第一列的列名并存储到变量y中。colnames(rt)返回数据框的所有列名,而colnames(rt)[1]获取第一列的列名。

    总结

    这段代码的功能是从指定的文件中读取数据,并将文件的第一列列名提取出来保存到变量y中,供后续分析使用。这种操作通常是为了动态获取依赖的列名,以便进行后续的分析或绘图。

    绘制

    这段代码的目的是绘制ROC曲线,并将结果保存为PDF文件。以下是逐行解释:

    # 绘制ROC曲线
    rocobj1 = roc(rt[, y], as.vector(rt[, x]))
    • roc():该函数来自pROC包,用于计算并生成ROC曲线对象。
      • rt[, y]:这是响应变量(实际标签),即数据框rt中的第y列。y是之前通过列名动态提取的。
      • as.vector(rt[, x]):这是预测变量(预测值),即数据框rt中的第x列。x变量指定用于分析的基因(例如TTYH3),这将作为预测模型的输入。
    pdf(file = outFile, width = 5, height = 5)
    • pdf():设置PDF输出设备,将ROC曲线保存到指定的PDF文件中,文件名为outFile(即ROC.pdf),并指定PDF页面的宽度为5英寸,高度为5英寸。
    plot(rocobj1, print.auc = TRUE, col = "red")
    • plot():绘制ROC曲线。
      • rocobj1:这是之前生成的ROC曲线对象,包含了曲线的数据。
      • print.auc = TRUE:在图上显示AUC(曲线下面积,Area Under the Curve)的值。AUC是衡量模型性能的指标,越接近1表示模型越好。
      • col = "red":将ROC曲线的颜色设置为红色。
    dev.off()
    • dev.off():关闭PDF设备,保存绘制好的图形到文件ROC.pdf中。

    总结

    这段代码生成并绘制了ROC曲线,并将曲线保存为PDF文件。ROC曲线用于评估模型的分类性能,AUC值是衡量模型好坏的指标。

    本文作者:充电宝团队


    现在:


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


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


    即可直接解锁:


    《R语言小白绘图系列|第38弹·极简ROC曲线》对应资源哦~


    看到这里你还不心动吗?


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



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


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

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





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