Statistical Inference for Partially Observed Markov Processes

Tools for working with partially observed Markov process (POMP) models (also known as stochastic dynamical systems, hidden Markov models, and nonlinear, non-Gaussian, state-space models). The package provides facilities for implementing POMP models, simulating them, and fitting them to time series data by a variety of frequentist and Bayesian methods. It is also a versatile platform for implementation of inference methods for general POMP models.


_N_e_w_s _f_o_r _p_a_c_k_a_g_e '_p_o_m_p'

_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._1_0:

    • New ‘logLik’ method for ‘pmcmcList’ objects.

    • The deprecated option to supply a matrix or numeric vector as
      the ‘data’ argument to ‘pomp’ have been removed and an error
      is now generated.  ‘data’ must be provided as either a data
      frame or an object of class ‘pomp’.  See ‘?pomp’ for details.

    • The deprecated ‘skeleton.type’ and ‘’
      arguments to ‘pomp’ have been removed.  Using these arguments
      will now generate an error message.  The correct method of
      specifiying the deterministic skeleton is now explained in
      the help pages (‘?pomp’).

    • Source code fixes to eliminate warnings during compilation.

    • Improved test suite.

    • Minor documentation correction.

_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._9:

    • During particle filtering, when non-finite ‘dmeasure’ values
      are generated, an error is generated and the offending
      parameters, states, data, and time are reported.  In methods
      that use parameter transformations (‘transform=TRUE’), the
      reported parameters were on the transformed (estimation)
      scale, which can be confusing.  The error message now gives
      the parameters on the natural (model) scale.

    • A bug in ‘mif2’ arising when filtering fails in the final
      timestep has been fixed.  In this case, when all particles
      are deemed inconsistent with the data, we use an unweighted
      mean (with a warning) in place of the default weighted mean.

    • C codes have been modified to take advantage of changes to
      the ‘R’ API (R SVN REVISION 71180).

    • Modified ‘src/ssa.c’ to fix UBSAN errors.

_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._8:

    • There is a new option, ‘shlib.args’, to ‘pomp’.  This allows
      arbitrary options to be passed to the compiler when C
      snippets are used.  In particular, one can link a library of
      C snippets against a precompiled static library.

    • In Sobol' sequence generation (‘sobolDesign’,
      ‘profileDesign’), we now use the suggestion of Joe & Kuo
      (2003) to choose a better sequence start point.

    • The generation of Sobol' sequences (‘sobolDesign’,
      ‘profileDesign’) is now performed using the ‘NLopt’ routines
      written in C instead of the original TOMS 659 FORTRAN codes.
      The copyright notices are located in the source code.

    • The stochastic simulation algorithms underlying the Gillespie
      and K-leap methods (‘gillespie.sim’, ‘kleap.sim’) have been
      refactored in C.  In addition, errors due to accumulation of
      round-off error have been repaired.  The result will be more
      accurate, but somewhat slower when there are a very large
      number of reactions.

    • Fixed a bug in ‘plot’ on ‘pomp’ objects with more than 10
      variables to plot.

    • Refactored ‘’ for greater stability.

    • Modified the “dacca” example to use C snippets.

    • Made Sobol' codes more robust.

    • Modified the demos to use best practices.

    • Further improvements to the test suite.  Code coverage is now

_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._7:

    • Improvement of the test suite and of error messages.

    • Improve the ‘show’ and ‘print’ methods for ‘pomp’ objects.

    • Some internal refactoring.

    • Improve error messages for missing basic components.

    • Fix typos in one of the help-page examples.

    • Several obscure bug-fixes.

    • Add some references.

_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._6:

    • Major revisions to the package help pages and manual.  The
      separate documentation on C snippets and process-model
      plugins has been merged into the main ‘pomp’ help page, which
      now has comprehensive instructions on building a ‘pomp’

    • Update to the package help page.

    • New methods for the Ensemble Kalman Filter (‘enkf’) and
      Ensemble Adjustment Kalman Filter (‘eakf’) have been added to
      the package.

    • There is a new plugin for ‘rprocess’ called ‘kleap.sim’.
      This implements the so-called “K-leap method” of Cai & Xu

    • Major overhaul of error handling system and to error and
      warning messages.  Many more errors are now trapped and
      reported with more informative messages.

    • The matrix and numeric vector options for the ‘data’ argument
      to ‘pomp’ are now deprecated and will be removed in a future
      release.  In calls to ‘pomp’, ‘data’ should be either a data
      frame or a ‘pomp’-class object.

    • In ‘mif2’, it is now required that ‘Nmif>0’.

    • Redundant ‘bootstrap’ argument to ‘nlf’ has been removed.

    • Many improvements to the test suite to obtain better code

    • Fixed bugs that might arise in rare circumstances in
      ‘simulate’ and ‘eulermultinom’ functions.

    • Fixed a bug in ‘pompExample’.

    • Fixed several small, rare bugs found as a result of improved

    • Fixed bug in specification of skeleton in pompExamples.

    • ‘pomp’ is no longer an S4 method.  Its new status as an
      ordinary function abbreviates and consolidates the code and
      simplifies the documentation.

    • A bug restricting access in C code to ‘userdata’ has been

    • Fixed bug in ‘pompExample(...,show=TRUE)’.

