NEWS R Documentation

## News for package ‘pomp’

### Changes in pomp version 4.3

• The archiving functions bake and stew now use a slightly less exacting comparison of the expression, expr, they are furnished. NB: Running bake or stew with archives created by earlier versions may result in recomputation.

• The time method has been extended to pompList and related objects.

• All workhorse functions except partrans have new default arguments.

• Some documentation improvements.

• The archiving functions bake and stew now take the argument dir, which is the directory holding the archive files. By default, this is the current working directory or the value of the global option pomp.archive.dir.

• A new global option, pomp_archive_dir, can be used to specify the locations of archive files used by bake and stew.

• Documentation repair of issue flagged by Kurt Hornik (9 June 2022).

### Changes in pomp version 4.2

• Minor changes to the C codes to keep up with R-devel.

• Minor changes in the implementation of bake and stew.

### Changes in pomp version 4.1

• Change in the names of the variables returned by as.data.frame applied to a ‘pfilterd.pomp’ object.

• Fixed bug found by Jesse Wheeler and Ed Ionides, to do with 'simulate()' with 'include.data=TRUE'.

• It is now possible to plot lists of ‘pomp’ and ‘pomp’-derived objects using a single call to plot.

• The rbetabinom and dbetabinom functions, long present as part of the C API, are now available as R functions.

• The SIR examples sir() and sir2() now use a negative binomial measurement model.

• parmat can now take a data frame of parameters and convert it into a matrix suitable for furnishing to the params argument of any pomp function.

• It is now possible to change the parameters in an ‘objfun’ (objective function) object using coef(object)<-value.

• parmat now takes an optional argument, names, which allows the user to name the parameter sets.

• Independent realizations of the stochastic processes modeled in pomp are now distinguished by different values of .id. This behavior is now uniform throughout.

• bake and stew now send messages instead of warnings when they recompute an archive due to a change in code or dependencies.

• It is now possible to change the parameters in an ‘objfun’ (objective function) object using coef(object)<-value.

• The ensemble adjusted Kalman filter (eakf) has been refactored. It now makes use of the emeasure and vmeasure basic components to compute an approximation of the linear relationship between the latent state and the observed variables.

• The forecast method now works for pfiterd_pomp objects (i.e., results of pfilter, pmcmc, or mif2 computations).

• Two new basic model components have been introduced. These are:

emeasure,

which computes the expectation of the observable variables conditional on the latent state;

vmeasure,

which computes the covariance matrix of the observables given the latent state.

These are used by the newly refactored ensemble Kalman filter, enkf.

• The basic (linear, Gaussian) Kalman filter is now available as kalmanFilter.

• Computation of Monte Carlo-adjusted profile likelihood is now facilitated by the new mcap function.

• The default return-value format for trajectory now matches that of simulate.

### Changes in pomp version 4.0

Version 4 contains a few changes that are not backward compatible. These are all to do with the elementary function trajectory, which computes trajectories of the deterministic dynamical skeleton. See below for details.

• The behavior of trajectory now fully conforms to the behavior of other pomp elementary functions. In particular, one can now add, remove, or modify basic model components in a call to trajectory just as one can with simulate, pfilter, probe, etc. Before version 4, additional arguments to trajectory (i.e., those passed via ...) were passed on to the ODE integrator in the case of continuous-time deterministic skeletons (i.e., vectorfields) and ignored in the case of discrete-time skeletons (i.e., maps). As of version 4, in order to adjust ODE integrator settings it is necessary to use the ode_control argument of trajectory. This behavior matches that of traj_objfun.

• It is now possible to create a ‘pomp’ object from scratch using trajectory, together with a specification of the rinit and skeleton components. Prior to version 4, in order to do so, it was necessary to first create a dummy data set, then call pomp, and then pass the resulting ‘pomp’ object to trajectory. This can now be achieved in one call.

• The user now has the option, in a call to trajectory, to have the results returned as one or ‘pomp’ objects. In this regard, its behavior matches that of simulate.

### Changes in pomp version 3.6

• The states and obs methods now work for lists of ‘pomp’ objects (‘listies’).

• The workhorse function flow now has default arguments.

• The stateful objective function created by traj_objfun has been refactored so that it is independent of trajectory. This change is invisible to the user, but lays the groundwork for future changes in trajectory.

• Stateful objective functions created by traj_objfun, nlf_objfun, probe_objfun, and spect_objfun now have default arguments. In particular, the default is argument is a zero-length numeric vector. Calling such a function with no arguments is valid if and only if the objective function was created with no variables to estimate (empty est).

• Fixed bug in rprior arising with integer-valued return vectors.

