【差异表达分析】差异表达分析标准不标准化这是一个问题(含其其它报错问题)

这篇具有很好参考价值的文章主要介绍了【差异表达分析】差异表达分析标准不标准化这是一个问题(含其其它报错问题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在一开始学习基因差异表达分析时,老师就强调用raw count做差异分析,相关文献和资料我也保存了不少,我之前弄清楚log2/cpm与count fpkm等不是在一个水平上讨论的问题,但是具体用的时候还是要栽个跟头才能印象深刻。

我在复现这篇推文时老文新看,今天来看看两个数据集的整合分析
一般情况下我自以为已经掌握一般差异分析流程,就看看把作者代码跑一边就行了,在这篇推文中作者没有给出差异分析部分代码和数据,但是后面介绍并使用了一种我很感兴趣的RRA算法,所以自己动手分别用DESeq2和limma做了差异分析,结果一动手问题就出来了,两个包的差异分析结果都表明没有显著差异表达的基因!我一开始甚至认为是是数据集的问题,但昨天恰好在讨论群里也有一位uu有相同的问题,我跟他交换了代码才发现了log2这个端倪。

uu的流程

uu用的是是GSE26728芯片数据集,我用我的流程跑一一遍他的数据,起初发现跟他结果一致,没有什么差异表达的基因,但是我的结果数值都比他大一点。查看他自己的代码,发现他在exp表达矩阵range在20以内的情况下仍然进行了log2,所以导致数据比我小(其实不是,是因为直接log2和使用limma::voom算法的不同导致的微小差异,后面会提)。

但是我同时注意到,他在使用limma包进行差异分析时直接使用了exp表达矩阵进行(这里面他的数据框格式下的表达矩阵有一个小坑)

fit=lmFit(exp1,design)
# Error in lmFit(exp1, design) : 
#   Expression object should be numeric, instead it is a data.frame with 11 non-numeric columns
# 我那里这个是DGEList voom后 EList对象
fit=eBayes(fit)
deg=topTable(fit,coef=2,number = Inf)

(小坑,他在处理数据框时里面有许多描述信息,属于字符元素,而差异分析需要numeric数值型元素,如果你不把所有字符型元素去除就会发现为了统一所有的元素类型都变成了字符型
差异分析标准化,生信那些坑,算法
但是当我将他的log2处代码注释掉后再次进行发现差异分析结果变得“正常了”,而不是预期中与我一致
差异分析标准化,生信那些坑,算法
所以我开始怀疑我的流程中存在我不知的log2或者说标准化操作

我的流程

我查看我的流程发现我在这部分先将exp表达矩阵转换成了一个DEGList对象后使用voom转换成了一个EList对象
差异分析标准化,生信那些坑,算法

一开始我以为voom函数是线性化矩阵以便后面拟合,而当我再次查看voom函数的功能时发现voom函数同样对表达矩阵进行了log2标准化处理
差异分析标准化,生信那些坑,算法

真相大白

原来我和他都犯了同一个错误,那就是重复标准化,导致差异也被缩小,换句话讲就是,我和他都使用了标准化后的数据(cpm/log2后数据常用来作图),而非rawcount进行了一般情况下的差异表达分析流程!
所以我认为,针对这个错误,有两种解决办法,一是将我们一般性流程中的标准化部分去除,如uu那样直接使用表达矩阵,而不通过limma::voom
但这种方法存在局限性:只能适用于limma包,因为limma包voom log2步骤是分开的,有操作空间,而DESeq2 result一体化

差异分析标准化,生信那些坑,算法
limma这种分布进行的特点在复现这篇推文,差异分析不是这样做的……
时也可以发现,论文作者的失误正是使用limma时,想当然地认为不对表达矩阵取log2就得到FC,实际上

limma包需要接收log2后的表达矩阵(voom/log2)
算法核心是logA-logB= log(A-B) 作者实际操作是rawcount A-B
不能想当然认为不对表达矩阵取log2就得到FC 如果要直接从rawcount入手也要是FC = B/A
如果作者就是想直接拿rawcount走到差异分析这一步,可以使用DESeq2,result后自动得到的虽然也是log2FC,手动2^即可

在实际学习的过程中,
生信菜鸟团::转录组专题的老师使用DESeq2和limma包时都使用的时rawcount,因为这个专辑涉及到上游分析的学习,limma于是就需要voom
而表达量芯片的老师偏向使用limma包处理log2后的exp矩阵,可能因为芯片的数据大多数GEO上存的都是log2后的,如果是rawcount也还是需要手动log2/voom

其它需要注意的标准化

组间差异

在进行基因差异分析前需要考虑组间差异,如通过limma::normalizeBetweenArrays去除

进行基因差异分析前通常需要考虑组间差异,因为在组间差异显著的情况下,比较基因表达水平的差异才具有生物学意义。

在使用limma包进行基因差异分析时,可以使用其中的normalizeBetweenArrays函数对不同组之间的差异进行标准化处理。该函数可以用于批次效应的去除和样本间的标准化,使得样本之间的比较更加准确和可靠。但需要注意的是,标准化只是一个预处理步骤,对于基因差异分析的结果可能会有一定的影响,因此还需要根据实验的设计和数据的质量进行合理的统计分析。

TODO

待补充

未进行组间差异处理导致的·DESeq2报错

dds2 <- DESeq(dds)
estimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
Error in estimateDispersionsFit(object, fitType = fitType, quiet = quiet) :
all gene-wise dispersion estimates are within 2 orders of magnitude
from the minimum value, and so the standard curve fitting techniques will not work.
One can instead use the gene-wise estimates as final estimates:
dds <- estimateDispersionsGeneEst(dds)
dispersions(dds) <- mcols(dds)$dispGeneEst
…then continue with testing using nbinomWaldTest or nbinomLRT

chatgpt:
这个错误提示表明在使用DESeq对dds对象进行差异分析时,估计基因的分散度时出现了问题。具体来说,这个错误通常是由于基因的分散度估计值非常相近而无法进行标准拟合所导致的。

解决这个问题的方法是使用estimateDispersionsGeneEst函数,该函数可以使用基因特定的分散度估计值来代替标准拟合。具体而言,需要按照错误提示中所示的步骤进行操作:

dds <- estimateDispersionsGeneEst(dds)
dispersions(dds) <- mcols(dds)$dispGeneEst

这将使用基因特定的分散度估计值进行差异分析,可以使用nbinomWaldTest或nbinomLRT函数进行差异分析测试。文章来源地址https://www.toymoban.com/news/detail-691270.html

到了这里,关于【差异表达分析】差异表达分析标准不标准化这是一个问题(含其其它报错问题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数学建模笔记】【第七讲】多元线性回归分析(二):虚拟变量的设置以及交互项的解释,以及基于Stata的普通回归与标准化回归分析实例

    温馨提示: 本文共有9683字,阅读并理解全文需要半小时左右 书接上文,上文谈到内生性的解决之后,我们对回归问题的探究还没有完。 比如下面这个问题: 我们说线性回归他的表达式可以是广义的,可以含有二次项,可以含有对数项,那么含有对数项的模型中的β怎么解释

    2023年04月25日
    浏览(38)
  • 标准化体系建设(上):如何建立应用标准化体系和模型?

    今天我专门来讲讲标准化这个工作。可以说这项工作是运维过程中最基础、最重要的,但也是最容易被忽视的一个环节。 我做过多次公开演讲,每次讲到这个环节,通常会有单独的一页PPT,就放四个字,字号加大加粗,重复三遍,这四个字就是“标准先行”,然后演讲过程中

    2024年02月08日
    浏览(35)
  • 深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。

    【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、

    2024年02月13日
    浏览(29)
  • python实现z-score标准化和0-1标准化

    目录 标准化处理 0-1标准化: z-score标准化: 1、用自带的函数来操作 实现z-score标准化 实现0-1标准化 2、自定义函数实现 实现z-score标准化 实现0-1标准化 对输出结果范围有要求,数据较为稳定的,不存在极端的最大最小值 数据存在异常值和较多的噪音,可以间接通过中心化避

    2024年02月11日
    浏览(31)
  • 不要再搞混标准化与归一化啦,数据标准化与数据归一化的区别!!

    数据的标准化是将数据按照一定的 数学规则进行转换 ,使得数据满足特定的标准,通常是使数据满足正态分布或标准差为1的标准。 标准化的常见方法包括 最小-最大标准化 和 Z-score标准化 。最小-最大标准化将数据映射到 [0,1 ]的范围内,最小-最大标准化将数据映射到0-1区间

    2024年01月21日
    浏览(41)
  • 数据标准化方法

    今天看到了“指数移动平均窗口标准化”,就研究了一下这是个啥东西,然后又顺便看了一下其他的数据标准化方法,这里顺便记录一下,方便以后查阅。 zscore标准化是一种 基于数据分布的标准化方法 。它的基本思想是 将数据转换为均值为0,标准差为1的分布 ,从而使得数

    2023年04月22日
    浏览(37)
  • GEE:影像标准化

    本文将介绍在Google Earth Engine (GEE)平台上进行影像标准化的公式和代码。 影像标准化是一种预处理方法,用于将不同区域、不同时间、不同传感器拍摄的影像进行比较和分析。在GEE平台上进行影像标准化,可以使用本文代码,本文以EVI为例,将影像进行了标准化处理。 其结

    2023年04月09日
    浏览(53)
  • 用UiPath实现网页抓取——表格数据提取-1-单击选择分类-ISO标准化-01-综合、术语、标准化、文献目录获取

    准备获取目录的链接是 全国标准信息公告服务平台链接: https://std.samr.gov.cn/search/iso?tid=q= 第一步,标注啊类型选择——ISO 第二步,标准化状态选择——现行 第三步,ICS分类选择——01_综合、术语标准化、文献 将数据分别复制到excel文件中,如下图。 由于国际标准分类号在

    2024年02月04日
    浏览(43)
  • python三种数据标准化

    数据变换是数据准备的重要环节,它通过 数据平滑 、 数据聚集 、 数据概化 和 规范化 等方式将数据转换成适用于数据挖掘的形式。常见的变换方法: 1.数据平滑:去除数据中的噪声,将连续数据离散化。这里可以采用分箱、聚类和回归的方式进行数据平滑 2.数据聚集:对

    2024年02月07日
    浏览(38)
  • 标准化归一化方法

    分别是0-1标准化(Max-Min Normalization)和Z-Score标准化。 1.1 0-1标准化方法 每一列中的 元素减去当前列的最小值 , 再除以该列的极差 。 不过在深度学习领域,我们更希望输入模型的数据是Zero-Centered Data,此时 Z-Score标准化会更加合适。 1.2 Z-Score标准化 Z-Score标准化并不会将数据

    2023年04月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包