Hi there,
I am trying to use limma for some rna seq data and model subjects as a random effect as I have paired samples. I have already done analysis in DESeq2 and got 400 (up and down) significant DGEs. When repeating in limma I only get 19 DGEs. I'm not sure where I am going wrong in limma - my code is below
counts <- DGE(counts)
condition <- factor(designTable$condition, levels=c("normal","tumour"))
design <- model.matrix(~ condition)
voom <- voom(counts, design)
dup <- duplicateCorrelation(voom, design, block=designTable$subjects)
voom <- voom(counts,design, block=designTable$subjects, correlation = dup$consensus)
dup <- duplicateCorrelation(voom, design, block=designTable$subjects)
fit <- lmFit(voom,design, block=designTable$subjects, correlation = dup$consensus)
fit <- eBayes(fit,robust =T)
summary(decideTests(fit))
(Intercept) conditiontumour
Down 3439 4
NotSig 3161 18940
Up 12359 15
I don't understand how they are so different, any help would be great
Hi, yes sorry I used the function DGEList(). I changed it to how you suggested but I am still confused as limma's results show no DEGs for tumour vs normal, am I going wrong somewhere? My code is below
limma generally gives stricter FDR control than does DESeq2 because the DESeq test doesn't take into account uncertainty in estimating the dispersion parameter. So it is perfectly possible to get a moderate number of DE genes from DESeq2 and none from limma. That doesn't indicate any error.
It is very surprising however that you also have no baseline differences between the subjects either. If this is human data, then I have never seen a dataset with no baseline differences between human subjects. This would suggest there is something unusual about your dataset.
There is no rule that says you need to use FDR < 0.05. You could obviously use FDR < 0.1 if you wanted to see more results.
Generally speaking, if you don't get DE results when you think you should, the next step is to troubleshoot the quality of your data with diagnostic plots. Changing the statistical test in hope of getting a different result isn't usually the right approach.