Skip to content

priors

Prior models.

ibm_adaptive(num_derivatives, output_scale=None) ¤

Construct an adaptive(/continuous-time), multiply-integrated Wiener process.

Source code in probdiffeq/solvers/strategies/components/priors.py
10
11
12
13
14
def ibm_adaptive(num_derivatives, output_scale=None):
    """Construct an adaptive(/continuous-time), multiply-integrated Wiener process."""
    output_scale = output_scale or np.ones_like(impl.prototypes.output_scale())
    discretise = impl.ssm_util.ibm_transitions(num_derivatives, output_scale)
    return discretise, num_derivatives

ibm_discretised(ts, *, num_derivatives, output_scale=None) ¤

Compute a time-discretised, multiply-integrated Wiener process.

Source code in probdiffeq/solvers/strategies/components/priors.py
17
18
19
20
21
22
23
24
25
26
27
def ibm_discretised(ts, *, num_derivatives, output_scale=None):
    """Compute a time-discretised, multiply-integrated Wiener process."""
    discretise, _ = ibm_adaptive(num_derivatives, output_scale=output_scale)
    transitions, (p, p_inv) = functools.vmap(discretise)(np.diff(ts))

    preconditioner_apply_vmap = functools.vmap(impl.ssm_util.preconditioner_apply_cond)
    conditionals = preconditioner_apply_vmap(transitions, p, p_inv)

    output_scale = np.ones_like(impl.prototypes.output_scale())
    init = impl.ssm_util.standard_normal(num_derivatives + 1, output_scale=output_scale)
    return markov.MarkovSeq(init, conditionals)