---
title: "stelfi"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{stelfi}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
## Introduction
`stelfi` fits Hawkes and Log-Gaussian Cox Point Process models using Template Model Builder. See [the package's website](https://cmjt.github.io/stelfi/) for more details.
Introduced in Hawkes (1971) a Hawkes process is a self-exciting temporal point process where the occurrence of an event immediately increases the chance of another. We extend this to consider self-inhibiting process and a non-homogeneous background rate. A log-Gaussian Cox process is a Poisson point process where the log-intensity is given by a Gaussian random field. We extend this to a joint likelihood formulation fitting a marked log-Gaussian Cox model.
In addition, the package offers functionality to fit self-exciting spatiotemporal point processes. Models are fitted via maximum likelihood using `TMB` (Template Model Builder) (Kristensen, Nielsen, Berg, Skaug, and Bell, 2016). Where included 1) random fields are assumed to be Gaussian and are integrated over using the Laplace approximation and 2) a stochastic partial differential equation model, introduced by Lindgren, Rue, and Lindström. (2011), is defined for the field(s).
## Installation
From CRAN `install.packages("stelfi")` or development version from GitHub:
```{r, eval = FALSE}
require(devtools)
devtools::install_github("cmjt/stelfi")
```
## Model fitting functions and examples
+ The functions `fit_hawkes()` and `fit_hawkes_cbf()` fit self-exciting Hawkes (Hawkes AG., 1971) processes to temporal point pattern data.
+ [Fitting a Hawkes model](https://cmjt.github.io/stelfi/hawkes.html#fitting-a-hawkes-model)
+ [Fitting an ETAS-type marked model](https://cmjt.github.io/stelfi/hawkes.html#fitting-a-hawkes-model)
+ [Fitting a multivariate Hawkes model](https://cmjt.github.io/stelfi/hawkes.html#the-fit_mhawkes-function)
+ [Fitting an inhomogenous Hawkes process](https://cmjt.github.io/stelfi/hawkes.html#the-fit_hawkes_cbf-function)
+ The function `fit_lgcp()` fit a log-Gaussian Cox process to either spatial or spatiotemporal point pattern data. If a spatiotemporal model is fitted a AR1 process is assumed for the temporal progression.
+ [Fitting a spatial LGCP](https://cmjt.github.io/stelfi/lgcp.html#fitting-a-spatial-only-lgcp)
+ [Fitting a spatiotemporal LGCP](https://cmjt.github.io/stelfi/lgcp.html#spatiotemporal-lgcp)
+ The function `fit_mlgcp()` fits a joint likelihood model between the point locations and the mark(s).
+ [Fitting a marked LGCP](https://cmjt.github.io/stelfi/fit-marked.html#the-fit_mlgcp-function)
+ The function `fit_stelfi()` fits self-exciting spatiotemporal Hawkes models to point pattern data. The self-excitement is Gaussian in space and exponentially decaying over time. In addition, a GMRF can be included to account for latent spatial dependency.
+ [Spatiotemporal self-exciting models](https://cmjt.github.io/stelfi/stelfi.html#stelfi)
### Key arguments for each each model fitting function
+-----------------------+-------------------------------------------------------+
| **Function** | **Key arguments** |
+:======================+:======================================================+
| `fit_hawkes()` | - `times` - a vector of `numeric` occurrence times. |
| | |
| | - `parameters` - a vector of named starting values |
| | for $\mu$ (`mu`), $\alpha$ (`alpha`), and |
| | $\beta$ (`beta`). |
| | |
| | - `marks` - optional, a vector of marks ($m(t)$). |
+-----------------------+-------------------------------------------------------+
| `fit_mhawkes()` | - `times` - a vector of `numeric` occurrence times. |
| | |
| | - `stream` - `character` vector specifying the |
| | stream ID of each observation in `times`.|
| | |
| | - `parameters` - a vector of named starting values |
| | for $\mu$ (`mu`), $\alpha$ (`alpha`), and |
| | $\beta$ (`beta`). |
+-----------------------+-------------------------------------------------------+
| `fit_hawkes_cbf()` | As `fit_hawkes()` plus |
| | |
| | - `background` - some assumed time dependent |
| | background function $\mu(t)$. |
| | |
| | - `background_integral` - the integral of |
| | `background`. |
| | |
| | - `background_parameters` - parameter |
| | starting values for $\mu(t)$. |
| | |
| | ( $^*$Note, $\texttt{mu}$ in `parameters` will be |
| | ignored) |
+-----------------------+-------------------------------------------------------+
| `fit_lgcp()` | - `locs` - a named data frame of event locations, |
| | `x`, `y`, and `t` (optional). |
| | |
| | - `sf` - a polygon of the spatial domain. |
| | |
| | - `smesh` - a Delaunay triangulation of the spatial |
| | domain returned by `INLA::inla.mesh.2d()`. |
| | |
| | - `tmesh` - optional, a temporal mesh returned by |
| | `INLA::inla.mesh.1d()`). |
| | |
| | - `parameters` - a vector of named starting values |
| | for $\boldsymbol{\beta}$ (`beta`), |
| | $\text{log}(\tau)$ (`log_tau`), |
| | $\text{log}(\kappa)$ (`log_kappa`), and |
| | $\textrm{arctan}(\rho)$ (`atanh_rho`, optional). |
+-----------------------+-------------------------------------------------------+
| `fit_mlgcp()` | - `locs`, `sf`, and `smesh` - as `fit_lgcp()`. |
| | |
| | - `marks` - a matrix of marks for each |
| | observation of the point pattern. |
| | |
| | - `parameters` - a list of named parameters, as |
| | `fit_lgcp()` plus (`betamarks`), (`betapp`), |
| | (`marks_coefs_pp` ). |
| | |
| | - `methods` - integer(s) specifying mark |
| | distribution: `0`, Gaussian; `1`, Poisson; |
| | `2`, binomial; `3`, gamma. |
| | |
| | - `strfixed` - fixed structural parameters, |
| | depends on mark distribution. |
| | |
| | - `fields` - a binary vector indicating |
| | whether there is a new random field for each |
| | mark. |
+-----------------------+-------------------------------------------------------+
| `fit_stelfi()` | - `times` - as `fit_hawkes()`. |
| | |
| | - `locs`, `sf`, and `smesh` - as `fit_lgcp()`. |
| | |
| | - `parameters` - a list of named parameter |
| | starting values for $\mu$ (`mu`), $\alpha$ |
| | (`alpha`), $\beta$ (`beta`), $\sigma_x$ (`xsigma`)|
| | $\sigma_y$ (`ysigma`), and $\rho$ (`rho`). |
| | |
| | - `GMRF` - logical, should a GMRF be included as a |
| | latent spatial effect if so $\tau$ (`tau`) |
| | and $\kappa$(`kappa`) supplied to `parameters`. |
+-----------------------+-------------------------------------------------------+
## Other useful funcions
+-----------------------+-----------------------+-----------------------+
| **Function** | **Key arguments** | **Purpose** |
+:======================+:======================+:======================+
| `get_coefs()` | - `obj` - a fitted | Extract estimated |
| | model object | parameter values from |
| | returned by any | a fitted model. |
| | one of the | |
| | functions in the | |
| | Table above | |
+-----------------------+-----------------------+-----------------------+
| `get_fields()` | As `fit_lgcp()` and | Extract estimated |
| | | mean, or standard |
| | - `sd` - logical, | deviation, of |
| | return standard | GMRF(s). |
| | deviation. | |
+-----------------------+-----------------------+-----------------------+
| `get_weights()` | - `mesh` - a | Calculate mesh |
| | Delaunay | weights. |
| | triangulation of | |
| | the spatial | |
| | domain returned | |
| | by | |
| | `INLA::inla.mesh. | |
| | 2d()`. | |
| | | |
| | - `sf` - a polygon | |
| | of the spatial | |
| | domain. | |
+-----------------------+-----------------------+-----------------------+
| `mesh_2_sf()` | - `mesh` - a | Transforms `mesh` |
| | Delaunay | into a `sf` object. |
| | triangulation of | |
| | the spatial | |
| | domain returned | |
| | by | |
| | `INLA::inla.mesh. | |
| | 2d()`. | |
+-----------------------+-----------------------+-----------------------+
| `show_field()` | - `x` - a vector of | Plots spatial random |
| | values, one per | field values. |
| | each smesh node. | |
| | | |
| | - `smesh` - as | |
| | `fit_lgcp()` . | |
| | | |
| | - `sf` - as | |
| | `fit_lgcp()`. | |
| | | |
| | - `clip` - logical, | |
| | *clip* to domain | |
+-----------------------+-----------------------+-----------------------+
| `show_hawkes()` | - `obj` - a fitted | Plot fitted Hawkes |
| | model object | model. |
| | returned by | |
| | `fit_hawkes()` or | |
| | `fit_hawkes_cbf() | |
| | `. | |
+-----------------------+-----------------------+-----------------------+
| `show_hawkes_GOF()` | - `obj` - as | Plot goodness-of-fit |
| | `show_hawkes()`. | metrics for a Hawkes |
| | | model. |
| | - `plot` - logical | |
| | | |
| | - `return_values` - | |
| | logical, return | |
| | compensator | |
| | values | |
+-----------------------+-----------------------+-----------------------+
| `show_lambda()` | As `fit_lgcp()` and | Plot estimated |
| | | spatial intensity |
| | - `clip` - logical, | from a fitted |
| | *clip* to domain | log-Gaussian Cox |
| | | process model. |
+-----------------------+-----------------------+-----------------------+
| `sim_hawkes()` | As `fit_hawkes()` | Simulate a Hawkes |
| | | process. |
+-----------------------+-----------------------+-----------------------+
| `sim_lgcp()` | As `fit_lgcp()` | Simulate a |
| | | realisation of a |
| | | log-Gaussian Cox |
| | | process. |
+-----------------------+-----------------------+-----------------------+
### References
Hawkes, AG. (1971) Spectra of some self-exciting and mutually exciting point processes. *Biometrika*, **58**: 83--90.
Lindgren, F., Rue, H., and Lindström, J. (2011) An explicit link between Gaussian fields and Gaussian Markov random fields: the stochastic partial differential equation approach. *Journal of the Royal Statistical Society: Series B (Statistical Methodology)*, **73**: 423--498.
Kristensen, K., Nielsen, A., Berg, C. W., Skaug, H., and Bell B. M. (2016). TMB: Automatic Differentiation and Laplace Approximation. *Journal of Statistical Software*, **70**: 1--21.