我的矩阵按以下方式设计,我将其命名为mat1:
Probes sample1 sample1 sample2 sample2 sample3 sample3 sample4 sample4
rep1 rep2 rep1 rep2 rep1 rep2 rep1 rep2
------------------------------------------------------------------------
gene1 5.098 5.076 5.072 4.677 7.450 7.456 8.564 8.555
gene2 8.906 8.903 6.700 6.653 6.749 6.754 7.546 7.540
gene3 7.409 7.398 5.392 5.432 6.715 6.724 5.345 5.330
gene4 4.876 4.869 5.864 5.981 4.280 4.290 4.267 4.255
gene4 3.567 3.560 3.554 3.425 8.500 8.564 6.345 6.330
gene5 2.569 2.560 8.600 8.645 5.225 5.234 7.345 7.333
我使用limma包来找到DEG的
Group <- factor(c("p1", "p1", "p2", "p2","p3", "p4","p4")
design <- model.matrix(~0 + Group)
colnames(design) <- gsub("Group","", colnames(design))
fit <- lmFit(mat1[,1:4],design)
contrast.matrix<-makeContrasts(p1-p2,levels=design)
fit2<-contrasts.fit(fit,contrast.matrix)
fit2<-eBayes(fit2)
sel.diif<-p.adjust(fit2$F.p.value,method="fdr")<0.05
deg<-mat1[,1:4][sel.diif,]
因此,“deg”只会给我那些在样本1和2中具有重要意义的基因。我感兴趣的是那些只在第一个样本中差异表达但在第二个样本中没有表达的基因,我不确定这是否是正确的方法。
或者我应该尝试这样的事情:
contrast.matrix<-makeContrasts(contrasts="p1"-("p2"+"p3"+"p4")/3,levels=design)
我不确定如何设置对比矩阵以仅从样本1获得DEG,而不是在其他三个中获得。
答案 0 :(得分:1)
您的示例不可重现,即我无法重现结果。但是,这里有一些评论:
deg
,你是对的。它将寻找两个样本之间不同的基因。对比矩阵:
makeContrasts(contrasts="p1-(p2+p3+p4)/3", levels=design)
是我(可能)解决这个问题的方法。但是,这可能会抵消效果。例如,p2
为高且p3
为低。
或者,您可以使用以下内容:
makeContrasts(contrasts=c("p1-p2", "p1-p3", "p1-p4"), levels=design)
并查看重叠基因。