Title: | Integro-Difference Equation Spatio-Temporal Models |
---|---|
Description: | The Integro-Difference Equation model is a linear, dynamical model used to model phenomena that evolve in space and in time; see, for example, Cressie and Wikle (2011, ISBN:978-0-471-69274-4) or Dewar et al. (2009) <doi:10.1109/TSP.2008.2005091>. At the heart of the model is the kernel, which dictates how the process evolves from one time point to the next. Both process and parameter reduction are used to facilitate computation, and spatially-varying kernels are allowed. Data used to estimate the parameters are assumed to be readings of the process corrupted by Gaussian measurement error. Parameters are fitted by maximum likelihood, and estimation is carried out using an evolution algorithm. |
Authors: | Andrew Zammit-Mangion [aut, cre] |
Maintainer: | Andrew Zammit-Mangion <[email protected]> |
License: | GPL (>= 2) |
Version: | 0.3.1 |
Built: | 2025-02-08 05:25:19 UTC |
Source: | https://github.com/andrewzm/ide |
The Integro-Difference Equation model is a linear, dynamical model used to model phenomena that evolve in space and in time. At the heart of the model is the kernel, which dictates how the process evolves from one time point to the next. Both process and parameter reduction are used to facilitate computation, and spatially-varying kernels are allowed. Data used to estimate the parameters are assumed to be readings of the process corrupted by Gaussian measurement error. Parameters are fitted by maximum likelihood, and estimation is carried out using an evolution algorithm.
Takes a an object of class IDE
and returns a numeric vector with the estimated regression coefficients.
## S3 method for class 'IDE' coef(object, ...)
## S3 method for class 'IDE' coef(object, ...)
object |
object of class |
... |
currently unused |
IDE
for more information on how to construct and fit an IDE model.
SIM1 <- simIDE(T = 5, nobs = 100, k_spat_invariant = 1) coef(SIM1$IDEmodel)
SIM1 <- simIDE(T = 5, nobs = 100, k_spat_invariant = 1) coef(SIM1$IDEmodel)
Constructs an object of class Basis
as defined in FRK
that is constant over the entire spatial domain.
constant_basis()
constant_basis()
Object of class Basis
IDE
for how to use basis functions to construct the IDE kernel
basis1 <- constant_basis()
basis1 <- constant_basis()
The integro-difference equation (IDE) model is constructed using the function IDE
, fitted using the function IDE.fit
and used for prediction using the function predict
.
IDE(f, data, dt, process_basis = NULL, kernel_basis = NULL, grid_size = 41, forecast = 0, hindcast = 0) fit.IDE(object, method = "DEoptim", fix = list(), ...) ## S3 method for class 'IDE' predict(object, newdata = NULL, covariances = FALSE, ...)
IDE(f, data, dt, process_basis = NULL, kernel_basis = NULL, grid_size = 41, forecast = 0, hindcast = 0) fit.IDE(object, method = "DEoptim", fix = list(), ...) ## S3 method for class 'IDE' predict(object, newdata = NULL, covariances = FALSE, ...)
f |
|
data |
data object of class |
dt |
object of class |
process_basis |
object of class |
kernel_basis |
a list of four objects of class |
grid_size |
an integer identifying the number of grid points to use (in one dimension) for numerical integrations |
forecast |
an integer indicating the number of steps to forecast (where each step corresponds to one |
hindcast |
an integer indicating the number of steps to hindcast (where each step corresponds to one |
object |
object of class |
method |
method used to estimate the parameters. Currently only |
fix |
list of parameters which are fixed and not estimated (e.g., |
... |
other parameters passed to |
newdata |
data frame or object of class |
covariances |
a flag indicating whether prediction covariances should be returned or not when predicting |
The first-order spatio-temporal IDE process model used in the package IDE
is given by
for , where
is a transition kernel, depending on parameters
that specify “redistribution weights” for the process at the previous time over the spatial domain,
, and
is a time-varying (but statistically independent in time) continuous mean-zero Gaussian spatial process. It is assumed that the parameter vector
does not vary with time. In general,
for the process to be stable (non-explosive) in time.
The redistribution kernel used by the package
IDE
is given by
where the spatially-varying kernel amplitude is given by and controls the temporal stationarity, the spatially-varying length-scale (variance) parameter
corresponds to a kernel scale (aperture) parameter (i.e., the kernel width increases as
increases), and the mean (shift) parameters
and
correspond to a spatially-varying shift of the kernel relative to location
. Spatially-invariant kernels (i.e., where the elements of
are not functions of space) are assumed by default. The spatial dependence, if present, is modelled using a basis-function decomposition.
IDE.fit()
takes an object of class IDE
and estimates all unknown parameters, namely the parameters and the measurement-error variance, using maximum likelihood. The only method currently used is the genetic algorithm in the package
DEoptim
. This has been seen to work well on several simulation and real-application studies on multi-core machines.
Once the parameters are fitted, the IDE
object is passed onto the function predict()
in order to carry out optimal predictions over some prediction spatio-temporal locations. If no locations are specified, the spatial grid used for discretising the integral at every time point in the data horizon are used. The function predict
returns a data frame in long format. Change-of-support is currently not supported.
Object of class IDE
that contains get
and set
functions for retrieving and setting internal parameters, the function update_alpha
which predicts the latent states, update_beta
which estimates the regression coefficients based on the current predictions for alpha
, and negloglik
, which computes the negative log-likelihood.
show_kernel
for plotting the kernel
SIM1 <- simIDE(T = 5, nobs = 100, k_spat_invariant = 1) IDEmodel <- IDE(f = z ~ s1 + s2, data = SIM1$z_STIDF, dt = as.difftime(1, units = "days"), grid_size = 41) fit_results_sim1 <- fit.IDE(IDEmodel, parallelType = 1) ST_grid_df <- predict(fit_results_sim1$IDEmodel)
SIM1 <- simIDE(T = 5, nobs = 100, k_spat_invariant = 1) IDEmodel <- IDE(f = z ~ s1 + s2, data = SIM1$z_STIDF, dt = as.difftime(1, units = "days"), grid_size = 41) fit_results_sim1 <- fit.IDE(IDEmodel, parallelType = 1) ST_grid_df <- predict(fit_results_sim1$IDEmodel)
Plotting function for visualising the IDE kernel.
show_kernel(IDEmodel, scale = 1)
show_kernel(IDEmodel, scale = 1)
IDEmodel |
object of class |
scale |
factor by which to scale the arrows when visualising a spatially-varying kernel |
The function show_kernel
adapts its behaviour to the type of kernel. If the kernel is spatially-invariant, then the kernel with evaluated at the origin is plotted. If spatially-variant, then arrows on a regular grid over the domain are plotted. The direction of the arrow is indicative of the transport direction at a specific location, while the length of the arrow is indicative of the transport intensity.
IDE
for details on the IDE model.
SIM1 <- simIDE(T = 5, nobs = 100, k_spat_invariant = 0) show_kernel(SIM1$IDEmodel)
SIM1 <- simIDE(T = 5, nobs = 100, k_spat_invariant = 0) show_kernel(SIM1$IDEmodel)
Generates simulations that are then used to evaluate the fitting and prediction of an IDE model.
simIDE(T = 9, nobs = 100, k_spat_invariant = 1, IDEmodel = NULL)
simIDE(T = 9, nobs = 100, k_spat_invariant = 1, IDEmodel = NULL)
T |
number of time points to simulate |
nobs |
number of observations randomly scattered in the domain and fixed for all time intervals |
k_spat_invariant |
flag indicating whether to simulate using a spatially-invariant kernel or a spatially-variant one |
IDEmodel |
object of class IDE to simulate form (optional) |
The domain considered is [0,1] x [0,1], and an IDE is simulated on top of a fixed effect comprising of an intercept, a linear horizontal effect, and a linear vertical effect (all with coefficients 0.2). The measurement-error variance and the variance of the additive disturbance are both 0.0001. When a spatially-invariant kernel is used, the following parameters are fixed: ,
,
, and
. See
IDE
for details on these parameters. When a spatially-varying kernel is used, ,
, and
are smooth spatial functions simulated on the domain.
A list containing the simulated process in s_df
, the simulated data in z_df
, the data as STIDF
in z_STIDF
, plots of the process and the observations in g_truth
and g_obs
, and the IDE model used to simulate the process and data in IDEmodel
.
show_kernel
for plotting the kernel and IDE
SIM1 <- simIDE(T = 5, nobs = 100, k_spat_invariant = 1) SIM2 <- simIDE(T = 5, nobs = 100, k_spat_invariant = 0)
SIM1 <- simIDE(T = 5, nobs = 100, k_spat_invariant = 1) SIM2 <- simIDE(T = 5, nobs = 100, k_spat_invariant = 0)