关于limma包比较矩阵制作的问题(以及是否需要比较矩阵)
在进行数据分析时,limma作为一个功能十分强大的存在,而且3步(1.ImFit; 2.eBayes; 3.topTable)就能完成差异分析。但是在做差异分析的时候limma需要的有3样东西。
表达矩阵
分组矩阵
差异比较矩阵
本人(生信技能树学徒)就在做contrasts 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写右吧。