pypomp.panel.panel.PanelPomp.mif¶
- PanelPomp.mif(J: int, M: int, rw_sd: RWSigma, a: float, key: Array | None = None, theta: PanelParameters | dict[str, DataFrame | None] | list[dict[str, DataFrame | None]] | None = None, thresh: float = 0, n_monitors: int = 0, block: bool = True, vmap_chunk_size: int | None = None) None¶
Estimate parameters using the Panel Iterated Filtering (PIF) algorithm for PanelPomp.
- Parameters:
J (int) – Number of particles per unit.
M (int) – Number of iterations (cooling cycles).
rw_sd (RWSigma) – Random walk standard deviations for parameter perturbations.
a (float) – Cooling factor (perturbation variance reduction per unit time).
key (jax.Array, optional) – JAX random key. If None, uses self.fresh_key.
theta (PanelParameters | dict | list, optional) – Initial parameter estimates. If None, uses self.theta.
thresh (float) – Resampling threshold for the particle filter.
n_monitors (int) – Number of particle filter runs to average for log-likelihood estimation. Defaults to 0 (uses estimate from perturbed filter).
block (bool) – Whether to use block updates, i.e., Marginalized Panel Iterated Filtering (MPIF) (currently only block=True is supported).
vmap_chunk_size (int, optional) – (Experimental) If set, process units in parallel via jax.vmap in chunks of this size instead of sequentially. Shared parameters are independently perturbed per unit and averaged across units at the end of each chunk. Padding is applied if the chunk size does not evenly divide the number of units.
- Returns:
Updates self.theta with final estimates and adds result to self.results_history.
- Return type:
None