关于limma包contract martix上谁比谁的问题

在进行数据分析时,limma作为一个功能十分强大的存在,而且3步(1.ImFit; 2.eBayes; 3.topTable)就能完成差异分析。但是在做差异分析的时候limma需要的有3样东西。

表达矩阵

分组矩阵

差异比较矩阵

本人就在做contract martix时过于随意,谁比谁没有搞清楚导致发生了小意外。故事发生在最近论文的复现,用到了GSE19804.

load('changedID_19804.Rdata')              #此数据是我自己进行了ID转换的表达矩阵,其他东西没有改变
library(limma)

design <- model.matrix(~0+factor(group_list))
colnames(design)=levels(factor(group_list))
rownames(design)=colnames(sf)
design

contrast.matrix<-makeContrasts(Cancer-Normal,levels = design)
contrast.matrix

fit <- lmFit(sf,design)
fit2 <- contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2)
tempOutput = topTable(fit2, coef=1, n=Inf)

library(ggpubr)
df=nrDEG
df$v= -log10(P.Value) 
ggscatter(df, x = "logFC", y = "v",size=0.5)

df$g=ifelse(df$P.Value>0.01,'stable', 
            ifelse( df$logFC >1,'up',
                    ifelse( df$logFC < -1,'down','stable') ))
table(df$g)
df$name=rownames(df)
head(df)
ggscatter(df, x = "logFC", y = "v",size=0.5,color = 'g',title = 'GSE19804_DEGs')

可以看到,制作差异比较矩阵的时候,是Cancer组比Normal,Cancer写在前面。

contrast.matrix<-makeContrasts(Cancer-Normal,levels = design)

那如果写反了呢?


up 和 down 都会反过来。连数据也部分颠倒。



也不算错得很离谱吧。。就是全部东西都颠倒了而已。如果记性好的话,还是问题不算太多。可是我就是记性不好那个。所以说还是规范起来,Cancer写左,Normal写右吧。

最后附上JM大神写的关于limma包是否需要比较矩阵的帖子https://github.com/bioconductor-china/basic/blob/master/makeContrasts.md

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。