def test_simu_hawkes_multi_time_func(self): """...Test that hawkes multi works correctly with HawkesKernelTimeFunc """ run_time = 100 t_values1 = np.array([0, 1, 1.5], dtype=float) y_values1 = np.array([0, .2, 0], dtype=float) tf1 = TimeFunction([t_values1, y_values1], inter_mode=TimeFunction.InterConstRight, dt=0.1) kernel1 = HawkesKernelTimeFunc(tf1) t_values2 = np.array([0, 2, 2.5], dtype=float) y_values2 = np.array([0, .6, 0], dtype=float) tf2 = TimeFunction([t_values2, y_values2], inter_mode=TimeFunction.InterConstRight, dt=0.1) kernel2 = HawkesKernelTimeFunc(tf2) baseline = np.array([0.1, 0.3]) hawkes = SimuHawkes(baseline=baseline, end_time=run_time, verbose=False, seed=2334) hawkes.set_kernel(0, 0, kernel1) hawkes.set_kernel(0, 1, kernel1) hawkes.set_kernel(1, 0, kernel2) hawkes.set_kernel(1, 1, kernel2) hawkes_multi = SimuHawkesMulti(hawkes, n_simulations=5, n_threads=4) hawkes_multi.simulate()
def setUp(self): np.random.seed(28374) self.kernels = np.array([ [HawkesKernel0(), HawkesKernelExp(0.1, 3)], [HawkesKernelPowerLaw(0.2, 4, 2), HawkesKernelSumExp([0.1, 0.4], [3, 4])] ]) t_values = np.linspace(0, 10, 10) y_values = np.maximum(0.5 + np.sin(t_values), 0) self.time_func_kernel = HawkesKernelTimeFunc(t_values=t_values, y_values=y_values) self.baseline = np.random.rand(2)
def test_simu_hawkes_no_seed(self): """...Test hawkes multi can be simulated even if no seed is given """ T1 = np.array([0, 2, 2.5], dtype=float) Y1 = np.array([0, .6, 0], dtype=float) tf = TimeFunction([T1, Y1], inter_mode=TimeFunction.InterConstRight, dt=0.1) kernel = HawkesKernelTimeFunc(tf) hawkes = SimuHawkes(baseline=[.1], end_time=100, verbose=False) hawkes.set_kernel(0, 0, kernel) multi_hawkes_1 = SimuHawkesMulti(hawkes, n_simulations=5) multi_hawkes_1.simulate() multi_hawkes_2 = SimuHawkesMulti(hawkes, n_simulations=5) multi_hawkes_2.simulate() # If no seed are given, realizations must be different self.assertNotEqual(multi_hawkes_1.timestamps[0][0][0], multi_hawkes_2.timestamps[0][0][0])
import numpy as np import matplotlib.pyplot as plt from tick.inference import HawkesEM from tick.simulation import SimuHawkes, HawkesKernelTimeFunc, HawkesKernelExp from tick.base import TimeFunction from tick.plot import plot_hawkes_kernels run_time = 30000 t_values1 = np.array([0, 1, 1.5, 2., 3.5], dtype=float) y_values1 = np.array([0, 0.2, 0, 0.1, 0.], dtype=float) tf1 = TimeFunction([t_values1, y_values1], inter_mode=TimeFunction.InterConstRight, dt=0.1) kernel1 = HawkesKernelTimeFunc(tf1) t_values2 = np.linspace(0, 4, 20) y_values2 = np.maximum(0., np.sin(t_values2) / 4) tf2 = TimeFunction([t_values2, y_values2]) kernel2 = HawkesKernelTimeFunc(tf2) baseline = np.array([0.1, 0.3]) hawkes = SimuHawkes(baseline=baseline, end_time=run_time, verbose=False, seed=2334) hawkes.set_kernel(0, 0, kernel1) hawkes.set_kernel(0, 1, HawkesKernelExp(.5, .7))
import numpy as np import matplotlib.pyplot as plt from tick.simulation import HawkesKernel0, HawkesKernelExp, \ HawkesKernelPowerLaw, HawkesKernelTimeFunc kernel_0 = HawkesKernel0() kernel_exp = HawkesKernelExp(.7, 1.3) kernel_pl = HawkesKernelPowerLaw(.1, .2, 0.7) t_values = np.array([0, 1, 1.5, 1.8, 2.7]) y_values = np.array([0, .6, .34, .2, .1]) kernel_tf = HawkesKernelTimeFunc(t_values=t_values, y_values=y_values) kernels = [[kernel_0, kernel_exp], [kernel_pl, kernel_tf]] fig, ax = plt.subplots(2, 2, sharex=True, sharey=True, figsize=(10, 4)) t_values = np.linspace(0, 3, 100) for i in range(2): for j in range(2): ax[i, j].plot(t_values, kernels[i][j].get_values(t_values), label=kernels[i][j]) ax[i, j].legend() plt.show()
from tick.plot import plot_hawkes_kernels from tick.simulation import (SimuHawkes, SimuHawkesMulti, HawkesKernelExp, HawkesKernelTimeFunc, HawkesKernelPowerLaw, HawkesKernel0) from tick.inference import HawkesSumGaussians end_time = 1000 n_nodes = 2 n_realizations = 10 n_gaussians = 5 timestamps_list = [] kernel_timefunction = HawkesKernelTimeFunc( t_values=np.array([0., .7, 2.5, 3., 4.]), y_values=np.array([.3, .03, .03, .2, 0.])) kernels = [[HawkesKernelExp(.2, 2.), HawkesKernelPowerLaw(.2, .5, 1.3)], [HawkesKernel0(), kernel_timefunction]] hawkes = SimuHawkes(baseline=[.5, .2], kernels=kernels, end_time=end_time, verbose=False, seed=1039) multi = SimuHawkesMulti(hawkes, n_simulations=n_realizations) multi.simulate()
Simulation of Hawkes processes with usage of custom kernels """ import matplotlib.pyplot as plt import numpy as np from tick.base import TimeFunction from tick.simulation import SimuHawkes, HawkesKernelExp, HawkesKernelTimeFunc from tick.plot import plot_point_process t_values = np.array([0, 1, 1.5], dtype=float) y_values = np.array([0, .2, 0], dtype=float) tf1 = TimeFunction([t_values, y_values], inter_mode=TimeFunction.InterConstRight, dt=0.1) kernel_1 = HawkesKernelTimeFunc(tf1) t_values = np.array([0, .1, 2], dtype=float) y_values = np.array([0, .4, -0.2], dtype=float) tf2 = TimeFunction([t_values, y_values], inter_mode=TimeFunction.InterLinear, dt=0.1) kernel_2 = HawkesKernelTimeFunc(tf2) hawkes = SimuHawkes(kernels=[[kernel_1, kernel_1], [HawkesKernelExp(.07, 4), kernel_2]], baseline=[1.5, 1.5], verbose=False, seed=23983) run_time = 40