point_process 0.2.4

A crate for simulating random point processes.
Documentation

Point processes in Rust

Crates.io Status Docs License

Point processes are stochastic processes with a wide range of applications in seismology, epidemiology, or financial mathematics. They are utilized to model the arrival of random events as a function of time.

variablepoisson

This crate provides functions to simulate point processes in Rust.

Time-dependent processes

The following time-dependent point processes have been implemented:

  • Poisson point process (homogeneous and inhomogeneous, with custom function)
  • Hawkes processes (exponential kernel, see @DassiosZhao13)

The API returns the process trajectories as a vector of a struct named Events, which has the following fields: a timestamp, the current process intensity and a vector holding any children events (for processes with this property, coming soon).

Multidimensional processes

The crate provides the generalized submodule for higher-dimensional processes.

For now, only homogeneous Poisson processes have been implemented with a function

fn poisson_process(lambda: f64, domain: &T)
    where T: Measurable -> ndarray::Array<f64, Ix2>

which takes a reference to a measurable domain, that is a subset of d-dimensional space that is measurable, implemented with the Measurable trait (see API docs), and returns a 2-dimensional array which is a set of point events in d-dimensional space falling into the domain.

Examples

To run the examples, do for instance

cargo run --example variable_poisson

Some examples display a plot using gnuplot with SiegeLord's RustGnuplot.

On Windows (see issue here), cargo run is broken. You can grab a plot with:

gnuplot -p < test.gnuplot

The examples show how to use the API.