mif {pomp}R Documentation

The MIF algorithm

Description

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

Running the MIF algorithm

The call sequence for mif is

mif(object, Nmif, start, pars, ivps = character(0), particles, rw.sd, alg.pars, weighted = TRUE, tol = 1e-17, warn = TRUE, max.fail = 0)

Description of 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
Character vector of names of ordinary parameters to be estimated.
ivps
Character vector of names of initial-value parameters to be estimated.
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.
rw.sd
The intensity of the random walk.
alg.pars
A named list of algorithm parameters. This consists of
Np
the number of particles to use in filtering
var.factor
the scaling coefficient relating the width of the initial particle distribution to rw.sd
ic.lag
the timepoint for fixed-lag smoothing of initial-value parameters (IVPs)
cooling.factor
normal-bracket46bracket-normal
the exponential cooling factor, a, where the exponential cooling factor, a, where eqn
weighted
Should a weighted average be used? If weighted=F, the MIF update is not used; rather, 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.

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

Any additional arguments that are valid for the mif method of an "pomp" object (see pomp-class) can be given (with the exception of the `particles' function). Arguments not specified will take the values they have in the slots of object.

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.

All additional arguments are passed to mif. This feature can be used to change any of the parameters (except the particles function).

Details

It is the user's responsibility to ensure that the particles function satisfies the following conditions:

particles has at least the following arguments: Np, center, sd, and .... 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 named list consisting of two matrices. The element states must contain the state-variable portion of the particles; params must contain the parameter portion. Each matrix must have rownames and exactly Np columns. Each column represents a distinct particle. The rownames are used by the algorithms (see mif, pfilter).

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.

See Also

mif-class, mif-methods, pomp, pomp-class, pfilter. See the "random_walk_example" vignette for an example.


[Package pomp version 0.17-3 Index]