voomWithDuplicateCorrelation | R Documentation |
limma::duplicateCorrelation()
and limma::voom()
until convergenceThis function runs limma::voom()
and
limma::duplicateCorrelation()
repeatedly until two consecutive
runs yield the same correlation value (within tol
of each other),
indicating that the iteration has converged.
voomWithDuplicateCorrelation( counts, design = NULL, plot = FALSE, block = NULL, trim = 0.15, voom.fun = voomWithOffset, dupCor.fun = limma::duplicateCorrelation, initial.correlation = 0, maxiter = 5, tol = 1e-06, verbose = TRUE, ... )
counts, design, plot, ... |
These are passed to |
block, trim |
These are passed to
|
voom.fun |
Function to use in place of |
dupCor.fun |
Function to use in place of
|
initial.correlation |
Initial correlation value to use for the
first run of |
maxiter |
Maximum number of iterations. If convergence has not been achieved after this many iterations, the final result will be returned with a warning. |
tol |
Convergence tolerance. If a run of
|
verbose |
If TRUE, give messages indicating the progress of the iteration. |
The EList object returned by the final iteration of
limma::voom()
.
It has previously been recommended in the past to run voom and duplicateCorrelation twice each, with the implication that further iterations would see diminishing returns (see https://support.bioconductor.org/p/59700/#67620). However, rather than assume two iterations is always sufficient, this function instead keeps iterating until convergence is actually observed.
Note that I am not aware of any proof that iterating to convergence is guaranteed to produce a unique solution. The optimization may well be non-convex, in which case this naive algorithm could converge to a local optimum rather than a global one. Empirically, differences between successive runs get very small after the second run, so it seems stable in practice.
# TODO: Steal from voom/dupcor examples
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.