Rao-Blackwell ACMC

class pints.RaoBlackwellACMC(x0, sigma0=None)[source]

Rao-Blackwell adaptive MCMC, as described by Algorithm 3 in [1]. After initialising mu0 and sigma0, in each iteration after initial phase (t), the following steps occur:

theta* ~ N(theta_t, lambda * sigma0)
alpha(theta_t, theta*) = min(1, p(theta*|data) / p(theta_t|data))
u ~ uniform(0, 1)
if alpha(theta_t, theta*) > u:
    theta_t+1 = theta*
else:
    theta_t+1 = theta_t
mu_t+1 = mu_t + gamma_t+1 * (theta_t+1 - mu_t)
sigma_t+1 = sigma_t + gamma_t+1 *
                (bar((theta_t+1 - mu_t)(theta_t+1 - mu_t)') - sigma_t)

where:

bar(theta_t+1) = alpha(theta_t, theta*) theta* +
                    (1 - alpha(theta_t, theta*)) theta_t

Note that we deviate from the paper in two places:

gamma_t = t^-eta
Y_t+1 ~ N(theta_t, lambda * sigma0) rather than
    Y_t+1 ~ N(theta_t, sigma0)

Extends AdaptiveCovarianceMC.

References

acceptance_rate()

Returns the current (measured) acceptance rate.

ask()

See SingleChainMCMC.ask().

eta()

Returns eta which controls the rate of adaptation decay adaptations**(-eta), where eta > 0 to ensure asymptotic ergodicity.

in_initial_phase()

See pints.MCMCSampler.in_initial_phase().

n_hyper_parameters()

See TunableMethod.n_hyper_parameters().

name()[source]

See pints.MCMCSampler.name().

needs_initial_phase()

See pints.MCMCSampler.needs_initial_phase().

needs_sensitivities()

Returns True if this methods needs sensitivities to be passed in to tell along with the evaluated logpdf.

replace(current, current_log_pdf, proposed=None)

See pints.SingleChainMCMC.replace().

set_eta(eta)

Updates eta which controls the rate of adaptation decay adaptations**(-eta), where eta > 0 to ensure asymptotic ergodicity.

set_hyper_parameters(x)

The hyper-parameter vector is [eta].

See TunableMethod.set_hyper_parameters().

set_initial_phase(initial_phase)

See pints.MCMCSampler.set_initial_phase().

set_target_acceptance_rate(rate=0.234)

Sets the target acceptance rate.

target_acceptance_rate()

Returns the target acceptance rate.

tell(fx)[source]

See pints.AdaptiveCovarianceMC.tell().