tick.hawkes.ModelHawkesExpKernLeastSq

class tick.hawkes.ModelHawkesExpKernLeastSq(decays: ndarray, approx: int = 0, n_threads: int = 1)[source]

Hawkes process model exponential kernels with fixed and given decays. It is modeled with least square loss:

\[\sum_{i=1}^{D} \left( \int_0^T \lambda_i(t)^2 dt - 2 \int_0^T \lambda_i(t) dN_i(t) \right)\]

where \(\lambda_i\) is the intensity:

\[\forall i \in [1 \dots D], \quad \lambda_i(t) = \mu_i + \sum_{j=1}^D \sum_{t_k^j < t} \phi_{ij}(t - t_k^j)\]

where

  • \(D\) is the number of nodes

  • \(\mu_i\) are the baseline intensities

  • \(\phi_{ij}\) are the kernels

  • \(t_k^j\) are the timestamps of all events of node \(j\)

and with an exponential parametrisation of the kernels

\[\phi_{ij}(t) = \alpha^{ij} \beta^{ij} \exp (- \beta^{ij} t) 1_{t > 0}\]

In our implementation we denote:

  • Integer \(D\) by the attribute n_nodes

  • Matrix \(B = (\beta_{ij})_{ij} \in \mathbb{R}^{D \times D}\) by the parameter decays. This parameter is given to the model

Parameters:

decays : float or numpy.ndarray, shape=(n_nodes, n_nodes)

Either a float giving the decay of all exponential kernels or a (n_nodes, n_nodes) numpy.ndarray giving the decays of the exponential kernels for all pairs of nodes.

approx : int, default=0 (read-only)

Level of approximation used for computing exponential functions

  • if 0: no approximation

  • if 1: a fast approximated exponential function is used

n_threads : int, default=1

Number of threads used for parallel computation.

  • if int <= 0: the number of threads available on the CPU

  • otherwise the desired number of threads

Attributes:

n_nodes : int (read-only)

Number of components, or dimension of the Hawkes model

data : list of numpy.array (read-only)

The events given to the model through fit method. Note that data given through incremental_fit is not stored