Metadata-Version: 2.4
Name: jaxidem
Version: 0.5.1
Summary: Integro-difference Equation Models for Python-JAX
Author-email: Evan Tate Paterson Hughes <etatephughes@proton.me>
License-Expression: MIT
Project-URL: Homepage, https://gitlab.com/tatephughes/JAX-IDEM
Project-URL: Issues, https://gitlab.com/tatephughes/JAX-IDEM/-/issues
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: jax>=0.5.0
Requires-Dist: jaxtyping>=0.3.0
Requires-Dist: pandas>=2.0.3
Requires-Dist: tqdm>=4.67.1
Provides-Extra: test
Requires-Dist: pytest>=8.3.5; extra == "test"
Provides-Extra: experiments
Requires-Dist: arviz>=0.23.4; extra == "experiments"
Requires-Dist: blackjax>=1.2.5; extra == "experiments"
Requires-Dist: optax>=0.2.4; extra == "experiments"
Provides-Extra: docs
Requires-Dist: quartodoc; extra == "docs"
Requires-Dist: blackjax>=1.2.5; extra == "docs"
Requires-Dist: optax>=0.2.4; extra == "docs"
Requires-Dist: plotly>=7.1.0; extra == "docs"
Requires-Dist: jupyter>=1.1.1; extra == "docs"
Requires-Dist: imageio>=2.37.0; extra == "docs"
Requires-Dist: jupyter-cache>=1.0.1; extra == "docs"
Requires-Dist: griffe<2; extra == "docs"
Requires-Dist: quarto-cli>=1.10.19; extra == "docs"
Provides-Extra: dev
Requires-Dist: pandas-stubs<3; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Dynamic: license-file

# The Model

| Process | Observations | Kernel |
|:-------:|:------------:|:------:|
| ![The latent process](https://gitlab.com/tatephughes/JAX-IDEM/-/raw/master/site/figure/spinny_process.gif) | ![Noisy observations](https://gitlab.com/tatephughes/JAX-IDEM/-/raw/master/site/figure/spinny_obs.gif) | ![Direction of flow](https://gitlab.com/tatephughes/JAX-IDEM/-/raw/master/site/figure/spinny_kernel.png) |

The Integro-Difference Equation model, sometimes abbreviated to IDE or, to avoid confusion with integrated development environments, IDEM, is a hierarchical dynamic spatio-temporal model, which can be written

![Z(s;t) = Y(s;t) + ε_t(s), Y(s;t+1) = ∫_{D_s} κ(s,r;t) Y(r;t) dr + η_t(s).](https://gitlab.com/tatephughes/JAX-IDEM/-/raw/master/site/figure/readme_model.svg)

Here, *Y*, the process, defined over the space *D*<sub>*s*</sub> and discrete time *t* = 1, …, *T* evolves dynamically with respect to discrete time, according to a weighted integral of its previous state. 
There is also a non-dynamical component *η*<sub>*t*</sub>(**s**) and measurement error/noise process for the data, *ϵ*<sub>*t*</sub>(**s**), all of which are assumed mutually independent in time.

The package is written to go along with the paper, available at arxiv [Efficient Bayesian Filtering and Inference for Integro-Difference Equation Models](https://arxiv.org/abs/2610.28170).

For further reading, you can start with the books [Statistics for Spatio-Temporal Data](https://uat.store.wiley.com/en-us/shop/general-introductory-statistics/statistics-for-spatio-temporal-data-p-9781119243069), [Spatio-Temporal Statistics with R ](https://www.taylorfrancis.com/books/mono/10.1201/9781351769723/spatio-temporal-statistics-christopher-wikle-andrew-zammit-mangion-noel-cressie), and the articles [Data-Driven Spatio-Temporal Modeling Using the Integro-Difference Equation](https://ieeexplore.ieee.org/document/4623135), [Deep integro-difference equation models for spatio-temporal forecasting](https://arxiv.org/abs/1910.13524), and [Bayesian non-parametric modeling for integro-difference equations](https://link.springer.com/article/10.1007/s11222-016-9719-1)

This project could also be understood as a re-implementation and continuation of [Andrew Zammit Mangion's `R` package `IDE`](https://github.com/andrewzm/IDE), though the hope is that the functionality and speed will surpass that implementation.


For more information, see the [gitlab pages](https://tatephughes.gitlab.io/JAX-IDEM).

# Installation

If you want to run on the GPU, be sure to install JAX with support for your GPU; check out [their installation guide](https://docs.jax.dev/en/latest/installation.html).

Install with pip:

```
pip install jaxidem
```

Or install the latest commit from git:

```
pip install git+https://gitlab.com/tatephughes/JAX-IDEM.git
```

Also available as a wheel in [releases](https://gitlab.com/tatephughes/JAX-IDEM/-/releases).

Requires Python 3.11 or later.
