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 time
rw.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