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_6:
• The bug reported in issue #57 has been fixed. • A bug arising when building pomp objects with Csnippets in certain Windows configurations has been fixed. • Issue #56, in which covariate names are discarded when coercing a pomp object to a data frame, has been fixed. Thanks to Eamon O'Dea for reporting this bug. • More informative error messages are given when ‘bake’ or ‘freeze’ return ‘NULL’. In such a case, these functions now generate a warning and return a character-string message, with attributes. • Improve documentation of ‘traj.match’, in response to Issue #57. • A new facility, ‘gillespie.hl.sim’, allows implementation of Gillespie's algorithm for exact stochastic simulation of continuous-time Markov processes via a streamlined C snippet interface. • The old facility for Gillespie simulations, ‘gillespie.sim’, now accepts C snippets for faster calculation of event rates. • The old ‘skeleton.type’ and ‘skelmap.delta.t’ arguments of the ‘pomp’ constructor, which have generated error messages since version 1.9.2, have been done away with completely. • Eamon O'Dea identified a bug (Issue #54) occurring when ‘pomp’ is called with a single-row data frame. This has been fixed using his contributed patch.
_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._1_5:
• A new ‘dmultinom’ function is provided in ‘pomp.h’. This provides the probability distribution function for the multinomial distribution. • Improved tests. • Fixed bugs emerging in R-devel due to refactoring of underlying R source code.
_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._1_4:
• Eamon O'Dea pointed out that the bug in ‘gillespie.sim’, addressed by version 1.12.3, was not completely fixed. This problem has now been resolved. In addition, covariates are now guaranteed to be evaluated at least once per observation interval. • The new argument ‘hmax’ to ‘gillespie.sim’ allows the user to specify the maximum step size that will be taken before covariates are evaluated. • The K-leap method has been removed. Its accuracy is low on test problems and it is difficult to make it compatible with the pomp paradigm. In particular, it does not readily accomodate time-varying covariates in a sensible way, nor does it lend itself to simulations at pre-specified times. • ‘bspline.basis’ and ‘periodic.bspline.basis’ now take an optional non-negative integer argument ‘deriv’. When ‘deriv > 0’, the order-‘deriv’ derivative of each basis function is returned. • A new function, ‘periodic_bspline_basis_eval_deriv’, has been added to the C API. This function gives access, at the C level, to evaluation of the derivatives of periodic B-splines. • Upgrade license to GPL version 3. • Fix buffer-flow problem identified by ‘valgrind’.
_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._1_3:
• Fix bug found by Eamon O'Dea in ‘gillespie.sim’. • Fix bug in ‘onestep.sim’. • The Ricker example has a new parameter, c, which scales the (unobserved) population size. By default, c=1, so that the behavior is as before. • Improved error trapping.
_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._1_2:
• Some changes have been made to the use of random numbers in some codes (the stochastic simulations in ‘gillespie.sim’ and the resampling in the particle-filtering codes). These changes will mean that calculations performed before will not be reproducible in perfect detail, but will be statistically equivalent. • Minor changes in C codes to obviate warnings generated by T. Kalibera's ‘rchk’ checks. • The rare and fascinating “Bug of St. Patrick” has been fixed. Thanks to Carles Breto for finding the bug and helping to isolate it. • More informative error messages are generated when ‘dmeasure’ returns a non-finite likelihood in any of the particle filtering codes. • Some streamlining of codes.
_C_h_a_n_g_e_s _i_n '_p_o_m_p' _v_e_r_s_i_o_n _1._1_1:
• Callable routines are now registered. • The functions ‘bake’, ‘stew’, and ‘freeze’ now preserve information about the system time used in computation as an attribute of the returned object. In addition, these functions store information about the RNG settings. • Some documentation improvements, courtesy of Sebastian Funk. • Various documentation improvements. • More verbosity is provided with ‘verbose=TRUE’. • Better handling of ‘pomp’'s ‘times’ argument.
_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 ‘skelmap.delta.t’ 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. • Modified ‘src/ssa.c’ to fix UBSAN errors. • C codes have been modified to take advantage of changes to the R API (R SVN REVISION 71180). • 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 ‘rw.sd’ 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 100%.
_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’ object. • 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 (2007). • 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 coverage. • 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 testing. • 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. • 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 ‘skelmap.delta.t’ 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 ‘rw.sd’ 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’ correctly. • ‘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 ‘rw.sd’. 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’.