RNA-seq 详细教程:假设检验和多重检验(8)
学习目标
了解模型拟合的过程
比较两种假设检验方法(Wald test vs. LRT)
了解多重测试校正的重要性
了解用于多重测试校正的不同方法
1. 模型拟合和假设检验
DESeq2
工作流程的最后一步是对每个基因进行计数并将其拟合到模型中并测试差异表达。
2. 广义线性模型
如前所述,RNA-seq
生成的计数数据表现出过度分散(方差 > 均值),用于对计数建模的统计分布需要考虑到这一点。因此,DESeq2
使用负二项分布通过以下公式对 RNA-seq
计数进行建模:
所需的两个参数是size factor和dispersion estimate。接下来使用广义线性模型 (GLM) 来拟合数据。建模是一种数学形式化的方法,用于在给定一组参数的情况下估算数据的方式。模型拟合后,将估计每个样本组的系数及其标准误差。系数是 log2
倍数变化的估计值,将用作假设检验的输入。
3. 假设检验
假设检验的第一步是为每个基因建立一个零假设。在我们的例子中,原假设是两个样本组之间没有差异表达 (LFC == 0)。然后,我们使用统计检验来根据观察到的数据确定原假设是否为真。
3.1. Wald test
在 DESeq2
中,Wald 检验是比较两组时用于假设检验的默认值。 Wald 检验是通常对已通过最大似然估计的参数执行的检验。在我们的案例中,我们正在测试每个基因模型系数 (LFC),这些系数是使用分散等参数得出的,这些参数是使用最大似然估计的。
DESeq2
通过以下方式实施 Wald 测试:
取 LFC 并将其除以标准误差,得到 z 统计量
将 z 统计量与标准正态分布进行比较,并计算 p 值,报告随机选择至少与观察值一样极端的 z 统计量的概率
如果 p 值很小,我们拒绝零假设并声明有证据反对零假设(即基因差异表达)
模型拟合和 Wald 检验先前已作为 DESeq()
函数的一部分运行:
# 以下仅作示例,上一个教程已经运行dds <- DESeqDataSetFromTximport(txi, colData = meta, design = ~ sampletype)
dds <- DESeq(dds)
3.2. 似然比检验
当比较两个以上的样本类别时,DESeq2
还提供似然比检验 (LRT) 替代假设检验。LRT
不是评估一个基因的表达在一个类别中相对于另一个类别是上调还是下调,而是识别在不同样本类别中在任何方向上表达发生变化的基因。
这与 Wald 检验相比如何?
Wald 检验(默认)仅估计每个基因一个模型并评估 LFC == 0 的原假设。
对于似然比检验,还对已通过最大似然估计的参数执行。对于这个测试,每个基因估计两个模型;将一个模型的拟合度与另一个模型的拟合度进行比较。
m1 是简化模型(即删除主要因素项的设计公式)
m2 是完整模型(即您在创建 dds
对象时提供的完整设计公式)
在这里,我们正在评估完整模型与简化模型一样适合的原假设。如果我们拒绝零假设,这表明完整模型(以及我们感兴趣的主要因素)解释了大量变异,因此该基因在不同水平上差异表达。 DESeq2
通过使用偏差分析 (ANODEV) 来比较两个模型拟合来实现 LRT。结果表明,LR 服从卡方分布,这可用于计算和关联的 p 值。
要使用 LRT
,我们使用 DESeq()
函数,但这次添加两个参数:
指定我们要使用 LRT 测试
“简化”模型
# Likelihood ratio testdds_lrt <- DESeq(dds, test="LRT", reduced = ~ 1)
由于我们的“完整”模型只有一个因素(样本类型),“简化”模型(删除该因素)在我们的设计公式中没有留下任何东西。 DESeq2
无法拟合设计公式中没有任何内容的模型,因此在没有其他协变量的情况下,截距使用语法 ~ 1 建模。
4. Multiple test correction
无论我们使用 Wald 检验还是 LRT,每个经过检验的基因都会与一个 p 值相关联。我们正是用这个结果来确定哪些基因被认为是显著差异表达的。但是,我们不能直接使用 p 值。
4.1. p-value
显著性截断值 p < 0.05 的基因意味着它有 5% 的几率是假阳性。例如,如果我们测试 20,000 个基因的差异表达,在 p < 0.05 时,我们预计会偶然发现 1,000 个基因。如果我们发现总共有 3000 个基因存在差异表达,那么大约三分之一的基因是假阳性!
由于每个 p 值都是单个测试(单个基因)的结果。我们测试的基因越多,我们的假阳性率就越大。这就是多重检验问题。
4.2. 校正
多重检验有几种常见的校正方法:
Bonferroni:调整后的 p 值计算方式为:p 值 * m(m = 测试总数)。这是一种非常保守的方法,假阴性的可能性很高,因此通常不推荐使用。
FDR/Benjamini-Hochberg: Benjamini 和 Hochberg (1995) 定义了错误发现率 (FDR) 的概念,并创建了一种算法,以在给定独立 p 值列表的情况下将预期 FDR 控制在指定水平以下。
Q-value / Storey method: 称该特征为重要时可达到的最低 FDR。例如,如果基因 X 的 q 值为 0.013,则表示 p 值至少与基因 X 一样小的基因中有 1.3% 是假阳性。
DESeq2
通过去除那些在测试前不太可能显著 DE 的基因,例如那些具有低计数和异常样本(基因级 QC)的基因,帮助减少测试的基因数量。但是,还实施了多重测试校正,以使用 Benjamini-Hochberg
程序的解释来降低错误发现率。
4.3. FDR < 0.05
通过将 FDR
截止值设置为 < 0.05,我们是说我们预期差异表达基因中的假阳性比例为 5%。例如,如果您将 500 个基因称为差异表达,FDR
截断值为 0.05,您预计其中 25 个是假阳性。
欢迎Star -> 学习目录
更多教程 -> 学习目录
本文由 mdnice 多平台发布
RNA-seq 详细教程:假设检验和多重检验(8)相关推荐
- 哈佛大学——差异表达分析(八)假设检验和多重检验校正
文章目录 学习目标 DESeq2:模型拟合和假设检验 广义线性模型(Generalized Linear Model) 假设检验 Wald 检验 似然比检验(Likelihood ratio test ...
- 如何用fiddler抓取HTTPS的详细教程(附fiddler安装教学)
对于想抓取HTTPS的测试初学者来说,常用的工具就是fiddler,可是在初学时,大家对于fiddler如何抓取HTTPS真是伤了脑筋,可能你一步步按着网上的帖子成功了,那当然是极好的,有可能没有成功 ...
- 如何自学python到做项目-如何使用python进行第一个机器学习项目(详细教程篇)...
你是否想使用python进行机器学习但却难以入门? 在这篇教程中,你将用Python完成你的第一个机器学习项目. 在以下的教程中,你将学到: 1.下载并安装Python SciPy,为Python中的 ...
- 一文掌握RNA seq,RNA seq课程大汇总
RNA测序(RNA-seq)在过往十年里逐渐成为全转录组水平分析差异基因表达和研究mRNA差异剪接必不可少的工具.RNA-seq帮助大家对RNA生物学的理解会越来越全面:从转录本在何时何地转录到RNA ...
- mysql的join语句使用_在MySQL中使用JOIN语句进行连接操作的详细教程
到目前,我们已经学习了从一个表中获取数据.这是简单的需要,但在大多数现实MySQL的使用,经常需要将数据从多个表中的一个单一的查询. 可以使用多个表中的单一SQL查询.在MySQL中联接(join)行 ...
- 服务器安装centos6 linux,CentOS6.5安装详细教程,手把手教你安装Linux操作系统(CentOS6.5)...
CentOS6.5安装详细教程 1.准备好CentOS-6.5.iso文件,并刻录到光盘中,放入光驱,重启服务器,修改BIOS为光驱启动,之后开始进入安装: 2.按任意键,进入引导菜单.按上下键,移动 ...
- shopify二次开发教程_详细教程:如何将Shopify的Storefront API与React和Redux结合使用...
shopify二次开发教程 by Chris Frewin 克里斯·弗里温(Chris Frewin) 详细教程:如何将Shopify的Storefront API与React和Redux结合使用 ( ...
- Vue Router的详细教程
Vue Router的详细教程 安装 #直接下载 / CDN https://unpkg.com/vue-router/dist/vue-router.js Unpkg.com 提供了基于 NPM 的 ...
- 服务器2003系统U盘安装方法,u盘winpe下安装windows server 2003详细教程
最近,很多用户都表示不知道如何在u盘winpe下安装windows server 2003,今天,U大侠小编就针对大家的这个困扰,给大家介绍下u盘winpe下安装windows server 2003 ...
最新文章
- as 不显示gradle视图_Python构建RESTful网络服务[Django篇:基于类视图的API]
- axure 下拉多选 元件_Axure教程:下拉多选列表集合(多选下拉列表+单选下拉列表+分级下拉列表)...
- MSF for CMMI Process Improvement项目体验: Work Items : Requirement (更新版)
- 【 FPGA 】Xilinx设计约束(XDC)中时钟约束的表示方法
- 怎么计算一组数据的波动_数据分析(一):数据描述统计
- flutter 判断字符创_Flutter 字符串与JSON相互转化
- cpu漏洞linux修复,【图片】为什么linux mint上cpu漏洞直到现在也没完全修复?_linux吧_百度贴吧...
- OpenCV Stitching 工程搭建
- N皇后问题位运算符解法【转载】
- 如何二值图转化为灰度图_AAAI 2020 | 时序转化为图用于可解释可推理异常检测
- 2.1_stack_栈
- @程序员,多写点“坏”代码吧!
- 解决Request method 'GET' not supported问题
- ZYNQ7020 FPGA 如何生成从Flash和SD卡启动的镜像文件
- CSS动画transform、transition和animation的区别
- 目前全网最详细的树莓派 Pico入门指南!
- webstorm禁用拼写检查
- 机器人视觉硬件方案设计对比
- C++学习(11)(综合题)
- 今天女神打了个电话让我去修电脑,无数次戳中笑点
热门文章
- java.lang.IllegalArgumentException介绍
- root后还能解除吗,root能不能完全解除
- dreamweaver个人网页设计作业 小米商城官网商城购物网页设计 WEB静态网页作业模板 大学生个人购物商城网页代码 dw个人网页作业
- 引入时间轴:动态图模型的共性与特征
- vue项目添加ico(已修改)
- 云服务器密码登录异常的解决办法
- Sqoop的基本使用
- libxml2 使用教程
- 神经网络与卷积神经网络,什么是卷积神经网络
- oracle通过imp导出数据库时提示:这些对象由***导出,而不是当前用户解决方法