零基础入门转录组数据分析——单基因ROC分析

2024-08-30 15:52

本文主要是介绍零基础入门转录组数据分析——单基因ROC分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

零基础入门转录组数据分析——单基因ROC分析

目录

  • 零基础入门转录组数据分析——单基因ROC分析
    • 1. ROC分析的基础知识
    • 2. 单基因ROC分析(Rstudio)——代码实操
      • 2. 1 数据处理
      • 2. 2 单基因ROC分析
      • 2. 3 ROC曲线简单可视化



1. ROC分析的基础知识

1.1 ROC分析是什么?
ROC(Receiver Operating Characteristic)分析是一种用于评估判断准确性的统计方法。它通过将灵敏度和特异度结合起来,以图示的方式展示在不同临界值下,是否能正确判断阳性和阴性样本的能力。

1.2 ROC分析的基本原理?
ROC曲线是通过一系列不同的二分类方式(临界值或决定阈),计算诊断结果的真阳性率和假阳性率,以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线,用曲线下面积(AUC)作为衡量预测准确性的指标。

1.3 ROC分析的主要用途?

  • 评估诊断性能: 在生信领域,ROC分析用于评估诊断的性能。通过ROC曲线和曲线下面积(AUC),可以量化区分不同分组的准确性,帮助选择出相对重要的基因。
  • 模型评估: 在机器学习和统计建模中,ROC分析用于评估分类模型的性能。通过比较不同模型的ROC曲线和AUC值,可以选择出最优的模型。
  • 阈值选择: ROC分析可以帮助确定分类或诊断的最佳阈值。通过观察ROC曲线上的不同点,并结合实际需求(如灵敏度和特异度的平衡),可以选择出最合适的阈值。

1.4 ROC分析的优点?

  • 综合评估: ROC曲线将灵敏度和特异度结合在一起,以图示的方式展示诊断或分类方法的整体性能,便于直观理解和评估。
  • 不固定阈值: ROC分析不依赖于特定的分类阈值,而是展示了在不同阈值下的性能变化,有利于使用者根据实际需求选择合适的阈值。
  • 标准化评估: AUC值作为ROC曲线下的面积,提供了一个标准化的评估指标,便于不同测试或方法之间的比较。
  • 适用于不平衡数据集: 在正负样本不平衡的数据集中,ROC分析仍然能够提供一个相对稳定的评估结果,因为AUC值不受样本比例的影响。

举个栗子: 现在有8个样本,1个基因,每个样本对应该基因都有表达量。其中4个样本为疾病组,另外4个样本为对照组。4个疾病样本对应该基因的表达量分别为1,1.1,1.2,1.2;4个对照样本对应该基因的表达量分别为0.5,0.6,0.5,0.7这样可以明显看出疾病样本中该基因为高表达,那么用该基因的表达水平进行ROC分析,它的AUC值就是1,可以完美区分疾病样本和对照样本。

综上所述: ROC分析就是评估区分准确性的方法,不仅能评估单个变量的区分准确性,还能评估模型的区分准确性。

在本章节中仅用单个基因为例来展示如何进行ROC分析,对于模型的ROC分析不做展示

注意:ROC曲线对极端值(如极少数的极端高或低预测值)较为敏感。这些极端值可能会扭曲ROC曲线的形状,从而影响判断的准确性。



2. 单基因ROC分析(Rstudio)——代码实操

本项目以TCGA——肺腺癌为例展开分析
物种:人类(Homo sapiens)
R版本:4.2.2
R包:tidyverse, pROC

废话不多说,代码如下:

2. 1 数据处理

设置工作空间:

rm(list = ls()) # 删除工作空间中所有的对象
setwd('/XX/XX/XX') # 设置工作路径
if(!dir.exists('./19_ROC')){dir.create('./19_ROC')
} 
setwd('./19_ROC/') 

加载包:

library(pROC)
library(tidyverse)

