mif                   package:pomp                   R Documentation

_T_h_e _M_I_F _a_l_g_o_r_i_t_h_m

_D_e_s_c_r_i_p_t_i_o_n:

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

_U_s_a_g_e:

     mif(object, ...)
     ## S4 method for signature '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"))
     ## S4 method for signature 'mif':
     mif(object, Nmif, ...)
     ## S4 method for signature 'mif':
     continue(object, Nmif = 1, ...)

_A_r_g_u_m_e_n_t_s:

  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'. 

      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: logical; if TRUE, the MIF update (a weighted average) is
          used. If FALSE, the MIF update is not used; instead, an
          unweighed average of the filtering means is used for the
          update. 

     tol: numeric scalar; particles with log likelihood below 'tol' are
          considered to be "lost". A filtering failure occurs when, at
          some time point, all particles are lost. 

max.fail: integer; 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. 

_R_e-_r_u_n_n_i_n_g _M_I_F _I_t_e_r_a_t_i_o_n_s:

     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.

_C_o_n_t_i_n_u_i_n_g _M_I_F _I_t_e_r_a_t_i_o_n_s:

     One can continue 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.

_D_e_t_a_i_l_s:

     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'.

_A_u_t_h_o_r(_s):

     Aaron A. King kingaa at umich dot edu

_R_e_f_e_r_e_n_c_e_s:

     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.

_S_e_e _A_l_s_o:

     'mif-class', 'mif-methods', 'pomp', 'pomp-class', 'pfilter'. See
     the intro_to_pomp vignette for an example.

