mif(object, ...)
## S3 method for class 'pomp':
mif(object, Nmif = 1, start, pars, ivps = character(0),
particles, rw.sd, Np, ic.lag, var.factor, cooling.factor,
weighted = TRUE, tol = 1e-17, max.fail = 0,
verbose = getOption("verbose"), ...)
## S3 method for class 'pfilterd.pomp':
mif(object, Nmif = 1, start, pars, ivps = character(0),
particles, rw.sd, Np, ic.lag, var.factor, cooling.factor,
weighted = TRUE, tol, max.fail = 0,
verbose = getOption("verbose"), ...)
## S3 method for class 'mif':
mif(object, Nmif, start, pars, ivps,
particles, rw.sd, Np, ic.lag, var.factor, cooling.factor,
weighted = TRUE, tol, max.fail = 0,
verbose = getOption("verbose"), ...)
## S3 method for class 'mif':
continue(object, Nmif = 1, start, pars, ivps,
particles, rw.sd, Np, ic.lag, var.factor, cooling.factor,
weighted = TRUE, tol, max.fail = 0,
verbose = getOption("verbose"), ...)pomp.pars must have a positive random-walk standard deviation specified in rw.sd.
Leaving pars unspecified is equiivps must have a positive random-walk standard deviation specified in rw.sd.
If pars is empty, i.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.
pars (i.e., not to those named in ivps).
The algorithm requires that the randmif update for initial-value parameters consists of replacing them by their filtering mean at time times[ic.lag], where timerw.sd.
In particular, the width of the distribution of particles at the start of the first MIF iteration will be random.walk.alpha.tol are considered to be 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.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.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).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 given by the parameters specified in center.
A. A. King, E. L. Ionides, M. Pascual, and M. J. Bouma, Inapparent infections and cholera dynamics, Nature, 454:877--880, 2008.
mif-methods, pomp, pomp-class, pfilter.
See the