哈佛大学——差异表达分析(九)DESeq2步骤描述

article/2025/9/21 7:35:28

文章目录

  • 学习目标
  • DESeq2差异基因表达分析流程
    • 第一步:估计大小因子
    • 第二步:估计基因离散(gene-wise dispersion)
    • 第三步:拟合曲线到基因的分散估计
    • 第四步:将基因离散估计值向曲线预测值收缩
      • MOV10 DE分析:探讨离散估计和评估模型拟合

学习目标

  1. 理解使用DESeq2差异表达分析过程中的不同步骤
  2. 探讨离散度在差异表达分析中的重要性,并利用离散度值的图来探讨NB模型的假设

DESeq2差异基因表达分析流程

之前,我们使用适当的设计公式创建了DESeq2对象,并使用两行代码运行DESeq2:

# DO NOT RUN## Create DESeq2Dataset object
dds <- DESeqDataSetFromTximport(txi, colData = meta, design = ~ sampletype)## Run analysis
dds <- DESeq(dds)

我们用DESeq2完成了差异基因表达分析的整个工作流程。分析中的步骤输出如下:
在这里插入图片描述
我们将详细查看每一个步骤,以更好地理解DESeq2是如何执行统计分析的,以及我们应该检查哪些度量来探究我们的分析质量。

第一步:估计大小因子

差异表达分析的第一步是估计大小因子,这正是我们已经对原始计数进行归一化所做的。
在这里插入图片描述
当执行差异表达分析时,DESeq2将自动估计大小因子。但是,如果你已经使用estimateSizeFactors()生成了大小因子,就像我们前面所做的那样,那么DESeq2将使用这些值。
为了归一化计数数据,DESeq2使用先前在“计数归一化”课上讨论的比值中位数方法计算每个样本的大小因子。
MOV10 DE分析:检查大小因子
让我们快速看一下每个样本的大小因子值:

## Check the size factors
sizeFactors(dds)Irrel_kd_1 Irrel_kd_2 Irrel_kd_3 1.1150371  0.9606366  0.7493552 
Mov10_kd_2 Mov10_kd_3 Mov10_oe_1 1.5634128  0.9359082  1.2257749 
Mov10_oe_2 Mov10_oe_3 1.1406863  0.6541689

这些数字应该与我们在运行函数estimateSizeFactors(dds)时最初生成的数字相同。看看每个样本的读段总数:

## Total number of raw counts per sample
colSums(counts(dds))Irrel_kd_1 Irrel_kd_2 Irrel_kd_3 31160785   26504972   20498243 
Mov10_kd_2 Mov10_kd_3 Mov10_oe_1 45300696   26745860   32062221 
Mov10_oe_2 Mov10_oe_3 30025690   17285401 

这些数字与大小因子的关系是什么?

我们看到较大的大小因子对应于序列深度较高的样本,这是有意义的,因为要生成归一化的计数,我们需要将计数除以尺寸因子。这就解释了样品间测序深度的差异。

现在看一看归一化后的总深度,使用以下代码:

## Total number of normalized counts per sample
colSums(counts(dds, normalized = TRUE))Irrel_kd_1 Irrel_kd_2 Irrel_kd_3 27945962   27591050   27354509 
Mov10_kd_2 Mov10_kd_3 Mov10_oe_1 28975519   28577441   26156696 
Mov10_oe_2 Mov10_oe_3 26322477   26423452

样本间的值如何与每个样本的总计数进行比较?
你可能期望经过归一化后,各个样本的计数是完全相同的。然而,在归一化过程中,DESeq2也解释了RNA的组成。通过使用大小因子的中位数比值,DESeq2不应该偏向于由几个DE基因吸收的大量计数;然而,这可能导致大小因子与仅仅根据测序深度预期的大小因子有很大的不同。

第二步:估计基因离散(gene-wise dispersion)

差异表达分析的下一步是对基因离散的估计。在讨论细节之前,我们应该对DESeq2中离散指的是什么有一个很好的概念。
在这里插入图片描述
在RNA-seq计数数据中,我们知道:

  1. 为了确定差异表达基因,考虑到组内(重复样本之间)的差异,我们需要识别组间平均表达显著不同的基因。
  2. 组内(重复样本之间)的变异需要考虑到方差随平均表达值增加的事实,如下图所示(每个黑点是一个基因)。