导入要分析的表达矩阵TrainRawData,并对TrainRawData的列名进行处理(这是因为在读入的时候系统会默认把样本id中的“-”替换成“.”,所以要给替换回去

TrainRawData <- read.csv("./data_fpkm.csv", row.names = 1, check.names = F)  # 行名为全部基因名,每列为样本名
colnames(TrainRawData) <- gsub('.', '-', colnames(TrainRawData), fixed = T)

TrainRawData如下图所示,行为基因名(symbol),列为样本名
在这里插入图片描述
导入分组信息表TrainGroup

TrainGroup <- read.csv("./data_group.csv", row.names = 1) # 为每个样本的分组信息(tumor和control)
colnames(TrainGroup) <- c('sample', 'group')

TrainGroup 如下图所示,第一列sample为样本名,第二列为样本对应的分组 (分组为二分类变量:disease和control)
在这里插入图片描述
导入要用于分析的基因HubGene (1个基因,这里只用一个基因作为展示)

HubGene <- data.frame(symbol = 'VDAC1')

HubGene 如下图所示,只有一列:1个基因的基因名

在这里插入图片描述

TrainRawData中取出这1个基因对应的表达矩阵,并且与之前准备的分组信息表TrainGroup进行合并

TrainData <- TrainRawData[HubGene$symbol, ] %>% t() %>% as.data.frame()
TrainData <- merge(TrainData, TrainGroup, by.x = "row.names", by.y = 'sample')
TrainData <- column_to_rownames(TrainData, var = 'Row.names')

TrainData 如下图所示,行为样本名,第一列为基因的表达量,第二列为分组信息(这里是disease和control)。
在这里插入图片描述

2. 2 单基因ROC分析

直接通过roc函数进行单基因ROC分析

  • response = TrainData$group —— 这个参数指定了真实的目标变量或类别标签,简单说就是想要预测的分组
  • predictor = TrainData[, 1] —— 这个参数指定了要参与预测的变量,这里是TrainData的第一列,也就是前面提到的VDAC1表达量
  • levels = c(‘control’, ‘disease’) —— 这个参数指定了response变量中类别的顺序,用于ROC曲线的计算。在这里,它告诉roc函数’control’是负类(或参考类),而’disease’是正类。(注意:这个levels非常重要,设置参考类如果反了,那么相应的结果也会是反的)
roc <- roc(response = TrainData$group, predictor = TrainData[, 1],levels = c('control', 'disease'))
roc$auc

roc$auc如下图所示,表明曲线下面积(Area under the curve, AUC)为0.8867(AUC越接近于1表明预测准确性越高)。

在这里插入图片描述

2. 3 ROC曲线简单可视化

接下来一步就是要对ROC分析结果进行简单可视化,毕竟文字的展示效果不如图片更加直观。

plot(roc, main = paste0("ROC Curve for Disease Prediction of ", colnames(TrainData)[1]), # 设置主标题col = "#DD7123", # 设置曲线颜色lwd = 2,  # 线条宽度print.auc = T, # 打印AUC的值print.auc.x = 0.4, # AUC值得位置(x轴)print.auc.y = 0.5, # AUC值得位置(y轴)print.auc.pattern = 'AUC=%.3f', # AUC值得格式,表明保留三位小数print.auc.cex = 1.2,  # AUC值字体大小grid = c(0.5,0.2), # 网格线设置grid.col = "gray", # 网格线颜色xlab = "False Positive Rate (1 - Specificity)",  # x轴标签  ylab = "True Positive Rate (Sensitivity)",  # y轴标签 font.lab = 2,  # 轴标签字体样式  cex.axis = 1.2,  # 轴标签字体大小  cex.main = 1.5  # 主标题字体大小  )

ROC曲线如下图所示

  • 横坐标 —— 假阳性率(False Positive Rate, FPR),也称为1-特异性或误报率。它表示在所有实际为阴性的样本中,被错误地判断为阳性的比例。FPR的值越接近0,说明模型的误报率越低,即模型在判断为阳性的样本中,真正为阴性的样本占比越少。
  • 纵坐标 —— 真阳性率(True Positive Rate, TPR):也称为敏感度或真正率。它表示在所有实际为阳性的样本中,被正确地判断为阳性的比例。TPR的值越接近1,说明模型的敏感度越高,即模型能够准确地识别出更多的真正阳性样本。
  • 曲线位置 —— ROC曲线越靠近左上角(FPR越小,TPR越大),说明模型的预测准确率越高,这是因为左上角的点代表了最低的误报率和最高的真正率。
  • 曲线下面积(AUC) —— AUC值用于量化地表示模型的预测准确性。AUC值越高,说明模型的预测性能越好。AUC值在0.5到1之间,当AUC值等于0.5时,表示模型没有预测价值(即随机猜测);当AUC值大于0.7时,通常认为具有较高的诊断价值。

在这里插入图片描述



结语:

以上就是单基因ROC分析的所有过程,如果有什么需要补充或不懂的地方,大家可以私聊我或者在下方评论。

如果觉得本教程对你有所帮助,希望广大学习者能够花点自己的小钱支持一下(点赞旁的打赏按钮)作者创作(可以的话一杯蜜雪奶茶即可),感谢大家的支持~~~~~~ ^_^ !!!

祝大家能够开心学习,轻松学习,在学习的路上少一些坎坷~~~

请添加图片描述


  • 目录部分跳转链接:零基础入门生信数据分析——导读

这篇关于零基础入门转录组数据分析——单基因ROC分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121262

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就