iubf: Iterated Unadapted Bagged Filter (IUBF)

iubfR Documentation

Iterated Unadapted Bagged Filter (IUBF)

Description

An algorithm for estimating the parameters of a spatiotemporal partially-observed Markov process. Running iubf causes the algorithm to perform a specified number of iterations of unadapted simulations with parameter perturbation and parameter resamplings. At each iteration, unadapted simulations are performed on a perturbed version of the model, in which the parameters to be estimated are subjected to random perturbations at each observation. After cycling through the data, each replicate's weight is calculated and is used to rank the bootstrap replictates. The highest ranking replicates are recycled into the next iteration. This extra variability introduced through parameter perturbation effectively smooths the likelihood surface and combats particle depletion by introducing diversity into particle population. As the iterations progress, the magnitude of the perturbations is diminished according to a user-specified cooling schedule.

Usage

## S4 method for signature 'spatPomp'
iubf(
  object,
  Nubf = 1,
  Nrep_per_param,
  Nparam,
  nbhd,
  prop,
  rw.sd,
  cooling.type = c("geometric", "hyperbolic"),
  cooling.fraction.50,
  tol = (1e-18)^17,
  verbose = getOption("verbose"),
  ...
)

Arguments

object

A spatPomp object.

Nubf

The number of iterations to perform

Nrep_per_param

The number of replicates used to estimate the likelihood at a parameter

Nparam

The number of parameters that will undergo the iterated perturbation

nbhd

A neighborhood function with three arguments: object, time and unit. The function should return a list of two-element vectors that represent space-time neighbors of (u,n), which is represented by c(unit,time). See example below for more details.

prop

A numeric between 0 and 1. The top prop*100% of the parameters are resampled at each observation

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.

tol

If the resampling weight for a particle is zero due to floating-point precision issues, it is set to the value of tol since resampling has to be done.

verbose

logical; if TRUE, diagnostic messages will be printed to the console.

...

additional arguments supply new or modify existing model characteristics or components. See pomp for a full list of recognized arguments.

When named arguments not recognized by pomp are provided, these are made available to all basic components via the so-called userdata facility. This allows the user to pass information to the basic components outside of the usual routes of covariates (covar) and model parameters (params). See userdata for information on how to use this facility.

Value

Upon successful completion, iubf() returns an object of class ‘iubfd_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 iubf() are also included.

Methods

The following methods are available for such an object:

coef

extracts the point estimate

Author(s)

Kidus Asfaw

References

\asfaw

2020

\ionides

2021

See Also

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

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


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