在这里插入图片描述
为了准确地识别DE基因,DESeq2需要解释方差与均值之间的关系。 我们不希望所有的DE基因都是低计数的基因,因为低表达基因的方差更低。
DESeq2没有使用方差作为数据中变异的度量衡(因为变异与基因表达水平相关),而是使用离散度(dispersion) 作为变异度量衡,它解释了基因的变异和平均表达水平。离散度的计算方法为Var = μ + α*μ^2,其中:α = dispersion, Var = variance, 和 μ = mean,有以下关系:

对离散的影响
方差增加离散增加
平均表达增加离散减少

对于具有中等到高计数值的基因,离散度的平方根将等于变异系数( \sqrtα=\frac{σ}{μ} )。因此,0.01的离散度意味着在生物重复中围绕平均数预期的10%的变异。具有相同平均数的基因的离散度估计将仅基于其方差而有所不同。因此,离散度估计(dispersion estimates)反映了给定平均值的基因表达的方差。在下面的图中,每个黑点都是一个基因,离散度与每个基因的平均表达量(组内重复)作对比。
在这里插入图片描述
离散和我们的模型有什么关系?
为了精确地建立测序计数模型,我们需要对每个基因的组内变异(同一样本组重复之间的变异)做出准确的估计。由于每组只有少量(3-6)重复,对每个基因变异的估计往往是不可靠的
为了解决这个问题,DESeq2共享基因间的信息,通过一种叫做“收缩(shrinkage)”的方法,基于基因的平均表达水平,产生更准确的变异估计。DESeq2假设具有相似表达水平的基因应该具有相似的离散度。

分别估计每个基因的离散度:
DESeq2根据基因的表达水平(组内重复的平均计数)和方差估计每个基因的离散度。

第三步:拟合曲线到基因的分散估计

工作流程的下一步是拟合曲线到基因分散估计。拟合数据曲线背后的想法是,不同的基因会有不同程度的生物变异,但是,在所有的基因中,会有一个合理的分散估计分布。
在这里插入图片描述
下图中这条曲线以红线表示,它绘制了给定表达强度基因的预期离散的估计值。每个黑点都是一个基因,具有相关的平均表达水平和离散度的最大似然估计(MLE)(步骤1)。
在这里插入图片描述

第四步:将基因离散估计值向曲线预测值收缩

工作流程的下一步是将基因离散估计值向曲线预测值收缩。
在这里插入图片描述
当样本量较小时,曲线可以更准确地识别差异表达的基因,每个基因的收缩强度取决于:

  • 基因的离散度距离红色曲线的距离
  • 样本量(样本量越大,则收缩的越少)

这种收缩方法对于减少差异表达分析中的假阳性尤其重要。 具有低离散度估计数的基因向曲线收缩,并且更精确、更大的收缩值被输出用于模型拟合和差异表达检验。这些缩小后的估计值代表了组内的变异,需要确定是否组间的基因表达有显著差异。
稍微高于曲线的离散估计也向曲线收缩,以便更好地估计离散;然而,具有极高离散值的基因则不收缩。这是由于该基因可能没有遵循建模假设,并且由于生物学或技术原因比其他基因具有更高的变异性[1]。向曲线方向收缩估计值可能会导致假阳性,所以这些值不会被收缩。这些基因被下面的蓝色圆圈所包围。
在这里插入图片描述
这是一个很好的绘图,可以确保你的数据很好的拟合DESeq2模型。你希望你的数据通常散布在曲线周围,随着平均表达水平的增加,离散度逐渐减小。如果你看到一片云(cloud)或不同的形状,那么你可能想要更深入探索你的数据,看看你是否有污染(线粒体等)或离群样本。请注意,对于任何低自由度的实验,在plotdispest()图中整个平均值范围的收缩程度。
令人不安的离散曲线(worrisome dispersion plots) 的例子如下:
下面的图显示了分散值的云,它们通常不遵循曲线。这将令人担忧,并表明数据与模型不符。
在这里插入图片描述
下一张图显示,离散度值先减小,然后随着表达值的增大而增大。根据我们的预期,较大的平均表达式值不应该有较大的离散度——我们希望离散度随着均值的增加而减少。这表明高表达基因的变异比预期的要少。这也表明在我们的分析中可能存在一个离群样本或污染。
在这里插入图片描述

MOV10 DE分析:探讨离散估计和评估模型拟合

让我们来看看我们的MOV10数据的离散估计:

## Plot dispersion estimates
plotDispEsts(dds)