• Major improvements to the package manual, including richer cross-linking and better organization.

• When simulate is called with format="data.frame" and include.data=TRUE, the interpolated covariates are now included in the data frame that is returned.

### Changes in pomp version 3.5

• bake takes a new option, timing, that controls whether information on the timing is returned or merely stored. By default, this is set to TRUE, though this default behavior may change in future.

• When they encounter an archive produced by an older version, bake and stew now update the archive in the new format. Recomputation should never be triggered in this case: If recomputation is desired, delete the archive file.

• bake and stew now archive a digest of the code in expr and on subsequent calls check to see if the archived version matches the current version. Thus, changes to the code automatically trigger recomputation.

• bake and stew take the new argument dependson. Using this argument, the user can specify objects upon which the computation depends. These should be passed as unquoted variables; if there are multiple dependencies, they can be passed using c or list. Digests of these objects will be archived and checked against current values on subsequent calls. Thus, changing any dependency will automatically trigger recomputation.

• bake now archives the information pertinent to the bake call; this information is no longer returned along with the result of the computation (unless info=TRUE). Similarly, stew stores a list, “.ingredients”, in the file it creates. In the stew case, unlike all the other objects that are created by expr, this list is not by default loaded into the calling environment (e.g., the user's workspace). It will be loaded if the info flag is set to TRUE.

• freeze no longer stores the details of the RNG seed and kind as an attribute of the returned object.

• Fix bug in bsmc2 arising when some particles have zero likelihood. This is Issue #152. Thanks to Hola-Kwame Adrakey for reporting it.

• It is now possible to call partrans directly on an objective function, such as those created by traj_objfun, nlf_objfun, probe_objfun, or spect_objfun.

### Changes in pomp version 3.4

• The package manual and help pages has been streamlined.

• The mif2 diagnostic plots have been made more flexible.

• Some deprecated functions have been removed. These include cond.loglik, sliceDesign, runifDesign, sobolDesign, and profileDesign, which have been replaced by code.logLik, slice_design, runif_design, sobol_design, and profile_design, respectively.

• A bug in rgammawn has been fixed.

### Changes in pomp version 3.3

• The pomp C API has been expanded a bit, to facilitate other packages' linking to the pomp library.

### Changes in pomp version 3.2

• The help pages have been improved, with an description of the overall package structure and pages on basic model components, elementary algorithms, and estimation algorithms.

• A note to Windows users on avoiding certain C snippet compilation errors has been added to the help pages.

• The behavior of profile_design has changed. Previously, the same random (or sub-random) sequence was used for all non-profile parameters. Now, for each profile slice, a distinct set of points is generated.

• profileDesign, sliceDesign, runifDesign, and sobolDesign have been deprecated and will be removed in a future release. They are replaced by profile_design, slice_design, runif_design, and sobol_design, respectively.

### Changes in pomp version 3.1

• A new saved.states method allows one to extract the saved states from a particle filter computation.

• All instances of cond.loglik have been changed to cond.logLik, to remove a common source of typographical error.

• A new sequential importance sampling algorithm has been implemented as wpfilter. This is a generalization of the algorithm in pfilter in that it tracks the weights of the particles and allows the user to customize the resampling scheme.

• In mif2, the specification of particle numbers, Np, has changed. When Np is supplied as a function, Np(0) is the requested number of particles at the beginning of the time series. The previous behavior was that Np(1) specified the requested number of particles. This behavior now matches that of the other particle filtering algorithms, pfilter, bsmc2, and pmcmc.

• bsmc2 can now accept a variable number of particles, as do the other particle-filter based algorithms pfilter, pmcmc, and mif2.

• The internal systematic_resample function now allows the user to specify the number of samples desired. Previously, these were always equal to the number of weights supplied.

• As promised from version 2.4.1, the tol and max.fail arguments have been removed completely from all particle-filtering algorithms, including pfilter, pmcmc, bsmc2, and mif2. See the pomp news blog (https://kingaa.github.io/pomp/blog.html) for more information.

• The long-deprecated functions onestep.dens, onestep.sim, discrete.time.sim, euler.sim, gillespie.sim, gillespie.hl.sim, conv.rec, and values have been removed. These have been replaced as follows

 onestep.dens direct specification of dprocess component onestep.sim onestep discrete.time.sim discrete_time euler.sim euler gillespie.sim gillespie gillespie.hl.sim gillespie_hl conv.rec traces values as.data.frame or as(x,"data.frame")
• Trap error from non-finite likelihoods in pmcmc.

• New test of pmcmc codes in ‘tests/issue109.R’.

• Trap error from missing accumulator variables in trajectory.

### Changes in pomp version 2.8

• As promised, the default value of tol in the particle-filtering algorithms pfilter, pmcmc, mif2, and bsmc2 has been changed to zero. A warning continues to be issued if tol is set to anything other than 0. In a future release, the option to choose a nonzero tolerance will be removed entirely.

• The Euler step size in sir is now adjustable.

• In traces and diagnostic plotting methods, the nfail variable (tracking numbers of filtering failures) has been dropped.

### Changes in pomp version 2.7

• Another documentation bug was fixed.

### Changes in pomp version 2.6

• A documentation bug, identified by K. Hornik, was fixed.

### Changes in pomp version 2.5

• In anticipation of forthcoming algorithmic changes, the tol and max.fail arguments of pfilter, bsmc2, pmcmc, and mif2 are now deprecated. A warning is issued if tol is set to anything other than 0. In a future release, these options will be removed entirely: the behavior will be similar to that obtained in the present release by setting tol=0.

• A new example illustrating the accumvars argument has been provided.

• Internal computations now use increased precision for means, variances, and certain calculations with likelihoods.

• A new help page, pomp_examples, lists the various example datasets and pomp objects provided with the package.

### Changes in pomp version 2.4

• The source codes underlying specification of basic model components via R functions has been reworked to remove reliance on deep PROTECT stacks. Thanks to Thomas Kalibera for showing the way!

• A bug in the documentation for filter.traj, pointed out by Pierre Jacob, has been fixed.

### Changes in pomp version 2.3

• The C API for pomp is no longer explained only in comments in the “pomp.h” header file. It is now described and explained in the new C API vignette.

• The new pomp_cdir global option allows one to set the directory holding C snippet files globally.

• A bug caused by re-use of the cfile argument has been fixed. Re-use now triggers an error, with an informative message.

• Some documentation improvements.

### Changes in pomp version 2.2

• A bug in runifDesign (and therefore profileDesign when type="runif") has been fixed.

• There are now plot methods for objects of classes ‘probe_match_objfun’ and ‘spect_match_objfun’.

### Changes in pomp version 2.1

• The melt function can now be applied to arbitrary ‘pomp’ objects.

• A new function, runifDesign allows construction of design matrices using samples from multivariate uniform distributions.

• The profileDesign function takes a new argument, type, with two options: "sobol", the default, constructs the design using sobolDesign, as before. "runif" uses the new runifDesign function.

• A new example, comprising models and data for the 2014–2016 west African Ebola virus disease outbreak, is included. See ?ebola for details.

• It is now possible to adjust the observation times and zero-time in the sir and sir2 examples. One can also change the default RNG seed used in generating the simulated data.

• The codes underlying the rprocess workhorse have been streamlined to obviate an unnecessary copy operation. As a result, the interface to the rprocess workhorse has been changed.

• The interface to the new flow workhorse has been changed to match.

• The new flow workhorse allows integration/iteration of the deterministic skeleton at arbitrary times from an arbitrary initial condition.

• When coef is applied to a ‘listie’, the result can be more usefully melted.

• The probe-names returned by probe.acf and probe.ccf have changed.

• A bug, whereby the ‘coef’ method from other packages was masked, has been fixed.

• Errors in the documentation have been corrected.

• There is a new as.data.frame method for ‘listie’s.

• Some problems with the exposure of internal objects for package developers have been corrected.

• The magrittr pipe operator, %>%, is now re-exported.

• More examples have been included.

• Minor changes to error messages.

• The names of the ‘objfun’ methods have been changed to probe_objfun, spect_objfun, traj_objfun, and nlf_objfun.

• The package directory structure has been modified to include a new ‘examples’ directory, which holds the examples used in the documentation.

• The names of the ‘objfun’ methods have been shortened.

• It is now permissible that the sequence of observation times (and sequences of covariate times) be merely non-decreasing sequences. Previously, pomp insisted on strictly increasing time sequences.

• The default cooling schedule (cooling.type) in mif2 is now “geometric”, in contrast to “hyperbolic”, as before.

• pomp now requires at least R version 3.5.

• The zeronames argument has been renamed accumvars.

• In the course of ordinary work, one should never need to interact with the low-level pomp constructor function now.

• The pompExample function has been dropped. The various examples are now included as regular functions that construct ‘pomp’ objects.

• The bbs example has been dropped.

• One can now modify basic model components at (almost) any stage in a pipeline of pomp computations. All the top-level inference functions, plus probe, pfilter, and simulate now allow modification of basic model components.

• The rprocess plugins onestep.sim, discrete.time.sim, euler.sim, gillespie.sim, and gillespie.hl.sim have been renamed onestep, discrete_time, euler, gillespie, and gillespie_hl, respectively. The old usage is available but deprecated.

• One can now call simulate on a model without reference to any data.

• The covariate table facility (covariate_table) now supports piecewise constant interpolation.

• The syntax with which one includes covariates via covariate_table has become more flexible. Specifically, the arguments to covariate_table are now evaluated sequentially, so that later ones can depend on earlier ones. Once evaluated, the covariates are bound column-wise into a single data frame.

• The manner in which one writes R functions to specify basic model components has been totally changed. Before, one wrote functions that took specific arguments such as 'x', 'params', and 'covars'. Now, one writes such functions with any or all state variables, observables, covariates, and/or time as arguments.

• simulate now returns more informative results when simulations from multiple parameter sets are simultaneously computed. Specifically, if params has column names, these are used to identify the resulting simulations. Thus when format = "pomps" (the default), the names of the resulting list will be constructed from the column names of params. Likewise, when format = "arrays", the resulting arrays will have informative column names; When format = "data.frame", the identifier variable will make use of the column names.

• The basic particle filter, pfilter, has a simpler mode of operation: params should be a single parameter set only. That is, it is no longer possible to pass a matrix of parameters to pfilter.

• The Liu-West algorithm, bsmc2, has a simpler mode of operation: params should be a single parameter set only: the SMC particles are drawn from rprior.

• The as.data.frame, states, and obs options for simulate have been done away with. One now chooses the format of the returned simulations via the format argument. When one simulates at multiple parameter sets, list names, array dimnames, or identifying variables in the output data frame help to correlate simulations with parameter sets.

• The as.data.frame argument to trajectory has been removed in favor of a new format argument that allows one to choose between receiving the results in the form of an "array" or a "data.frame".

• All the basic model components now have defaults.

• The default rinit behavior remains as it was: it assumes the initial state distribution is concentrated at a point mass determined by parameters with “.0” or “_0” suffices.

• The default process model is “missing”: calls to dprocess and rprocess will result in missing values (NA).

• The default measurement model is “missing” as well.

• The default prior is flat and improper: all calls to the default dprior result in 1 (0 if log = TRUE, and all calls to rprior result in NA.

• The default skeleton is missing.

• The default parameter transformations remain the identity.

• The transform argument present in many pomp algorithms has been removed. Parameter transformations are now automatically performed when appropriate. The default parameter transformation remains the identity.

• The old probe.match and traj.match functions have been removed. The new approach to parameter estimation based on numerical optimization involves constructing stateful objective functions. There are now three of these: traj.match.objfun, probe.match.objfun, and spect.match.objfun.

• The documentation system has been thoroughly overhauled.

• In skeleton, the t argument has been replaced by times, to make this uniform with the other workhorse functions.

• Covariates are now included using the covariate_table construction, passed via the covar argument to pomp. The tcovar argument is no longer used.

• Instead of providing separate fromEstimationScale and toEstimationScale arguments to pomp, one now provides a single partrans argument constructed by means of the new function parameter_trans. In addition, references to “fromEstimationScale” and “toEstimationScale” have been abbreviated to “fromEst” and “toEst”, respectively, throughout the package.

• When writing C snippets for parameter transformations, the notation T_p refers to the value of p on the estimation scale. Thus, if parameter alpha is to be log-transformed for estimation, the toEst snippet would contain the line T_alpha = log(alpha); and the fromEst snippet would include alpha = exp(T_alpha);.

• The parameter_trans function now takes optional arguments log, logit, and barycentric, with names of parameters to be log-, logit-, and log-barycentric transformed, respectively.

• The measurement.model argument to pomp has been removed. It is now necessary to specify the measurement model directly using rmeasure and/or dmeasure.

• The initializer is no longer referred to by that name. It is now rinit, since it draws from the distribution of the latent state at the initial time. The low-level function init.state has been replaced by rinit.

• The conv.rec method has been deprecated, replaced by the new traces method.

• The euler.sir example has been renamed sir.

• The gillespie.sir example has been renamed sir2.

• The covmat method can now be applied to a probed.pomp object. It returns the estimated covariance matrix of the probes.

• When trajectory calls on deSolve routines to numerically integrate a model vectorfield, more informative error messages are generated, and diagnostics are printed when verbose = TRUE.

• The show method applied to pomp objects is now quite terse. To obtain detailed information, the spy method is available.

• The spy method now returns the information formerly displayed in a call to show, in addition to the C files associated with any C snippets.

• The use of \$ methods to access the slots of pomp S4 objects has now been removed. These classes are no longer exported (for the most part).

• The transform argument to the probe.quantile function has been removed (as it is entirely redundant!).

• The old and deprecated mif and bsmc methods have been removed.

### Changes in pomp version 1.19

• The obs and states arguments of simulate are deprecated and will be removed in a forthcoming release.

• The C-level interface for apply_probe_sims has changed: the new argument rho must be the “package:pomp” environment.

• A bug in pfilter (and hence pmcmc) when filter.traj=TRUE was discovered and fixed. In the buggy version, the filter trajectory was sampled with incorrect weights.

• Timo Voipio contributed a pull request that traps the error resulting from sannbox being passed a candidate.dist that is not a function.

• show and print methods have been made very terse: they simply report on the class of the object in question. To see more detailed information about a ‘pomp’ object, use spy.

• New (unexported) solibs<- method allows developers of packages extending pomp to incorporate C snippets into object that contain ‘pomp’ objects.

• New verbose option in trajectory gives diagnostic information from deSolve integration routines. Of course, this is pertinent only if the model skeleton is a vectorfield.

• Bug in the display of istate when deSolve::ode errors has been fixed.

• New hitch function facilitates construction of pomp.fun objects from R functions, C snippets, and links to external libraries.

• Native routines needed to access pomp.fun objects in C are now registered for use by other packages.

• coef(object) <- NULL, where object is of class ‘pomp’, erases any parameters stored in object.

• The euler.sir, gillespie.sir, blowflies, ricker, bbs, dacca, and rw2 examples are all now implemented using C snippets.

• A new ‘pomp_defines.h’ header is provided for developers of packages that depend on pomp.

• Internally, rprocess is no longer stored as an R function. The use of plugins is now required for the implementation of the rprocess component. Currently, there are five plugins available: onestep.sim, discrete.time.sim, euler.sim, gillespie.sim, and gillespie.hl.sim.

• The new hitch function automates the building and linking of C snippets and R functions into pomp.funs.

• The handling of dprocess has changed. The onestep.dens plugin is now deprecated and will soon be removed. dprocess is now specified directly using either a C snippet or an R function, in much the same way that, for example, dmeasure is specified.

• The old ‘forward’ and ‘inverse’ options for the dir argument of partrans have been dispensed with. The much more descriptive options ‘toEstimationScale’ and ‘fromEstimationScale’ remain.

• The C snippet compiling facilities have been thoroughly reworked.

• onestep.dens can now take a Csnippet specification of the process-model transition density.

### Changes in pomp version 1.18

• All inference functions can now take a list in the start or params arguments.

• When altering parameters in a call to probe on a probed.pomp object, the new parameters were ignored. This bug has been fixed.

• New spy method displays the C snippet file(s) associated with a pomp object.

• The long-deprecated seed argument to bsmc and bsmc2 has been removed.

• More work to obviate warnings generated by T. Kalibera's latest rchk checks.

### Changes in pomp version 1.17

• Messages from the compiler resulting from attempts to compile C snippets are now suppressed on all platforms except in case of failure. Setting verbose=TRUE forces display of these messages.

• Source codes have been revisited to obviate warnings generated by T. Kalibera's latest rchk checks.

• Fix a minor bugs in spect.

• Improve test coverage.

• spect.match has been refactored, with small changes to the interface.

• pomp now handles specification of workhorse functions (i.e., rprocess, dprocess, rmeasure, dmeasure, initializer, skeleton, rprior, dprior, fromEstimationScale, toEstimationScale) as NULL more consistently.

• Fix bug in systematic resampler when np != nw.

• Fix bug in conv.rec when only one parameter is requested.

• Correct and improve documentation for conv.rec.

• coef<- can now take a list of parameters: it simply applies unlist to turn the list into a numeric vector.

• Simplify conv.rec.

• In pfilter, Np is now a required argument unless params is specified as a matrix of particles. Thanks to Carles Breto for catching the unintended behavior.

### Changes in pomp version 1.16

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

### Changes in pomp version 1.15

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

### Changes in pomp version 1.14

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

• Fix buffer-flow problem identified by valgrind.

### Changes in pomp version 1.13

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

### Changes in pomp version 1.12

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

### Changes in pomp version 1.11

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

### Changes in pomp version 1.10

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

### Changes in pomp version 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.

### Changes in pomp version 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%.

### Changes in pomp version 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.

### Changes in pomp version 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).

### Changes in pomp version 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.

### Changes in pomp version 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.

### Changes in pomp version 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.

### Changes in pomp version 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.