使用limma进行两组间的差异分析

欢迎关注”生信修炼手册”!

limma这个R包可以用于分析芯片数据,也可以分析NGS测序的数据,其核心是通过线性模型去估算不同分组中基因表达量的均值和方差,从而进行差异分析。

limma也是基于raw count的定量方式,但是它并不提供归一化的算法。在官方手册中,推荐采用edgeR的TMM归一化算法。完整代码如下

1.  读取文件

读取基因在所有样本中的表达量文件,示例如下

gene_id ctrl-1 ctrl-2 ctrl-3 case-1 case-2 case-3
geneA 14  0  11  4  0  12
geneB 125 401 442 175 59 200

每一行为一个基因,每一列代表一个样本。读取数据的代码如下

# 读取表达量的表格
counts <- read.table(
  "gene.counts.tsv",
  header=T,
  sep="\t",
  row.names=1,
  comment.char="",
  check.names=F)

# 设置样本分组
group <- factor(rep(c("control", "case"), each = 3))
design <- model.matrix(~group)

# 构建edgeR中的对象
library(edgeR)
y <- DGEList(counts=count)

之所以采用edgeR来读取数据,是为了方便后续的预处理和归一化。

2. 过滤count数很低的基因

和edgeR中的预处理过程类似,根据CPM表达量对基因进行过滤,代码如下

keep <- rowSums(cpm(y)>1) >= 2
y <- y[keep, , keep.lib.sizes=FALSE]
3. 归一化

默认采用TMM归一化算法,计算每个样本的 sizefactor, 代码如下

y <- calcNormFactors(y)
4. 表达量转换

在进行差异分析前,需要对表达量进行转换,有以下两种选择

  1. logCPM

  2. voom

第一种转换就是计算logCPM值,第二种转换适用于样本间sizaFactors差异较大的情况。转换的代码如下

# logCPM
logCPM <- cpm(dge, log=TRUE, prior.count=3)
# voom
v <- voom(dge, design, plot=TRUE)
5. 差异分析

转换之后的表达量就可以进行差异分析了,代码如下

fit <- lmFit(logCPM, design)
fit <- eBayes(fit, trend=TRUE)
res<- topTable(fit, coef=ncol(design))

上述代码采用的是logCPM值,当然也可以采用voom转换后的值,当采用voom转换时,注意trend参数为FALSE。

这里只是介绍了最简单的用法,更多复杂案例,比如多个分组,时间序列的差异分析等,请参考官方文档。

·end·

—如果喜欢,快分享给你的朋友们吧—

扫描关注微信号,更多精彩内容等着你!

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Limma的基因差异分析原理基于线性模型和贝叶斯统计理论。下面是Limma进行基因差异分析的基本原理步骤: 1. 数据预处理:对原始基因表达数据进行预处理,括数据清洗、去除批次效应、标准化等操作,以保证数据的质量和可比性。 2. 建立线性模型:根据实验设计和样本条件,建立一个线性模型来描述基因表达数据。通常采用的模型是加性模型,即假设各个样本的表达值可以通过一个基础水平和若干差异项来解释。 3. 估计基因表达差异:利用线性模型,通过最小二乘法或贝叶斯方法估计每个基因的表达差异。这里的差异可以是两个条件之差异,也可以是多个条件之差异。 4. 统计检验:对于每个基因,通过统计检验来确定其表达差异是否显著。Limma使用的统计检验方法是moderated t-test,它考虑了每个基因的个体方差和样本方差,从而提高了差异表达基因的检测能力。 5. 多重假设校正:考虑到进行多个假设检验可能会产生假阳性结果,Limma使用多重假设校正方法(如Benjamini-Hochberg校正)来控制错误发现率(FDR),从而确定差异表达基因。 6. 结果解释和可视化:根据差异表达基因的统计显著性和表达模式,进行生物学解释,并通过绘制差异表达基因的热图、散点图等方式进行结果可视化。 通过这些步骤,Limma能够识别差异表达的基因,并提供统计学上的支持,帮助研究者在基因差异分析中做出可靠的结论。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值