예제 #1
0
    def test_simu_hawkes_force_simulation(self):
        """...Test force_simulation parameter of SimuHawkes
        """
        diverging_kernel = [[HawkesKernelExp(2, 3)]]
        hawkes = SimuHawkes(kernels=diverging_kernel, baseline=[1],
                            verbose=False)
        hawkes.end_time = 10

        msg = '^Simulation not launched as this Hawkes process is not ' \
              'stable \(spectral radius of 2\). You can use ' \
              'force_simulation parameter if you really want to simulate it$'
        with self.assertRaisesRegex(ValueError, msg):
            hawkes.simulate()

        msg = "^This process has already be simulated until time 0.000000$"
        with self.assertWarnsRegex(UserWarning, msg):
            hawkes.end_time = 0
            hawkes.force_simulation = True
            hawkes.simulate()
예제 #2
0
    def test_hawkes_set_baseline_piecewiseconstant(self):
        """...Test Hawkes process baseline set with time and value arrays
        """
        baselines = [[1., 2., 1.5, 4.],
                     [2., 1.5, 4., 1.]]
        hawkes = SimuHawkes(baseline=baselines, period_length=3.5,
                            kernels=self.kernels, verbose=False)

        hawkes.end_time = 10
        hawkes.simulate()
        self.assertGreater(hawkes.n_total_jumps, 1)
예제 #3
0
 def test_hawkes_set_baseline_timefunction(self):
     """...Test Hawkes process baseline set with TimeFunction
     """
     t_values = [0.5, 1., 2., 3.5]
     y_values_1 = [1., 2., 1.5, 4.]
     y_values_2 = [2., 1.5, 4., 1.]
     timefunction1 = TimeFunction((t_values, y_values_1))
     timefunction2 = TimeFunction((t_values, y_values_2))
     hawkes = SimuHawkes(baseline=[timefunction1, timefunction2],
                         kernels=self.kernels, verbose=False)
     hawkes.end_time = 10
     hawkes.simulate()
     self.assertGreater(hawkes.n_total_jumps, 1)
예제 #4
0
def g2(t):
    return np.cos(np.pi * (t / 10 + 1)) + 1.1


t_values = np.linspace(0, 20, 1000)
u_values = [(0.007061, 0.001711), (0.005445, 0.003645), (0.003645, 0.005445),
            (0.001790, 0.007390)]

hawkes = SimuHawkes(baseline=[1e-5, 1e-5], seed=1093, verbose=False)
for i, j in itertools.product(range(2), repeat=2):
    u1, u2 = u_values[2 * i + j]
    y_values = g1(t_values) * u1 + g2(t_values) * u2
    kernel = HawkesKernelTimeFunc(t_values=t_values, y_values=y_values)
    hawkes.set_kernel(i, j, kernel)

hawkes.end_time = end_time
hawkes.simulate()
ticks = hawkes.timestamps

# And then perform estimation with two basis kernels
kernel_support = 20
n_basis = 2

em = HawkesBasisKernels(kernel_support,
                        n_basis=n_basis,
                        kernel_size=kernel_size,
                        C=C,
                        n_threads=4,
                        max_iter=max_iter,
                        verbose=False,
                        ode_tol=1e-5)
예제 #5
0
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()