Closed trouleau closed 4 years ago
I don't see anything straight forward.
Few suggestions:
max_jumps
) ? model.get_history()['objective']
.integration_support
or penalization is not adapted to the dataset.Hope it helps ! Pinging @achab, the author of this algorithm
Thanks for pinging me @Mbompr ! Hello @trouleau, we met a few years ago in Zürich !
@Mbompr, your suggestions all make sense, I would go for the last one. The estimation is pretty sensible to integration_support
and this support should include the information you'd like to estimate, but shouldn't be too high.
When integration_support
is too high, you include a lot of noise in your estimation, which increases the variance of the estimator (this is encoded in the second part of condition 4) of Theorem 3, in this article). The integration_support
is the integration support of cumulants' densities: here you simulate Hawkes processes with an exponential decay of 1. Assuming that exponential densities is close to zero for after 5 times the decay, the covariance density and the skewness density should be close to zero respectively after +/- 5 times and +/- 10 times the decay. So I would rather go for integration_support = 20
. I acknowledge that this analysis is impossible to do when you don't know the kernels's supports: then you should use an integration_support
that roughly corresponds to the characteristic time scale of your system.
Plus, the theorem proves the consistency of the estimator, not the uniform convergence, so the maximum estimation error is too mean for that one.
Hope it helps !
Hello all,
Thanks a lot for your suggestion. I'll tune the integration_support
.
@achab, I do remember we met a few years ago. Excellent paper and great lib by the way! :)
Hello,
I tried simulating long realizations of a multivariate Hawkes process with
SimuHawkesExpKernels
and learning the parameters withHawkesCumulantMatching
but the estimation is not consistent (model.adjacency
even have small negative values)., as can be seen in the small toy example below.with output:
The code was run with
tick==0.6.0.0
andtensorflow==1.15.0
.Is there a problem with this toy example?
Thank you!