pypomp.core.pomp.Pomp.mif¶
- Pomp.mif(J: int, M: int, rw_sd: RWSigma, a: float, key: Array | None = None, theta: Mapping[str, int | float | number | Array] | Sequence[Mapping[str, int | float | number | Array]] | pypomp.core.parameters.PompParameters | None = None, thresh: float = 0, n_monitors: int = 0, track_time: bool = True) None[source]¶
Estimates model parameters by maximizing the marginal likelihood via the Iterated Filtering (IF2) algorithm.
The Iterated Filtering algorithm estimates maximum likelihood parameters by introducing random perturbations to the parameters and sequentially filtering them alongside the state variables. Over successive iterations (cooling cycles), the perturbation variance is decayed, allowing the parameters to converge to their MLEs.
This implementation leverages JAX to efficiently vectorize the algorithm across multiple initial parameter sets simultaneously. Results are automatically stored in the model’s history and can be accessed using self.results().
- Parameters:
J (int) – The number of particles.
M (int) – Number of algorithm iterations.
rw_sd (RWSigma) – Random walk sigma object.
a (float) – Decay factor for RWSigma over 50 iterations.
key (jax.Array, optional) – The random key for reproducibility. Defaults to self.fresh_key.
theta (ThetaInput, optional) – Parameters involved in the POMP model. Defaults to self.theta. Accepts: - A single dictionary: dict[str, Numeric] - A list of dictionaries: list[dict[str, Numeric]] - An existing PompParameters object Providing a list or PompParameters object enables faster, vectorized execution across all parameter sets.
thresh (float) – Resampling threshold. Defaults to 0.
n_monitors (int) – Number of particle filter runs to average for log-likelihood estimation. Defaults to 0 (uses estimate from perturbed filter).
track_time (bool) – Boolean flag controlling whether to track the execution time.
- Returns:
None. Updates self.results_history with a PompMIFResult containing the log-likelihoods, parameter traces, and diagnostic information from the Iterated Filtering (IF2) run.