在这里插入图片描述
由于我们的样本量较小,对于许多基因我们看到了相当大的收缩。你认为我们的数据能很好地拟合这个模型吗?
我们看到随着平均表达的增加离散度很好地降低了,这很好。我们还可以看到离散估计通常围绕曲线,这也是预期的。总的来说,这个图看起来不错。我们确实看到了强烈的收缩,这可能是由于我们的一个样本组只有两个重复的事实。我们拥有的重复越多,应用于离散估计的收缩就越少,可以识别的DE基因就越多。为了更好地估计变异,我们一般建议每个条件至少有4个生物重复。


Exercise

Given the dispersion plot below, would you have any concerns regarding the fit of your data to the model?

  • If not, what aspects of the plot makes you feel confident about your data?
  • If so, what are your concerns? What would you do to address them?

在这里插入图片描述


Answer

# Ans: Yes, there are some concerns. The data does not scatter around the fitted curve, and the distribution of normalized counts are restricted in a small range. I would double check QC of my samples to make sure that there are no contamination or outliers.


http://chatgpt.dhexx.cn/article/7DEZQTMu.shtml

相关文章

数学建模之层次分析法(AHP)

层次分析法&#xff08;Analytic Hierarchy Process&#xff09; AHP是对一些较为复杂的&#xff0c;较为模糊的问题作出决策的简易方法&#xff0c;它特别适用于那些难以完全定量分析的问题。由美国运筹学家T.L.Saaty教授于上世纪70年代初期提出。 目录 层次分析法&#xff0…

时序分析-季节因素

目录 1时序分析的基础 1.1 简介 1.2 分类 2 分析套路 3 主流时序分析模型 3.1移动平均 3.2 指数平滑法 3.3 组合模型 3.4 ARIMA 4 研究细分领域 4.1 异常值检测 4.2 季节序列分析 4.1 同期平均法 4.1.1 简单季节指数法 4.1.2 趋势季节指数法 4.2 长期趋势剔除法…

html5播放器的示例代码

本次的分享是一个基于HTML5标签实现的一个自定义视频播放器。其中实现了播放暂停、进度拖拽、音量控制及全屏等功能。 效果预览 核心思路 我相信一定会有些没有接触过制作自定义播放器的童鞋对于 标签的认识会停留在此。 <video controls"controls" autoplay"…

HTML5音乐播放器

明月浩空-HTML5浮窗音乐播放器研发于2014年&#xff0c;并持续更新至今 是基于QQ音乐、酷狗音乐、网易云音乐等歌曲ID全自动解析的网页音乐播放器 依靠服务器强大的接口功能&#xff0c;只需要一个ID既可获取全部信息 同时播放器主体会跟随专辑图片主色值自动变色&#xff0c;歌…

h5的开源播放器组件

哈喽&#xff0c;大家好&#xff0c;今天我要给大家推荐一个非常棒的看片神器&#xff0c;那就是【moovie】.它是一款专注于电影的HTML5 播放器。 先展示一下效果&#xff0c;测试了一下&#xff0c;支持倍速播放、快捷键操作、字幕偏移即时调整&#xff0c;还有一些参数展示&a…

H5播放器使用方法。

1.使用webkit-playsinline playsinline 在iOS微信webview中视频不会弹出来&#xff0c;直接播放。 <video id"test_video" class"test_video" webkit-playsinline playsinlinesrc"http://res.imtt.qq.com/qqbrowser/js/advideo.mp4"control…

H5,Audio音乐播放器(移动版)

有些时候&#xff0c;总是感觉自己进步的没有以前快了。于是就怀疑自己是不是也被时间磨灭了&#xff0c;这可真是一件不幸的事儿。可能是自己会的东西太少了&#xff0c;总是有种莫名的危机感。 前一段时间&#xff0c;想写一个移动版音乐播放器&#xff0c;于是就开始利用下班…

H5 video 播放器demo

H5 video 播放器demo 前言 最近在做一个wap端的项目&#xff0c;需要视频播放功能。大家也知道wap对flash支持很差&#xff0c;所以优先考虑使用h5播放器video,在这里我介绍用video实现视频播放方法。之后在介绍几个插件和第三方视频实现方法。 H5 video 因为video样式是原…

SkeyeWebPlayer.js H5播放器开发之播放器video动态创建(三)

SkeyeWebPlayer.js H5播放器是由成都视开信息科技开发和维护的一个完善的RTSP、FLV、HLS等多种流媒体协议播放&#xff0c;视频编码支持H.264&#xff0c;H.265&#xff0c;音频支持AAC&#xff0c;支持TCP/UDP协议&#xff0c;是一套极佳的且适合用于综合安防视频云服务播放组…

