Learn R Programming

pomp (version 1.4.1.1)

Iterated filtering: Maximum likelihood by iterated filtering

Description

Iterated filtering algorithms for estimating the parameters of a partially-observed Markov process. Running mif causes the iterated filtering algorithm to run for a specified number of iterations. At each iteration, the particle filter is performed on a perturbed version of the model. Specifically, parameters to be estimated are subjected to random perturbations at each observation. This extra variability effectively smooths the likelihood surface and combats particle depletion by introducing diversity into the population of particles. At the iterations progress, the magnitude of the perturbations is diminished according to a user-specified cooling schedule. For most purposes, mif has been superseded by mif2.

Usage

## S3 method for class 'pomp':
mif(object, Nmif = 1, start, ivps = character(0),
    particles, rw.sd, Np, ic.lag, var.factor = 1,
    cooling.type, cooling.fraction.50,
    method = c("mif","unweighted","fp","mif2"),
    tol = 1e-17, max.fail = Inf,
    verbose = getOption("verbose"), transform = FALSE, ...)
## S3 method for class 'pfilterd.pomp':
mif(object, Nmif = 1, Np, tol, \dots)
## S3 method for class 'mif':
mif(object, Nmif, start, ivps,
    particles, rw.sd, Np, ic.lag, var.factor,
    cooling.type, cooling.fraction.50,
    method, tol, transform, \dots)
## S3 method for class 'mif':
continue(object, Nmif = 1, \dots)
## S3 method for class 'mif':
conv.rec(object, pars, transform = FALSE, \dots)
## S3 method for class 'mifList':
conv.rec(object, \dots)

Arguments

object
An object of class pomp.
Nmif
The number of filtering iterations to perform.
start
named numerical vector; the starting guess of the parameters.
ivps
optional character vector naming the initial-value parameters (IVPs) to be estimated. Every parameter named in ivps must have a positive random-walk standard deviation specified in rw.sd. If there are no regular parameter
particles
Function of prototype particles(Np,center,sd,...) which sets up the starting particle matrix by drawing a sample of size Np from the starting particle distribution centered at center and of width sd.
rw.sd
numeric vector with names; the intensity of the random walk to be applied to parameters. names(rw.sd) must be a subset of names(start), The random walk is not dynamically added to the initial-value parameters (named in
Np
the number of particles to use in filtering. This may be specified as a single positive integer, in which case the same number of particles will be used at each timestep. Alternatively, if one wishes the number of particles to vary across timestep
ic.lag
a positive integer; the timepoint for fixed-lag smoothing of initial-value parameters. The mif update for initial-value parameters consists of replacing them by their filtering mean at time times[ic.lag], where time
var.factor
optional positive scalar; the scaling coefficient relating the width of the starting particle distribution to rw.sd. In particular, the width of the distribution of particles at the start of the first mif iteration will b
cooling.type, cooling.fraction.50
specifications for the cooling schedule, i.e., the manner in which the intensity of the parameter perturbations is reduced with successive filtering iterations. cooling.type specifies the nature of the cooling schedule.

When co

method
method sets the update rule used in the algorithm. method="mif" uses the iterated filtering update rule (Ionides 2006, 2011); method="unweighted" updates the parameter to the unweighted average of the filteri
tol, max.fail
See the description under pfilter.
verbose
logical; if TRUE, print progress reports.
transform
logical; if TRUE, optimization is performed on the transformed scale, as defined by the user-supplied parameter transformations (see pomp).
...
additional arguments that override the defaults.
pars
names of parameters.

Value

  • Upon successful completion, mif returns an object of class mif. The latter inherits from the pfilterd.pomp and pomp classes.

IF2

A more full-featured version of the improved iterated filtering algorithm (IF2) is implemented as mif2.

Regular parameters vs initial-value parameters

Initial-value parameters (IVPs) differ from regular parameters in that the majority of the information about these parameters is restricted to the early part of the time series. That is, increasing the length of the time series provides progressively less additional information about IVPs than it does about regular parameters. In mif, while regular parameters are perturbed at the initial time and after every observation, IVPs are perturbed only at the initial time.

Re-running <code>mif</code> Iterations

To re-run a sequence of mif iterations, one can use the mif method on a mif object. By default, the same parameters used for the original mif run are re-used (except for tol, max.fail, and verbose, the defaults of which are shown above). If one does specify additional arguments, these will override the defaults.

Continuing <code>mif</code> Iterations

One can resume a series of mif iterations from where one left off using the continue method. A call to mif to perform Nmif=m iterations followed by a call to continue to perform Nmif=n iterations will produce precisely the same effect as a single call to mif to perform Nmif=m+n iterations. By default, all the algorithmic parameters are the same as used in the original call to mif. Additional arguments will override the defaults.

Using <code>mif</code> to estimate initial-value parameters only

One can use mif's fixed-lag smoothing to estimate only initial value parameters (IVPs). In this case, the IVPs to be estimated are named in ivps and no positive entries in rw.sd correspond to any parameters not named in ivps. If theta is the current parameter vector, then at each mif iteration, Np particles are drawn from a distribution centered at theta and with width proportional to var.factor*rw.sd, a particle filtering operation is performed, and theta is replaced by the filtering mean at time(object)[ic.lag]. Note the implication that, when mif is used in this way on a time series any longer than ic.lag, unnecessary work is done. If the time series in object is longer than ic.lag, consider replacing object with window(object,end=ic.lag).

Details

If particles is not specified, the default behavior is to draw the particles from a multivariate normal distribution. It is the user's responsibility to ensure that, if the optional particles argument is given, that the particles function satisfies the following conditions:

particles has at least the following arguments: Np, center, sd, and .... Np may be assumed to be a positive integer; center and sd will be named vectors of the same length. Additional arguments may be specified; these will be filled with the elements of the userdata slot of the underlying pomp object (see pomp).

particles returns a length(center) x Np matrix with rownames matching the names of center and sd. Each column represents a distinct particle.

The center of the particle distribution returned by particles should be center. The width of the particle distribution should vary monotonically with sd. In particular, when sd=0, the particles should return matrices with Np identical columns, each given by the parameters specified in center.

References

E. L. Ionides, C. Breto, & A. A. King, Inference for nonlinear dynamical systems, Proc. Natl. Acad. Sci. U.S.A., 103:18438--18443, 2006.

E. L. Ionides, A. Bhadra, Y. Atchad{\'e}, & A. A. King, Iterated filtering, Annals of Statistics, 39:1776--1802, 2011.

E. L. Ionides, D. Nguyen, Y. Atchad{\'e}, S. Stoev, and A. A. King. Inference for dynamic and latent variable models via iterated, perturbed Bayes maps. Proc. Natl. Acad. Sci. U.S.A., 112:719--724, 2015.

A. A. King, E. L. Ionides, M. Pascual, and M. J. Bouma, Inapparent infections and cholera dynamics, Nature, 454:877--880, 2008.

See Also

pomp, pfilter, mif2