Blocking factor in limma/voom vs. variancePartition/dream analysis.
2
2
Entering edit mode
Ben ▴ 50
@ben-17772
Last seen 4 months ago
United States

This is a question which came up recently regarding the RNA-Seq in limma/voom, and limma/voom using the variancePartition function dream().

When following the workflow outlined in this document (dream: Differential expression testing with linear mixed models for repeated measures) we can see at the beginning a limma/voom analysis resulting in an object called vobj. This object was created by passing the DGEList object twice through the voom function, once before and once after the execution of duplicateCorrelation. The blocking factor is not provided within the design formula in both cases.

This is different to the later described dream workflow. Here, blocking (duplicateCorrelation) is performed as it is in the limma workflow (blocking variable not part of design formula), but when the dream function is executed, the blocking variable is part of the design formula. Can someone briefly explain why?

A factor defining individual patient/subject effects, which are "blocked" first, seem to be provided again as random effects in the dream function...

Thanks much!

limma voom variancePartition dream • 2.2k views
ADD COMMENT
2
Entering edit mode
@gabrielhoffman-8391
Last seen 10 weeks ago
United States

Hi Ben, Thanks for your comment. Both limma and dream analysis include two steps: 1) estimate weights, 2) fit regression model using these weights. The limma/voom workflow uses voom() and then lmFit(). The dream package focuses on replacing lmFit() with dream() in order to model random effects, also knowing as blocking. So the current version of the package leaves the first step exactly as it is for the limma/voom workflow. I have found this to be a good enough approximation.

But I agree it is not ideal, and can be a little confusing.

I am currently developing a new first step function: voomWithDreamWeights() that I think will behave liked you expected here. I will get back to you in about a week about testing this new function out.

Cheers, - Gabriel

ADD COMMENT
0
Entering edit mode

Thanks for the clarification! That's very helpful. So I will continue using the workflow as described in the vignette by using voom > duplicateCorreltion > voom > dream, and providing the blocking factor as a random effect within dream.

Thanks much!

ADD REPLY
0
Entering edit mode
@gabrielhoffman-8391
Last seen 10 weeks ago
United States

Hi Ben, I wanted to get back to you about your earlier questions. The new version 1.14.1 implements voomWithDreamWeights() so you can specify random effects in the calculation of the precision weights

  • Gabriel
ADD COMMENT

Login before adding your answer.

Traffic: 641 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

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

Powered by the version 2.3.6