def test_hawkes_mean_intensity(self): """...Test that Hawkes obtained mean intensity is consistent """ hawkes = SimuHawkes(kernels=self.kernels, baseline=self.baseline, seed=308, end_time=300, verbose=False) self.assertLess(hawkes.spectral_radius(), 1) hawkes.track_intensity(0.01) hawkes.simulate() mean_intensity = hawkes.mean_intensity() for i in range(hawkes.n_nodes): self.assertAlmostEqual(np.mean(hawkes.tracked_intensity[i]), mean_intensity[i], delta=0.3)
def test_hawkes_negative_intensity(self): """...Test simulation with negative kernel """ run_time = 40 hawkes = SimuHawkes(n_nodes=1, end_time=run_time, verbose=False, seed=1398) kernel = HawkesKernelExp(-1.3, .8) hawkes.set_kernel(0, 0, kernel) hawkes.set_baseline(0, 0.3) hawkes.threshold_negative_intensity() dt = 0.1 hawkes.track_intensity(dt) hawkes.simulate() self.assertAlmostEqual(hawkes.tracked_intensity[0].min(), 0) self.assertAlmostEqual(hawkes.tracked_intensity[0].max(), hawkes.baseline[0]) self.assertGreater(hawkes.n_total_jumps, 1)
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 dt = 0.01 hawkes.track_intensity(dt) hawkes.end_time = run_time hawkes.simulate() fig, ax = plt.subplots(hawkes.n_nodes, 1, figsize=(14, 8)) plot_point_process(hawkes, t_max=20, ax=ax) plt.show()