limma::voom vs edgeR::voomLmFit - when to use?
Entering edit mode
Last seen 7 weeks ago

I am currently learning to do differential expression analysis on bulk and pseudobulk RNAseq data with limma::voom. In the function documentation it says

Note that edgeR::voomLmFit is now recommended over voom for sparse counts with a medium to high proportion of zeros.

However, edgeR::voomLmFit does not seem to be very often used by the community (yet?), is not included in the standard limma tutorials, and is not an option in the pseudo-bulk differential state analysis function of the muscat package (muscat::pbDS), which makes me a bit hesitant.

Is there a specific reason to not use voomLmFit at least if the data is sparse, if not always, instead of limma::voom + limma::lmFit? The paper and the documentation don't mention any downsides.

edgeR limma voom RNASeq muscat • 488 views
Entering edit mode
Last seen 10 hours ago
United States

The workflow you reference was written in 2018, and hasn't been updated since 2020, except for version bumps (it's meant to parallel an F1000 paper). So I wouldn't take that as an indication of how many people use the function.

I use voomLmFit all the time. I actually can't remember the last time I used the canonical voom/lmFit pipeline. In the case where you don't have many zeros, don't want to fit a gls (e.g., use duplicateCorrelation), and don't want to include sample weights, I think it's identical to the usual limma-voom pipeline.

But in cases where you do have a high proportion of zeros it more accurately estimates the residual df. And if you want to fit a gls, or you do want to include sample weights, it's analogous to doing a bunch of extra work that you won't have to do instead. Because it's no different from limma-voom in some cases, and better in others, it's easier to just default to voomLmFit.

You should also not worry if other packages are not yet using it. Both edgeR and limma are actively updated, likely at a rate that is far higher than most if not all other Bioconductor packages. The canonical limma-voom pipeline still works, and will likely continue to work far into the future, and unless something actively breaks a package it's not super likely that the maintainer will want to go back and make changes.

Entering edit mode

Reitering James' answer, there is no reason not to use voomLmFit if you were planning to follow voom by lmFit. The reason why voomLmFit isn't more widely used is because it is relatively new, because we haven't yet publicized it in a publication and because it is in the edgeR package rather than limma and therefore a bit hidden. The muscat package and the limma tutorials were all written before voomLmFit existed.


Login before adding your answer.

Traffic: 390 users visited in the last hour
Help About
Access RSS

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6