mif {pomp}R Documentation

The MIF algorithm

Description

The MIF algorithm for estimating the parameters of a partially-observed Markov process.

Usage

mif(object, ...)
## S4 method for signature 'pomp':
mif(object, Nmif = 1, start, pars, ivps = character(0),
    particles, rw.sd, alg.pars, Np, ic.lag, var.factor, cooling.factor,
    weighted = TRUE, tol = 1e-17, warn = TRUE, max.fail = 0,
    verbose = FALSE)
## S4 method for signature 'mif':
mif(object, Nmif, ...)
## S4 method for signature 'mif':
continue(object, Nmif = 1, ...)

Arguments

object An object of class pomp.
Nmif The number of MIF iterations to perform.
start The initial guess of the parameters. This must be a named vector.
pars optional character vector naming the ordinary parameters to be estimated. Every parameter named in pars must have a positive random-walk standard deviation specified in rw.sd. Leaving pars unspecified is equivalent to setting it equal to the names of all parameters with a positive value of rw.sd that are not ivps.
ivps optional character vector naming the initial-value parameters to be estimated. Every parameter named in ivps must have a positive random-walk standard deviation specified in rw.sd.
particles Function of prototype particles(Np,center,sd,...) which sets up the initial particle matrix by drawing a sample of size Np from the initial particle distribution centered at center and of width sd. If particles is not supplied by the user, the default behavior is to draw the particles from a multivariate normal distribution with mean center and standard deviation sd.
rw.sd numeric vector with names; the intensity of the random walk to be applied to parameters. The random walk is only applied to parameters named in pars (i.e., not to those named in ivps). The algorithm requires that the random walk be nontrivial, so each element in rw.sd[pars] must be positive. rw.sd is also used to scale the initial-value parameters (via the particles function). Therefore, each element of rw.sd[ivps] must be positive. The following must be satisfied: names(rw.sd) must be a subset of names(start), rw.sd must be non-negative (zeros are simply ignored), the name of every positive element of rw.sd must be in either pars or ivps.
alg.pars optional; a named list of the algorithm parameters Np, cooling.factor, var.factor, ic.lag. The use of alg.pars is now deprecated and generates a warning. It will be removed in the near future.
Np a positive integer; the number of particles to use in filtering
ic.lag a positive integer; the timepoint for fixed-lag smoothing of initial-value parameters
var.factor a positive number; the scaling coefficient relating the width of the initial particle distribution to rw.sd The width of the initial distribution of particles will be random.walk.sd*var.factor.
cooling.factor a positive number not greater than 1; the exponential cooling factor, alpha.
weighted Should a weighted average be used? If weighted=F, the MIF update is not used; instead, an unweighed average of the filtering means is used for the update.
tol Particles with log likelihood below tol are considered to be "lost". A filtering failure occurs when, at some time point, all particles are lost.
warn Should a warning be generated when a filtering failure occurs?
max.fail Maximum number of filtering failures permitted. If the number of failures exceeds this number, execution will terminate with an error.
verbose logical; if TRUE, print progress reports.
... Additional arguments that can be used to override the defaults.

Re-running MIF Iterations

To re-run a sequence of MIF iterations, one can use the mif method on a mif object. The call sequence is mif(object). By default, the same parameters used for the original MIF run are re-used (except for weighted, tol, warn, 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 continue a series of MIF iterations from where one left off. The call sequence is continue(object, Nmif). This will perform Nmif additional MIF iterations on the mif object object. 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.

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-class).

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 corresponding to the parameters specified in center.

Author(s)

Aaron A. King kingaa at umich dot edu

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.

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-class, mif-methods, pomp, pomp-class, pfilter. See the “intro_to_pomp” vignette for an example.


[Package pomp version 0.24-7 Index]