_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._5:

    • A better interface for specifying a model's deterministic
      skeleton is provided.  One specifies
      ‘skeleton=map(f,delta.t)’ for a discrete-time skeleton (a
      map) and ‘skeleton=vectorfield(f)’ for a continuous-time
      skeleton (a vectorfield).  The old arguments ‘skeleton.type’
      and ‘’ are deprecated and will be removed in a
      future release.

    • The ‘pfilter’ help page has been improved.  Specifically, the
      discussion of filtering failures is better.

    • Miscellaneous improvements to the help pages.

    • ‘mif2’ no longer computes filter means.

    • The new argument ‘show’ of ‘pompExamples’ allows one to
      display the example code instead of executing it.

    • The minimum version of R supported is now 3.1.2.

    • ‘init.state’ now has the optional argument ‘nsim’.  Using
      this, one can request multiple initial state vectors per
      parameter vector.

    • ‘pfilter’ now uses less memory when it is asked to run at a
      single point in parameter space.

    • A bug associated with the ‘’ argument to ‘mif2’ on
      Windows platforms has been fixed.

    • The ‘method="mif2"’ option to ‘mif’ has been removed.  Use
      ‘mif2’ instead.

    • The ‘particles’ method (rarely if ever used), has been
      removed to streamline the ‘mif’ codes.

    • The ‘method="mif2"’ option to ‘mif’ is now deprecated.  It
      will be removed in a future release.  Use ‘mif2’ instead.

_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._4:

    • Following the publication of the Journal of Statistical
      Software announcement paper, the ‘CITATION’ has been modified
      to include the appropriate citation.  Please use
      ‘citation("pomp")’ to learn about how to cite ‘pomp’

    • ‘conv.rec’ on the results of a ‘mif2’ computation now play
      nicely with ‘reshape2::melt’.

    • It is now possible to direct ‘pomp’ to place ‘Csnippet’ codes
      in a specified location.  This is accomplished via the new
      ‘cdir’ and ‘cfile’ arguments to ‘pomp’.

    • When several concurrent R processes attempt to simultaneously
      compile ‘Csnipet’ code from copies of a ‘pomp’ object on the
      same machine, a race condition exists.  This release fixes
      this by ensuring that ‘Csnippet’ codes are written and
      compiled in a process-specific directory.

_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._3:

 This release removes several long-deprecated features.

    • The ‘seed’ argument to ‘pfilter’ has been removed.  Use
      ‘freeze’ to obtain similar functionality.

    • The redundant ‘pars’ argument to ‘mif’ has been removed.
      Names of parameters to be estimated are taken from the
      nonzero entries of ‘’.  Initial-value parameters are
      designated using the ‘ivps’ argument.

    • The old ‘parameter.transform’ and ‘parameter.inv.transform’
      arguments to ‘pomp’ have been removed.  They were superseded
      by the arguments ‘fromEstimationScale’ and
      ‘toEstimationScale’ in version 0.65-1.

    • Some internal changes to ‘mif2’ by C. Breto, in support of
      panel methods under development.

_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._2:

    • Bug fix: for POMPs with a scalar state variable, the
      ‘filter.mean’, ‘pred.mean’, and ‘pred.var’ methods dropped
      the singleton dimension of the respective arrays, in conflict
      with the assumptions of certain ‘plot’ methods.  This
      resolves issue #3.

    • Documentation improvements.  Specifically, the details of how
      step-sizes are chosen in the ‘euler.sim’,
      ‘discrete.time.sim’, and ‘onestep.sim’ plugins has been
      spelled out explicitly.  Also, incompleteness in the
      ‘sannbox’ documentation has been corrected.

    • Provide ‘filter.traj’ method for ‘pmcmcList’ objects.

    • Fixed a bug in ‘mif’ and ‘mif2’ when
      ‘cooling.type="hyperbolic"’ and ‘cooling.fraction.50=1’.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


1.15 by Aaron A. King, 4 days ago

Report a bug at

Browse source code at

Authors: Aaron A. King [aut, cre], Edward L. Ionides [aut], Carles Breto [aut], Stephen P. Ellner [ctb], Matthew J. Ferrari [ctb], Bruce E. Kendall [ctb], Michael Lavine [ctb], Dao Nguyen [ctb], Daniel C. Reuman [ctb], Helen Wearing [ctb], Simon N. Wood [ctb], Sebastian Funk [ctb], Steven G. Johnson [ctb]

Documentation:   PDF Manual  

Task views: Differential Equations, Time Series Analysis

GPL-3 license

Imports stats, graphics, digest, mvtnorm, deSolve, coda, subplex, nloptr

Depends on methods

Suggests magrittr, plyr, reshape2, ggplot2, knitr

System requirements: For Windows users, Rtools (see

Suggested by CollocInfer, spaero.

See at CRAN