Learn R Programming

spatPomp (version 1.1.0)

igirf: 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 missing
igirf(data, ...)

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

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

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

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.

Arguments

data

an object of class spatPomp or igirfd_spatPomp

...

Additional arguments can be used to replace model components.

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 vector of observation times is visible (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.

Methods

The following methods are available for such an object:

coef

gives the Monte Carlo maximum likelihood parameter estimate.

Author

Kidus Asfaw

References

Park, J. and Ionides, E. L. (2020) Inference on high-dimensional implicit dynamic models using a guided intermediate resampling filter. Statistics and Computing, tools:::Rd_expr_doi("10.1007/s11222-020-09957-3")

Asfaw, K., Park, J., Ho, A., King, A. A., and Ionides, E. L. (2020) Partially observed Markov processes with spatial structure via the R package spatPomp. ArXiv: 2101.01157. tools:::Rd_expr_doi("10.48550/arXiv.2101.01157")

See Also

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

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

Examples

Run this code
# Complete examples are provided in the package tests
if (FALSE) {
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)
}

Run the code above in your browser using DataLab