Skip to content

Plan for next features #55

@JoseKling

Description

@JoseKling

What I have

Models

Each with the methods: simulate, estimate, intensity, rescale. If I understood correctly, these correspond to Base.rand, StatsAPI.fit, intensity and time_change in PointProcesses.jl, respectively.

  • Homogeneous Poisson
  • Standard Hawkes processes
  • Renewal models
  • Two-stage model
  • Additive inhomogeneous Poisson
    $$\lambda(t; \mu, \gamma) = \mu + \gamma f(t), ~f ~\text{some fixed function} $$
  • Multiplicative inhomogeneous Poisson
    $$\lambda(t; \mu, \gamma) = \mu e^{\gamma f(t)}$$
  • Inhomogeneous Hawkes
    $$\lambda(t; \mu, \gamma, \alpha, \beta) = \mu + \gamma f(t) + \sum_{t_i < t} \alpha e^{-\beta(t - t_i)},~ t_i ~ \text{are the events}$$

Statsitics

  • KS distance exponential - ecdf of re-scaled interarrivals X cdf of exponential distribution
  • KS distance uniform - ecdf of re-scaled events X cdf of uniform distribution
  • $L^2$ distance Laplace - empirical Laplace transform of re-scaled interarrivals X Laplace transform of exponential distribution

Goodness-of-fit tests

Immediate next steps

  1. Implement the Standard Hawkes process
  2. Implement the KS distance exponential statistic
  3. Implement the Bootstrap-based goodnessof-fit test

Then, having all this well structured and working properly, it should be straightforward to add the other stuff.

Step 1

I will create a src/hawkes folder. For now, there will be no abstract type, just a concrete type Hawkes.

Step 2

The way I did it is to have an abstract Statistic type, with different singleton types KSExponential, KSUniform, LPExponential for the method statistic to dispatch on (can be seen here).

For the file structure. Create a abstract_statistic.jl file in src defining the AbstractStatistic type and a folder src/statistics with the concrete types and corresponding methods?

Step 3

Could use the same design as above, with a AbstractGoFTest type (or something like this) and concrete types Bootstrap, Standard, Subsampling. Maybe it makes more sense then having three different functions, like I did here

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions