Learn R Programming

pomp (version 0.53-5)

mif: Iterated filtering

Description

Iterated filtering algorithms for estimating the parameters of a partially-observed Markov process.

Usage

## S3 method for class 'pomp':
mif(object, Nmif = 1, start, pars, ivps = character(0),
    particles, rw.sd, Np, ic.lag, var.factor,
    cooling.type, cooling.fraction, cooling.factor,
    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,
    method, tol, transform, \dots)
## S3 method for class 'mif':
continue(object, Nmif = 1, \dots)

Arguments

Re-running MIF 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 weighted, tol, max.fail, and verbose, the defaults of which are shown above). If one does specify additional arguments, these will override the defaults.

Continuing MIF 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 MIF to estimate initial-value parameters only

One can use MIF's fixed-lag smoothing to estimate only initial value parameters (IVPs). In this case, pars is left empty and the IVPs to be estimated are 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. Bret\'o, & 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.

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

See Also

mif-methods, pomp, pfilter. See the intro_to_pomp vignette for examples.