HAWKESDEMO: Simulate and visualize a Hawkes process
(one of constant-unconditional-intensity, first-order, exponential-decay type)
Contents
Univariate process 1
Self-damping: alpha < 0
par1.mu = 0.5; par1.alpha = -0.1; par1.beta = 1;
Univariate process 2
Self-exciting: alpha > 0
par2.mu = 0.5; par2.alpha = 0.1; par2.beta = 1;
Simulated histories of univariate processes
t = 10;
h1 = simhawkes1(t,par1); h2 = simhawkes1(t,par2);
Intensity-and-event-occurrence plots
showhawkesm(1,t,h1,par1) suptitle(['Univariate Hawkes process, ' ... '\it\lambda(t) = \mu + \Sigma_{\tau_{i}<t} ' ... '\alpha exp\rm[\it-\beta(t-\tau_{i})\rm]'])
showhawkesm(1,t,h2,par2) suptitle(['Univariate Hawkes process, ' ... '\it\lambda(t) = \mu + \Sigma_{\tau_{i}<t} ' ... '\alpha exp\rm[\it-\beta(t-\tau_{i})\rm]'])
Simulated history of a bivariate process
Alas, a multivariate simulator is not yet available. (Can you find a clear recipe? Please send me the reference). We put together two previously generated univariate histories, creating a path of a 'mutually independent' bivariate process.
H = {cell2mat(h1) cell2mat(h2)};
Bivariate process
.. but plot intensities for a 'mutually dependent' one, to check that inthawkesm and showhawkesm routines work correctly. Note that one-way dependence is engineered: series-1 events affect series-2 intensity, but not vice versa.
par.mu = [par1.mu par2.mu]; par.alpha = [par1.alpha 0.0; ... 0.5 par2.alpha]; par.beta = [par1.beta 0.5; ... 0.5 par2.beta];
Intensity-and-event-occurrence plots
showhawkesm(1:2,t,H,par) suptitle(['Multivariate Hawkes process, ' ... '\it\lambda_{i}(t) = \mu_{i} + \Sigma_{j} ' ... '\Sigma_{\tau_{ji}<t} \alpha_{ij}\rm ' ... '\itexp\rm[\it-\beta_{ij}(t-\tau_{ji})\rm]'])
Example: none (Oh, the FEX code metrics..)
