Block coordinate ascent for iterative model refinement.
Source:R/refinement.R
block_coordinate_ascent.RdGeneric framework for post-convergence refinement of fitted models.
Repeatedly applies a block update (step_fn) to a fitted model,
monitoring ELBO for convergence and stability. Both CS refinement
(run_refine) and residual variance estimation (mvsusieR)
are instances of block coordinate ascent over different parameter blocks.
Arguments
- model
Fitted model (e.g., from
susie_workhorseormvsusie_workhorse).- data
Data object passed to
step_fn.- step_fn
A function with signature
function(model, data, iter)that performs one block coordinate update. Must return a named list with elements:- model
(required) The updated model.
- data
(optional) Updated data object, e.g. after changing residual variance. If
NULL, the data is unchanged.- converged
(optional) Logical; if
TRUE, stop iterating.- log_msg
(optional) Character string appended to verbose output.
- max_iter
Maximum number of block ascent iterations (default 100).
- tol
Convergence tolerance for relative ELBO change (default 1e-3).
- verbose
If
TRUE, print progress each iteration (defaultFALSE).