igirf: Iterated guided intermediate resampling filter (IGIRF)

igirfR Documentation

Iterated guided intermediate resampling filter (IGIRF)

Description

An implementation of a parameter estimation algorithm combining the intermediate resampling scheme of the guided intermediate resampling filter of Park and Ionides (2020) and the parameter perturbation scheme of Ionides et al. (2015) following the pseudocode in Asfaw, et al. (2020).

Usage

## S4 method for signature 'missing'
igirf(data, ...)

## S4 method for signature 'ANY'
igirf(data, ...)

## S4 method for signature 'spatPomp'
igirf(
  data,
  Ngirf,
  Np,
  rw.sd,
  cooling.type,
  cooling.fraction.50,
  Ninter,
  lookahead = 1,
  Nguide,
  kind = c("bootstrap", "moment"),
  tol = 1e-300,
  ...,
  verbose = getOption("verbose", FALSE)
)

## S4 method for signature 'igirfd_spatPomp'
igirf(
  data,
  Ngirf,
  Np,
  rw.sd,
  cooling.type,
  cooling.fraction.50,
  Ninter,
  lookahead,
  Nguide,
  kind = c("bootstrap", "moment"),
  tol,
  ...,
  verbose = getOption("verbose", FALSE)
)

Arguments

data

an object of class spatPomp or igirfd_spatPomp

...

If a params argument is specified, abf will estimate the likelihood at that parameter set instead of at coef(object).

Ngirf

the number of iterations of parameter-perturbed GIRF.

Np

The number of particles used within each replicate for the adapted simulations.

rw.sd

specification of the magnitude of the random-walk perturbations that will be applied to some or all model parameters. Parameters that are to be estimated should have positive perturbations specified here. The specification is given using the rw.sd function, which creates a list of unevaluated expressions. The latter are evaluated in a context where the model time variable is defined (as time). The expression ivp(s) can be used in this context as shorthand for

ifelse(time==time[1],s,0).

Likewise, ivp(s,lag) is equivalent to

ifelse(time==time[lag],s,0).

See below for some examples.

The perturbations that are applied are normally distributed with the specified s.d. If parameter transformations have been supplied, then the perturbations are applied on the transformed (estimation) scale.

cooling.type, cooling.fraction.50

specifications for the cooling schedule, i.e., the manner and rate with which the intensity of the parameter perturbations is reduced with successive filtering iterations. cooling.type specifies the nature of the cooling schedule. See below (under “Specifying the perturbations”) for more detail.

Ninter

the number of intermediate resampling time points. By default, this is set equal to the number of units.

lookahead

The number of future observations included in the guide function.

Nguide

The number of simulations used to estimate state process uncertainty for each particle.

kind

One of two types of guide function construction. Defaults to 'bootstrap'. See Park and Ionides (2020) for more details.

tol

If all of the guide function evaluations become too small (beyond floating-point precision limits), we set them to this value.

verbose

logical; if TRUE, messages updating the user on progress will be printed to the console.

Value

Upon successful completion, igirf() returns an object of class ‘igirfd_spatPomp’. This object contains the convergence record of the iterative algorithm with respect to the likelihood and the parameters of the model (which can be accessed using the traces attribute) as well as a final parameter estimate, which can be accessed using the coef(). The algorithmic parameters used to run igirf() are also included.

Methods

The following methods are available for such an object:

coef

gives the Monte Carlo maximum likelihood parameter estimate.

Author(s)

Kidus Asfaw

References

\park

2020

\asfaw

2020

See Also

likelihood evaluation algorithms: girf(), enkf(), bpfilter(), abf(), abfir()

Other likelihood maximization algorithms: ibpf(), ienkf(), iubf()

Examples

# Complete examples are provided in the package tests
## Not run: 
igirf(bm(U=2,N=4),Ngirf=2,
  rw.sd = rw_sd(rho=0.02,X1_0=ivp(0.02)),
  cooling.type="geometric",cooling.fraction.50=0.5,
  Np=10,Ninter=2,lookahead=1,Nguide=5)

## End(Not run)

spatPomp documentation built on Aug. 10, 2023, 1:10 a.m.