Example #1
0
    def __init__(self,
                 kernels=None,
                 baseline=None,
                 n_nodes=None,
                 end_time=None,
                 max_jumps=None,
                 seed=None,
                 verbose=True,
                 force_simulation=False):
        SimuPointProcess.__init__(self,
                                  end_time=end_time,
                                  max_jumps=max_jumps,
                                  seed=seed,
                                  verbose=verbose)

        self.force_simulation = force_simulation
        # We keep a reference on this kernel to avoid copies
        self._kernel_0 = HawkesKernel0()

        if isinstance(kernels, list):
            kernels = np.array(kernels)

        if isinstance(baseline, list):
            baseline = np.array(baseline)

        if baseline is not None and baseline.dtype != float:
            baseline = baseline.astype(float)

        self.check_parameters_coherence(kernels, baseline, n_nodes)

        # Init _pp so we hae access to self.n_nodes
        if n_nodes is None:
            if baseline is not None:
                n_nodes = baseline.shape[0]
            else:
                n_nodes = kernels.shape[0]

        if n_nodes <= 0:
            raise ValueError("n_nodes must be positive but equals %i" %
                             n_nodes)
        self._pp = _Hawkes(n_nodes, self._pp_init_seed)

        if kernels is not None:
            if kernels.shape != (self.n_nodes, self.n_nodes):
                raise ValueError("kernels shape should be %s instead of %s" %
                                 ((self.n_nodes, self.n_nodes), kernels.shape))
            self.kernels = kernels
            self._init_kernels()
        else:
            self._init_zero_kernels()

        if baseline is not None:
            if baseline.shape != (self.n_nodes, ):
                raise ValueError("baseline shape should be %s instead of %s" %
                                 ((self.n_nodes, ), self.baseline.shape))
            self.baseline = baseline
            self._init_baseline()

        else:
            self._init_zero_baseline()
Example #2
0
 def __init__(self, intensities_functions, end_time=None, max_jumps=None,
              seed=None, verbose=True):
     SimuPointProcess.__init__(self, end_time=end_time, max_jumps=max_jumps,
                               seed=seed, verbose=verbose)
     cpp_obj_list = [intensity_function._time_function
                     for intensity_function in intensities_functions]
     self._pp = _InhomogeneousPoisson(cpp_obj_list, self._pp_init_seed)
Example #3
0
    def _simulate(self):
        """Launch simulation of the Hawkes process by thinning
        """
        if self.baseline.dtype == float and np.linalg.norm(self.baseline) == 0:
            warnings.warn("Baselines have not been set, hence this hawkes "
                          "process won't jump")

        if not self.force_simulation and self.spectral_radius() >= 1 \
                and self.max_jumps is None:
            raise ValueError("Simulation not launched as this Hawkes process "
                             "is not stable (spectral radius of %.2g). You "
                             "can use force_simulation parameter if you "
                             "really want to simulate it" %
                             self.spectral_radius())

        SimuPointProcess._simulate(self)
Example #4
0
    def __init__(self,
                 intensities,
                 end_time=None,
                 max_jumps=None,
                 verbose=True,
                 seed=None):
        SimuPointProcess.__init__(self,
                                  end_time=end_time,
                                  max_jumps=max_jumps,
                                  seed=seed,
                                  verbose=verbose)

        if intensities.__class__ == list:
            intensities = np.array(intensities, dtype=float)
        if intensities.__class__ == np.ndarray and intensities.dtype != float:
            intensities = intensities.astype(float)

        self._pp = _Poisson(intensities, self._pp_init_seed)
Example #5
0
    def __init__(self,
                 kernels=None,
                 baseline=None,
                 n_nodes=None,
                 end_time=None,
                 period_length=None,
                 max_jumps=None,
                 seed=None,
                 verbose=True,
                 force_simulation=False):
        SimuPointProcess.__init__(self,
                                  end_time=end_time,
                                  max_jumps=max_jumps,
                                  seed=seed,
                                  verbose=verbose)

        self.force_simulation = force_simulation
        # We keep a reference on this kernel to avoid copies
        self._kernel_0 = HawkesKernel0()
        self.period_length = period_length

        if isinstance(kernels, list):
            kernels = np.array(kernels)

        if isinstance(baseline, list):
            baseline = np.asarray(baseline)

        if baseline is not None:
            if baseline.dtype not in [float, object]:
                baseline = baseline.astype(float)

        self.check_parameters_coherence(kernels, baseline, n_nodes)

        # Init _pp so we have access to self.n_nodes
        if n_nodes is None:
            if baseline is not None:
                n_nodes = baseline.shape[0]
            else:
                n_nodes = kernels.shape[0]

        if n_nodes <= 0:
            raise ValueError("n_nodes must be positive but equals %i" %
                             n_nodes)
        self._pp = _Hawkes(n_nodes, self._pp_init_seed)

        if kernels is not None:
            if kernels.shape != (self.n_nodes, self.n_nodes):
                raise ValueError("kernels shape should be %s instead of %s" %
                                 ((self.n_nodes, self.n_nodes), kernels.shape))
            self.kernels = kernels
            self._init_kernels()
        else:
            self._init_zero_kernels()

        if baseline is not None:
            if baseline.shape[0] != self.n_nodes:
                raise ValueError(
                    "baseline length should be {} instead of {}".format(
                        self.n_nodes, baseline.shape[0]))
            if len(baseline.shape) > 2:
                raise ValueError("baseline should have at most {} dimensions, "
                                 "it currently has".format(
                                     2, len(baseline.shape)))
            self.baseline = baseline
            self._init_baseline()

        else:
            self._init_zero_baseline()