Proposal distributions

Proposal distributions#

Both Gaussian mixtures and normalizing flows can provide a fitted starting distribution for SMC. GaussianMixtureProposal implements Sequince’s proposal interface directly. Wrap a flow in FlowProposal to use the same interface, including conversion to the SMC particle backend:

import numpy as np
from sequince.proposals import FlowProposal

from sequince_density import ZukoFlow

particles = np.random.default_rng(42).normal(size=(2000, 2))
proposal = FlowProposal(
    ZukoFlow(dims=2, flow_class="MAF", hidden_features=[32, 32]),
    fit_kwargs={"n_epochs": 100, "batch_size": 500},
).fit(particles, rng=42)

For either fitted proposal type, pass proposal as log_proposal to make_standard_bayesian_smc and draw the initial particles from that same proposal. SMC then bridges from the proposal to the target posterior.

In an ASPIRE-style analysis, a flow is fitted to samples from an initial analysis and used as the starting proposal for a new SMC run with an updated likelihood.

See the Sequince documentation for the sampler and its proposal interface, and Examples for the examples repository.