pypomp.functional.panel_mif

pypomp.functional.panel_mif(struct: PanelPompStruct, shared_array: Array, unit_array: Array, sigmas_array: Array, sigmas_init_array: Array, M: int, cooling_fn: Callable | float, J: int, keys: Array, thresh: float = 0.0, n_monitors: int = 0, block: bool = True) tuple[Array, Array, Array, Array][source]

Estimate panel POMP parameters using Panel Iterated Filtering.

A pure functional implementation of the (Marginal) Panel Iterated Filtering (PIF/MPIF) algorithm (Bretó et al. 2020 [1]; Wheeler et al. 2025 [2]), intended for composition within custom JAX loops.

This function estimates parameters for a Panel POMP model by introducing random perturbations to the parameters and sequentially filtering them across all units. The perturbation variance is decayed according to a given cooling schedule.

Parameters:
  • struct (PanelPompStruct) – Compiled structural representation of the Panel POMP model.

  • shared_array (jax.Array) – Swarm of initial shared parameters of shape (n_reps, J, n_shared) on the natural scale.

  • unit_array (jax.Array) – Swarm of initial unit-specific parameters of shape (n_reps, J, U, n_spec) on the natural scale.

  • sigmas_array (jax.Array) – Random walk standard deviations of shape (n_params,).

  • sigmas_init_array (jax.Array) – Initial random walk standard deviations of shape (n_params,).

  • M (int) – Number of iterated filtering iterations.

  • cooling_fn (callable or float) – Cooling schedule function or constant decay factor.

  • J (int) – Number of particles.

  • keys (jax.Array) – Random keys of shape (n_reps, ...).

  • thresh (float, optional) – Resampling threshold. Defaults to 0.0.

  • n_monitors (int, optional) – Number of monitor runs to perform at each iteration. Defaults to 0.

  • block (bool, optional) – Whether to use block updates (MPIF). Defaults to True.

Returns:

  • shared_traces (jax.Array) – Shared parameter history trace of shape (n_reps, M + 1, n_shared + 1).

  • unit_traces (jax.Array) – Unit-specific parameter history trace of shape (n_reps, M + 1, U, n_spec + 1).

  • final_shared_swarm (jax.Array) – Final swarm of shared parameters of shape (n_reps, J, n_shared).

  • final_unit_swarm (jax.Array) – Final swarm of unit-specific parameters of shape (n_reps, J, U, n_spec).

Notes

To align and stack input parameter arrays into the correct canonical ordering, use pypomp.functional.align_params().

See also

pypomp.PanelPomp.mif

Object-oriented interface.

align_params

Parameter alignment utility.

References