H5音乐播放器(包含源码与示例)

H5音乐播放器&#xff08;包含源码与示例&#xff09; 基于Angularionic的H5音乐播放器&#xff0c;源码&#xff1a;https://gitee.com/CrimsonHu/h5-music-player 示例地址 建议使用原版chrome或edge访问&#xff1a;http://intelyes.club:5300/ 功能 实时歌词显示支持歌…

基于H5+js开发一款音乐播放器

前言&#xff1a;当下音乐播放器不胜其数&#xff0c;为了更好的掌握一些东西&#xff0c;我们来自己制作一个音乐播放器。 文章目录&#xff1a; 一.开发环境&#xff1a;二.页面视图&#xff1a;1.主文件入口&#xff08;首页&#xff09;&#xff1a;2.音乐播放界面&#…

H5纯原生播放器 【学习video】

这是一个纯原生的H5播放器&#xff0c;尽管网上有很多第三方库&#xff0c;但是基础打的牢固&#xff0c;一定会帮你走的更远。 大厂也非常重视基础&#xff0c;再说了那些第三方库也是基础一点点搭起来的&#xff0c;所以有兴趣学习的同学可以下载来学习。 代码中的细节我都…

MuiPlayer - 一款优秀的 H5 视频播放器框架

Mui Player Gitee | Docs | 中文文档 介绍 MuiPlayer 是一款 HTML5 视频播放插件&#xff0c;其默认配置了精美可操作的的播放控件&#xff0c;涉及了常用的播放场景&#xff0c;例如全屏播放、播放快进、循环播放、音量调节、视频解码等功能。 支持 mp4、m3u8、flv 等多…

[h5]一个基于HTML5实现的视频播放器代码详解

什么是 HTML5&#xff1f; HTML5 是最新的 HTML 标准。 HTML5 是专门为承载丰富的 web 内容而设计的&#xff0c;并且无需额外插件。 HTML5 拥有新的语义、图形以及多媒体元素。 HTML5 提供的新元素和新的 API 简化了 web 应用程序的搭建。 HTML5 是跨平台的&#xff0c;被…

一个牛逼的开源 H5 视频播放器

【公众号回复 “1024”&#xff0c;免费领取程序员赚钱实操经验】 大家好&#xff0c;我是章鱼猫。今天给大家分享的这个开源项目&#xff0c;对于前端开发者来讲非常非常的有用。因为它是一个 H5 的视频播放器。 字节跳动出品&#xff0c;必属精品啊&#xff01;尤其是我感觉在…

H5移动端页面使用DPlayer视频播放器

背景&#xff1a; 如果使用原生video标签&#xff0c;那在不同类型手机浏览器上样式都不一样&#xff0c;而且播放表现不一样&#xff0c;比如使用css隐藏播放按钮在PC端有效&#xff0c;在手机端就无效&#xff0c;故我们选择引入第三方成熟的播放器。 需求&#xff1a; 1、自…

13款用于Web的流行HTML5视频播放器

​​​​​​当视频流媒体席卷通信世界&#xff0c;为了保持和提升用户增长&#xff0c;内容创造者和流媒体服务提供者需要提供高质量的用户体验。而想要实现这一点&#xff0c;他们都需要在自己的网站上内嵌HTML5视频播放器。 在本文中&#xff0c;我们将来了解一下现在市面上…

分位数回归的实现方法

目录 分位数回归简介实现方法参考文献 分位数回归简介 简介参照可参照参考文献【1】。如下图&#xff0c;散点图代表我们所需分析数据&#xff0c;若用简单的参数方程拟合&#xff0c;即只利用期望值&#xff0c;会损失很多数据特征。因此分位数回归就可以乘风破浪了。 分位数…

分位数回归(Quantile Regression)代码解析

实验代码 本文采用python sklearn库中&#xff0c;作为quantile regression的示例代码。以下为详细解析&#xff1a; import numpy as np import matplotlib.pyplot as pltfrom sklearn.ensemble import GradientBoostingRegressor %matplotlib inline np.random.seed(1) #设…

python中的分位数回归(初探)

分位数回归 参考文献 Python statsmodels 介绍 - 树懒学堂 (shulanxt.com) Quantile Regression - IBM Documentation https://www.cnblogs.com/TMesh/p/11737368.html 传统的线性回归模型 其的求解方式是一个最小二乘法&#xff0c;保证观测值与你的被估值的差的平方和应…