仔细观察下面的两个代码:
首先是不需要差异比较矩阵的:
library(CLL)
data(sCLLex)
library(limma)
design=model.matrix(~factor(sCLLex$Disease))
fit=lmFit(sCLLex,design)
fit=eBayes(fit)
options(digits=4)
topTable(fit,coef=2,adjust='BH')
然后是需要差异比较矩阵的:
library(CLL)
data(sCLLex)
library(limma)
design=model.matrix(~0+factor(sCLLex$Disease))
colnames(design)=c('progres','stable')
fit=lmFit(sCLLex,design)
cont.matrix=makeContrasts('progres-stable',levels=design)
fit2=contrasts.fit(fit,cont.matrix)
fit2=eBayes(fit2)
options(digits=4)
topTable(fit2,adjust='BH')
两者结果是一模一样的。而差异比较矩阵的需要与否,主要看分组矩阵如何制作的!
design=model.matrix(~factor(sCLLex$Disease))
design=model.matrix(~0+factor(sCLLex$Disease))
有本质的区别!!!
前面那种方法已经把需要比较的组做出到了一列,需要比较多次,就有多少列,第一列是截距不需要考虑,第二列开始往后用coef这个参数可以把差异分析结果一个个提取出来。
而后面那种方法,仅仅是分组而已,组之间需要如何比较,需要自己再制作差异比较矩阵,通过makeContrasts函数来控制如何比较!