零基础入门转录组数据分析——单基因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分析的所有过程,如果有什么需要补充或不懂的地方,大家可以私聊我或者在下方评论。

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

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

请添加图片描述


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/412390.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在忘记密码或 ID 的情况下解锁 iPhone 15

您是否曾经因为忘记了 iPhone 密码而陷入困境&#xff0c;或者您是否多次错误地输入了屏幕时间密码并发现自己被锁定在 iPhone 之外&#xff1f; 被锁定和拒绝访问您的 iPhone 可能很常见&#xff0c;尤其是在您尚未配置 Face ID 的情况下。或者&#xff0c;如果 Face ID 无法正…

在head的style标签中直接添加css样式

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>内嵌样式示例</title> &l…

无人机校企合作:组装、维修、研发全面提升学生技能方好就业

无人机校企合作在组装、维修、研发等方面全面提升学生技能&#xff0c;进而促进学生就业&#xff0c;是一个具有前瞻性和实践性的教育模式。以下是对该合作模式的详细分析&#xff1a; 一、合作背景与意义 随着无人机技术的快速发展和广泛应用&#xff0c;市场对无人机专业人…

用Python在PDF文档中创建动作

PDF格式因其跨平台兼容性和丰富的功能集而成为许多行业中的首选文件格式。其中&#xff0c;PDF中的动作&#xff08;Action&#xff09; 功能尤为突出&#xff0c;它允许开发者嵌入交互式元素&#xff0c;如链接、按钮或是更复杂的脚本&#xff0c;从而显著提升文档的互动性和功…

Apache RocketMQ 中文社区全新升级丨阿里云云原生 7 月产品月报

云原生月度动态 云原生是企业数字创新的最短路径。 《阿里云云原生每月动态》&#xff0c;从趋势热点、产品新功能、服务客户、开源与开发者动态等方面&#xff0c;为企业提供数字化的路径与指南。 趋势热点 &#x1f947; 通义灵码入选 2024 世界人工智能大会最高荣誉「镇…

SprinBoot+Vue超市管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

Golang学习笔记-Golang中的锁

同步原语和锁 Golang作为一个原生支持用户态的语言&#xff0c;当提到并发进程&#xff0c;多线程的时候&#xff0c;是离不开锁的&#xff0c;锁是一种并发编程中的同步原语&#xff08;Synchronization Primitives&#xff09;&#xff0c;它能保证多个 Goroutine 在访问同一…

4. kafka消息监控客户端工具

KafkaKing官网地址 : https://github.com/Bronya0/Kafka-King github下载地址 : Releases Bronya0/Kafka-King (github.com) (windows、macos、linux版本) 云盘下载地址 : https://pan.baidu.com/s/1dzxTPYBcNjCTSsLuHc1TZw?pwd276i (仅windows版本) 连接kafka 输入本地地址…

数据分析及应用:如何对试卷得分做min-max归一化处理?

目录 0 问题描述 1 数据准备 2 问题分析 3 小结 0 问题描述 现有试卷信息表examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间): 试卷作答记录表exam_record(uid用户ID, exam_id试卷ID, start_time开始作答时…

H5手机端调起支付宝app支付

1.调起APP页面如下 步骤 1.让后端对接一下以下文档&#xff08;手机网站支付通过alipays协议唤起支付宝APP&#xff09; https://opendocs.alipay.com/open/203/107091?pathHash45006f4f&refapi 2.后端接口会返回一个form提交表单 html&#xff1a;在页面中定义一个d…

【FRP 内网穿透】

文章目录 一、什么叫内网穿透1、内网穿透技术的描述2、内网穿透技术的工作方式通常包括以下几个步骤 二、用内网穿透解决了什么问题三、常见的内网穿透解决方式1、FRP &#xff08;开源&#xff09;2、花生壳&#xff08;商业&#xff09;3、ZeroTier&#xff08;开源 商业&…

用Python绘制历史K线数据

历史K线数据是指股票或指数在特定时间段内的价格变化记录&#xff0c;通常包括开盘价、最高价、最低价、收盘价以及成交量等信息。K线图是一种常用的图形表示方法&#xff0c;用于描述股票市场的价格波动&#xff0c;它由一系列的柱状图组成&#xff0c;每个柱状图&#xff08;…

[ACP云计算]易错题(原题)

ECS 1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 16、 17、 18、 19、 20、 21、 22、 23、 24、 25、 26、 27、 28、 29、 30、 31、 32、 33、 34、 35、 36、 37、 对象存储OSS 1、 2、 3、 4、 5、 6、 重点&#xff01;&#xff01;&#xff…

本地部署一个WordPress博客结合内网穿透实现异地远程访问本地站点

文章目录 前言1. 安装WordPress2. 创建WordPress数据库3. 安装相对URL插件4. 安装内网穿透发布网站4.1 命令行方式&#xff1a;4.2. 配置wordpress公网地址 5. 配置WordPress固定公网地址 前言 本文主要介绍如何在Linux Ubuntu系统上使用WordPress搭建一个本地网站&#xff0c…

.NET Razor类库-热加载 就是运行时编译

1.新建3个项目 1.1 一个.NET Standard2.1项目 IX.Sdk.SvnCICD4NuGet 1.2 一个.NET Razor类库项目 IX.Sdk.SvnCICD4NuGet.RazorWeb 1.3 一个.NET6 Web项目 IX.Sdk.SvnCICD4NuGet.Web 这3个项目的引用关系 Web引用 Razor类库 和 .NET Standard2.1 Razor类库引用.NET Standard2.1…

[LLM][Prompt Engineering]:大语言模型上下文学习-What、How、Why?

上下文学习 上下文学习什么是上下文学习2. 示例的选择2.1 相关度排序2.2 集合多样性2.3 大语言模型 3. 示例格式3.1 人工标注3.2 利用大语言模型自动生成 4. 示例顺序5. 上下文学习为什么可以work5.1 能力来源5.2 ICL的能力 Reference 在GPT-3的论文中&#xff0c;OpenAI 研究团…

【Tomcat+MySQL+Redis源码安装三件套】

TomcatMySQLRedis源码安装三件套 Tomcat部分概念Tomcat的作用Tomcat的原理Linux运维中的应用场景具体操作示例 基本使用流程实验Tomcat安装tomcat的反向代理及负载均衡源地址hash(不能负载)tomcat负载均衡实现&#xff08;使用cookie&#xff09; memcached 操作命令 理论补充结…

注册免费的vps:infinityfree

首先是注册网址 https://dash.infinityfree.com/login 各位自行注册就好了 注册好后创建账户&#xff0c;选择最左边这个免费的就可以了 然后可以创建一个子域名&#xff0c;各位自行选择后缀和填写前面就好了 然后拉下来选择 I approve 然后创建账户 然后就可以打开控制面…

LRN正则化是什么?

LRN正则化&#xff0c;全称为Local Response Normalization&#xff08;局部响应归一化&#xff09;&#xff0c;是一种在深度学习&#xff0c;特别是在卷积神经网络&#xff08;CNN&#xff09;中常用的正则化技术。该技术旨在通过模拟生物视觉系统中的侧抑制现象&#xff0c;…

微深节能 环冷卸灰小车定位远程控制系统 格雷母线

微深节能环冷卸灰小车定位远程控制系统中的格雷母线&#xff0c;作为一种高精度位移测量系统&#xff0c;在系统中发挥着关键作用。 一、格雷母线概述 格雷母线系统主要由格雷母线、天线箱、地址解码器、地址编码器四个核心部分组成。其核心部件包括扁平状的尼龙加纤合成材质外…