Hi Liza.
Happy to hear how the Kronecker stuff works for you--hopefully the backend work that Rob Trangucci has been doing will mean some performance gains. How big is your dataset / how many grid cells do you have when you discretize?
Some other ideas for a Cox process, none of which I've quite implemented but seem like they should work okay based on some other projects in which I've tried similar things:
- Parameterize the intensity using a radial basis function network formulation, e.g. pick a set of "landmark" points and place kernels centered at these points. For mots kernel choices you should be able to work out the necessary integral in closed form, since the intensity is parametric. The reason I think this should work is that it's pretty similar to an standard version of the Hawkes process, which I have an implementation of in Stan (see:
https://arxiv.org/abs/1611.06713) and will be cleaning up to share soon.
- Parameterize the intensity using some other set of simple basis functions (linear + quadratic?) - same idea as above in terms of working out the integral. Maybe someone out there already has a Stan implementation of this?
- Related to radial basis networks would be an inducing points approach. I know someone had inducing points in Stan but you'll have to search the list.
- Use Random Fourier Features. I've done this in other places and can share code, but not for Cox processes in Stan...
- Do something Bayesian based on my AISTATS '17 paper:
https://arxiv.org/abs/1610.08623 ; I'm not exactly sure what it'd mean to do a Bayesian version of this yet. Maybe it'd work to simply put priors on the relevant hyperparameters and learn by sampling rather than crossvalidation? If other people have thoughts, let me know.