tick.hawkes.
SimuHawkesExpKernels
(adjacency, decays, baseline=None, end_time=None, period_length=None, max_jumps=None, seed=None, verbose=True, force_simulation=False)[source]¶Hawkes process with exponential kernels simulation
They are defined by the intensity:
where
D is the number of nodes
μi(t) are the baseline intensities
ϕij are the kernels
dNj are the processes differentiates
and with an exponential parametrisation of the kernels
where αij is the intensity of the kernel and βij its decay. The matrix of all α is called adjacency matrix.
baseline : np.ndarray
or list
The baseline of all intensities, also noted μ(t). It might be three different types:
np.ndarray
, shape=(n_nodes,) : One baseline per node is given. Hence baseline is assumed to be constant, ie. μi(t)=μi
np.ndarray
, shape=(n_nodes, n_intervals) :n_intervals
baselines are given per node. This assumes parameterperiod_length
is also given. In this case baseline is piecewise constant on intervals of sizeperiod_length / n_intervals
and periodic.
list
oftick.base.TimeFunction
, shape=(n_nodes,) : One function is given per node, ie. μi(t) is explicitely given.
adjacency : np.ndarray
, shape=(n_nodes, n_nodes)
Intensities of exponential kernels, also named αij
decays : float
or np.ndarray
, shape=(n_nodes, n_nodes)
Decays of exponential kernels, also named βij If a
float
is given, all decays are equal to this float
end_time : float
, default=None
Time until which this point process will be simulated
max_jumps : int
, default=None
Simulation will stop if this number of jumps in reached
seed : int
, default = None
The seed of the random sampling. If it is None then a random seed (different at each run) will be chosen.
force_simulation : bool
, default = False
If force is not set to True, simulation won’t be run if the matrix of the L1 norm of kernels has a spectral radius greater or equal to 1 as it would be unstable
timestamps : list
of np.ndarray
, size=n_nodes
A list of n_nodes timestamps arrays, each array containing the timestamps of all the jumps for this node
simulation_time : float
Time until which this point process has been simulated
n_total_jumps : int
Total number of jumps simulated
tracked_intensity : list[np.ndarray]
, size=n_nodes
A record of the intensity with which this point process has been simulated. Note: you must call track_intensity before simulation to record it
intensity_tracked_times : np.ndarray
The times at which intensity has been recorded. Note: you must call track_intensity before simulation to record it
intensity_track_step : float
Step with which the intensity has been recorded
__init__
(adjacency, decays, baseline=None, end_time=None, period_length=None, max_jumps=None, seed=None, verbose=True, force_simulation=False)[source]¶Initialize self. See help(type(self)) for accurate signature.
adjust_spectral_radius
(spectral_radius)[source]¶Adjust the spectral radius of the matrix of l1 norm of Hawkes kernels.
spectral_radius : float
The targeted spectral radius
get_baseline_values
(i, t_values)¶Outputs value of baseline depending on time
i : int
Selected dimension
t_values : np.ndarray
Values baseline will be computed at
output : np.ndarray
Value of baseline
i
att_values
is_intensity_tracked
()¶Is intensity tracked thanks to track_intensity or not
mean_intensity
()¶Compute the mean intensity vector
reset
()¶Reset the process, so that is is ready for a brand new simulation
simulate
()¶Launch the simulation of data
spectral_radius
()¶Compute the spectral radius of the matrix of l1 norm of Hawkes kernels.
Notes
If the spectral radius is greater that 1, the hawkes process is not stable
threshold_negative_intensity
(allow=True)¶Threshold intensity to 0 if it becomes negative. This allows simulation with negative kernels
allow : bool
Flag to allow negative intensity thresholding
track_intensity
(intensity_track_step=-1)¶Activate the tracking of the intensity
intensity_track_step : float
If positive then the step the intensity vector is recorded every, otherwise, it is deactivated.
Notes
This method must be called before simulation