| NEWS | R Documentation | 
News for package ‘pomp’
Changes in pomp version 6.3
- The built-in examples that use simulated data add a - seedargument to allow changing the simulated data.
Changes in pomp version 6.2
- The basic Kalman filter ( - kalmanFilter) has been refactored, with a roughly 3-fold speed up.
- Some internal changes have been made in anticipation of changes to the C API for R. 
Changes in pomp version 6.1
- In calls to pomp elementary and inference algorithms, it is now necessary to pass all arguments by name. This has always been good practice, but from this release, calls that rely on the position of arguments will typically generate errors. 
- From version 5.8.4, the manner in which extra model elements ( - userdata) are supplied has changed. As of that version, use of the old method generated a warning. As of this version, an error will be generated. To supply additional elements (i.e., beyond parameters, latent-state variables, observations, and covariates) to the basic model components, provide them as a list via the- userdataargument.
- It is now possible to specify more than one lag in the - ivpfunction, which is evaluated only when the- mif2perturbations are specified. See- ?mif2.
- The new function - append_dataappends a data frame to an existing CSV file (creating the file if it does not exist). This facilitates keeping a database of parameter-space explorations.
- The new function - eeulermultinomgives the expectation of an Euler-multinomial random variable.
- A new addition to the C API allows one to easily compute the expectation of the Euler-multinomial. The function is - eeulermultinom.
- The - save.statesoption to- pfilterhas changed. See- ?pfilterand- ?saved_statesfor details.
- The help-page discussion of accumulator variables has been expanded and clarified. 
Changes in pomp version 5.11
- An improper typecast in the C snippet system, which was resolvable by many compilers but threw an error under recent versions of clang on MacOS, has been repaired. 
Changes in pomp version 5.10
- The rprocess plugin - onestepnow always takes exactly one step to get from one observation time to the next, even when the interval between them is zero. That is, if- Pis a ‘pomp’ object with an rprocess built using- rprocess=onestep(f),- t0=timezero(P), and- t=time(P), then- fwill be called exactly once for the interval (- t0,- t[1]) and once for each of the intervals (- t[i-1],- t[i]),- i=2,...,length(t).
Changes in pomp version 5.9
- To add additional elements for use by the basic model components (i.e., “userdata”), the - userdataargument should now be used. The old behavior will still work, but will generate a warning. In a future release, this will become an error.
- Internally, pomp codes no longer include ‘Rinternal.h’. 
- A bug in covariate-table extrapolation for the case - order="constant"has been fixed.
- A new experimental function - repair_lookup_tableis provided to help eliminate unnecessary warnings about extrapolation.
- Functions with names that include dots ( - .), which have been defunct since version 4.7, have been expunged.
Changes in pomp version 5.8
- The - err()and- warn()C-level macros have been redefined to forestall problems that would arise when these macros are included in C++ code under forthcoming versions of R.
- More changes in C codes to forestall issues detected by rchk. 
- Minor corrections to documentation. 
Changes in pomp version 5.7
- Minor corrections to documentation. 
- Changes in some C codes to avoid issues detected by rchk. 
- Fixed bug in - wquantintroduced by changes in- pbetawith R version 4.3.3.
Changes in pomp version 5.6
- Minor corrections to documentation. 
- C-level functions - set_pomp_userdataand- unset_pomp_userdataare no longer exported.
-  bspline_evalis no longer exported.
Changes in pomp version 5.5
- There is now access to ordinary B-spline basis functions (and their derivatives) at the C snippet level. It will still almost always be preferable to construct a spline basis once and pass it to pomp functions as part of a - covariate_table, but this functionality may occasionally be useful.
-  bspline_evalis now deprecated as part of the pomp C API.
- The formatting of some printed messages has been modified to forestall warnings in the latest R-devel. 
- Stateful objective functions (class ‘objfun’) now behave as if they are ‘pomp’ objects. 
- C-level functions - set_pomp_userdataand- unset_pomp_userdataare deprecated. The latter now generates a warning.
Changes in pomp version 5.4
-  stewnow returns timing information by default.
- The spurious warnings associated with NULL - userdatahave been eliminated.
Changes in pomp version 5.3
- The new option - on_loadallows one to specify a C snippet that will be executed at the time the C snippet library is loaded.
- Internally, the - userdataare made available via calls to- pompLoadrather than within each call to a pomp workhorse.
- The data frames returned by - cond_logLikand- eff_sample_sizewhen- format="data.frame"have been improved. In particular, they contain (as variable- time) the times (rather than the index of the time vector as before).
- Changes to the report generated by - spy.
- Some documentation improvements. 
- The manual pages have been reorganized, with improved cross-linking. 
- A bug in - filter_trajetc. arising when not all state variables have names was fixed.
- This version adds the new basic component - dinitfor evaluating the probability density function of the initial-state distribution. There is a corresponding workhorse function,- dinit().
- The constructor - pompnow takes the optional argument- nstatevars, which can be used to increase the dimension of the latent state-vectors created by- rinit. By default,- nstatevars = length(statenames), and- nstatevarscan only be used to increase, not to decrease, the dimension of the latent state process. Moreover,- nstatevarshas no effect if the- rinitbasic component is furnished as an R function.
- Name checking on internally-created vectors and arrays is less strict than previously. In particular, it is possible to have variables without names (i.e., - "").
-  reulermultinomnow returnsNArather thanNaN, in keeping with the behavior ofrbinom. Thanks to John Drake for calling attention to this issue.
Changes in pomp version 5.2
- A bug in - stewresulting in namespace conflicts has been repaired.
- We no longer import directly from tidyverse functions. This reduces the list of packages upon which pomp depends from 20 to 5. This does introduce a dependency on the data.table package. 
Changes in pomp version 5.1
- When the archive directory does not exist, - bakeand- stewnow create it.
- We no longer import from plyr. 
- The - dimnamesattributes of various arrays that appear in pomp, including arrays of observables, state variables, parameters, covariates, and so on, have been made uniform. In particular, when a dimension of an array corresponds to variables with different names, this dimension is itself named “name”. Previously, its name was sometimes “variable” and sometimes “parameter”. This change is meant to streamline interaction with the tidyverse.
- Some minor bugfixes. 
Changes in pomp version 4.7
- Functions with names.that.contain.dots that have been deprecated since version 4.5.1 are now defunct. Attempts to use such functions will generate an error with a message indicating the replacement function. 
-  plotnow removesNA.
- Better handling of ‘listie’s (lists of ‘pomp’ objects). 
- New - concatfunction to turn lists of ‘pomp’ objects into ‘listies’.
- Bug fix in - filter_trajapplied to ‘pfilterList’ and ‘pmcmcList’ objects.
- The - statesand- obsmethods take a new optional argument,- format. Setting- format="data.frame"causes the method to return the states or data in a convenient data-frame format.
- When - meltis applied to a list, the identifier variable is now “- .Lx”, where- xdenotes the level. This applies when- as.data.frameis used to coerce a list of ‘pomp’ objects, and when- saved_statesis used to extract the particles from a list of ‘pfilterd_pomp’ objects.
Changes in pomp version 4.6
-  logmeanexpcan now compute the effective sample size, which can be useful in determining the reliability of its estimate. To do so, setess=TRUEin a call tologmeanexp.
-  logmeanexpnow returns a fully-named vector when eitherse=TRUEoress=TRUE.
- A new - formatargument has been added to the extractor functions- cond_logLik,- eff_sample_size,- filter_mean,- filter_traj,- forecast,- pred_mean,- pred_var, and- saved_states. This allows the user to extract the relevant elements in data-frame format if desired.
-  pomp no longer depends on the superseded package reshape2. The meltfunction for converting arrays and nested lists into data frames is accordingly no longer re-exported from reshape2. It has been replaced by a stricter version ofmelt.
- The magrittr pipe - %>%is no longer re-exported by pomp: use the native R pipe- |>instead.
- The package now requires R version 4.1 at least. 
- All pomp functions with names.that.contain.dots have been deprecated in favor of functions in ‘snake_case’. This is to avoid anticipated problems with CRAN checks, which (falsely) assume that certain functions with dotted.names are S3 methods. From this point, no exported pomp function has such a name. 
- The - dimnamesattributes for some of the arrays computed in- pfilterand- pmcmccomputations have changed. In particular, whereas in previous versions, the- timedimension was given names that were character strings composed of decimal representations of the time (difficult to work with and prone to roundoff error), the- timedimension now is not given names.
- A bug that resulted in - gompertzgiving different simulations on Windows machines has been fixed.
Changes in pomp version 4.5
- A bug in trajectory computation for maps (discrete-time dynamical systems) has been fixed. Thanks to Felicia Magpantay for noticing it and tracking it down. 
- Minor documentation improvements. 
- The weighted quantile function - wquantnow uses the Harrell-Davis estimator instead of the type-7 estimator used previously. This eliminates bugs associated with non-integer weights.
- It is now possible to retrieve the weighted particles computed in the course of a - pfiltercomputation. To accomplish this, set- save.states="weighted"in the call to- pfilterand retrieve the particles and their weights using- saved.states. Previously, one could obtain only the unweighted particles.
- Some documentation improvements. 
Changes in pomp version 4.4
- The new function - wquantcomputes weighted quantiles.
- The precise order in which the - pmcmcfunction computes prior and likelihood of furnished and proposed parameters has changed slightly. This prevents proposals that are incompatible with the prior from being passed to- pfilterand forestalls an associated class of errors. A consequence of this change,- pmcmccomputations using the new version will differ very slightly from previous computations, even with the RNG seed fixed at its previous values.
- There is now a C interface to the - bspline_evalfunction. See the pomp C API documentation for details.
- The - bspline.basisfunction now takes the optional argument- rgwhich allows one to specify the range over which the basis will be constructed. By default, this is- range(x), which agrees with the behavior in earlier versions.
- Documentation improvements. 
Changes in pomp version 4.3
- The archiving functions - bakeand- stewnow use a slightly less exacting comparison of the expression,- expr, they are furnished. NB: Running- bakeor- stewwith archives created by earlier versions may result in recomputation.
- The - timemethod has been extended to- pompListand related objects.
- All workhorse functions except - partranshave new default arguments.
- Some documentation improvements. 
- The archiving functions - bakeand- stewnow 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- bakeand- stew.
- Documentation repair of issue flagged by Kurt Hornik (9 June 2022). 
Changes in pomp version 4.2
- Minor changes, invisible to the user. 
- Minor changes to the C codes to keep up with R-devel. 
- Minor changes in the implementation of - bakeand- stew.
Changes in pomp version 4.1
- Change in the names of the variables returned by - as.data.frameapplied 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 - rbetabinomand- dbetabinomfunctions, 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.
-  parmatcan now take a data frame of parameters and convert it into a matrix suitable for furnishing to theparamsargument of any pomp function.
- It is now possible to change the parameters in an ‘objfun’ (objective function) object using - coef(object)<-value.
-  parmatnow 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.
-  bakeandstewnow 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- emeasureand- vmeasurebasic components to compute an approximation of the linear relationship between the latent state and the observed variables.
- The - forecastmethod now works for- pfiterd_pompobjects (i.e., results of- pfilter,- pmcmc, or- mif2computations).
- 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 - mcapfunction.
- The default return-value format for - trajectorynow 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 - trajectorynow 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- trajectoryjust 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_controlargument 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 - statesand- obsmethods now work for lists of ‘pomp’ objects (‘listies’).
- The workhorse function - flownow has default arguments.
- The stateful objective function created by - traj_objfunhas 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_objfunnow 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 - rpriorarising with integer-valued return vectors.
- Major improvements to the package manual, including richer cross-linking and better organization. 
- When - simulateis 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
-  baketakes a new option,timing, that controls whether information on the timing is returned or merely stored. By default, this is set toTRUE, though this default behavior may change in future.
- When they encounter an archive produced by an older version, - bakeand- stewnow update the archive in the new format. Recomputation should never be triggered in this case: If recomputation is desired, delete the archive file.
-  bakeandstewnow archive a digest of the code inexprand on subsequent calls check to see if the archived version matches the current version. Thus, changes to the code automatically trigger recomputation.
-  bakeandstewtake the new argumentdependson. 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 usingcorlist. Digests of these objects will be archived and checked against current values on subsequent calls. Thus, changing any dependency will automatically trigger recomputation.
-  bakenow archives the information pertinent to thebakecall; this information is no longer returned along with the result of the computation (unlessinfo=TRUE). Similarly,stewstores a list, “.ingredients”, in the file it creates. In thestewcase, unlike all the other objects that are created byexpr, this list is not by default loaded into the calling environment (e.g., the user's workspace). It will be loaded if theinfoflag is set toTRUE.
-  freezeno longer stores the details of the RNG seed and kind as an attribute of the returned object.
- Fix bug in - bsmc2arising when some particles have zero likelihood. This is Issue #152. Thanks to Hola-Kwame Adrakey for reporting it.
- It is now possible to call - partransdirectly 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 - mif2diagnostic 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 - rgammawnhas 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_designhas 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, andsobolDesignhave been deprecated and will be removed in a future release. They are replaced byprofile_design,slice_design,runif_design, andsobol_design, respectively.
Changes in pomp version 3.1
- A new - saved.statesmethod allows one to extract the saved states from a particle filter computation.
- All instances of - cond.loglikhave 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- pfilterin 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- Npis 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.
-  bsmc2can now accept a variable number of particles, as do the other particle-filter based algorithmspfilter,pmcmc, andmif2.
- The internal - systematic_resamplefunction 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 - toland- max.failarguments 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- valueshave been removed. These have been replaced as follows- onestep.dens- direct specification of - dprocesscomponent- 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.frameor- as(x,"data.frame")
- Trap error from non-finite likelihoods in - pmcmc.
- New test of - pmcmccodes in ‘tests/issue109.R’.
- Trap error from missing accumulator variables in - trajectory.
Changes in pomp version 2.8
- As promised, the default value of - tolin the particle-filtering algorithms- pfilter,- pmcmc,- mif2, and- bsmc2has been changed to zero. A warning continues to be issued if- tolis 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 - siris now adjustable.
- In traces and diagnostic plotting methods, the - nfailvariable (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 - toland- max.failarguments of- pfilter,- bsmc2,- pmcmc, and- mif2are now deprecated. A warning is issued if- tolis 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 - accumvarsargument 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 - PROTECTstacks. 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_cdirglobal option allows one to set the directory holding C snippet files globally.
- A bug caused by re-use of the - cfileargument 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- profileDesignwhen- type="runif") has been fixed.
- There are now - plotmethods for objects of classes ‘probe_match_objfun’ and ‘spect_match_objfun’.
Changes in pomp version 2.1
- The - meltfunction can now be applied to arbitrary ‘pomp’ objects.
- A new function, - runifDesignallows construction of design matrices using samples from multivariate uniform distributions.
- The - profileDesignfunction takes a new argument,- type, with two options:- "sobol", the default, constructs the design using- sobolDesign, as before.- "runif"uses the new- runifDesignfunction.
- A new example, comprising models and data for the 2014–2016 west African Ebola virus disease outbreak, is included. See - ?ebolafor details.
- It is now possible to adjust the observation times and zero-time in the - sirand- sir2examples. One can also change the default RNG seed used in generating the simulated data.
- The codes underlying the - rprocessworkhorse have been streamlined to obviate an unnecessary copy operation. As a result, the interface to the- rprocessworkhorse has been changed.
- The interface to the new - flowworkhorse has been changed to match.
- The new - flowworkhorse allows integration/iteration of the deterministic skeleton at arbitrary times from an arbitrary initial condition.
- When - coefis applied to a ‘listie’, the result can be more usefully- melted.
- The probe-names returned by - probe.acfand- probe.ccfhave 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.framemethod 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- mif2is now “geometric”, in contrast to “hyperbolic”, as before.
-  pomp now requires at least R version 3.5. 
- The - zeronamesargument has been renamed- accumvars.
- In the course of ordinary work, one should never need to interact with the low-level - pompconstructor function now.
- The - pompExamplefunction has been dropped. The various examples are now included as regular functions that construct ‘pomp’ objects.
- The - bbsexample 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- simulatenow allow modification of basic model components.
- The - rprocessplugins- onestep.sim,- discrete.time.sim,- euler.sim,- gillespie.sim, and- gillespie.hl.simhave been renamed- onestep,- discrete_time,- euler,- gillespie, and- gillespie_hl, respectively. The old usage is available but deprecated.
- One can now call - simulateon 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_tablehas become more flexible. Specifically, the arguments to- covariate_tableare 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. 
-  simulatenow returns more informative results when simulations from multiple parameter sets are simultaneously computed. Specifically, ifparamshas column names, these are used to identify the resulting simulations. Thus whenformat = "pomps"(the default), the names of the resulting list will be constructed from the column names ofparams. Likewise, whenformat = "arrays", the resulting arrays will have informative column names; Whenformat = "data.frame", the identifier variable will make use of the column names.
- The basic particle filter, - pfilter, has a simpler mode of operation:- paramsshould 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:- paramsshould be a single parameter set only: the SMC particles are drawn from- rprior.
- The - as.data.frame,- states, and- obsoptions for- simulatehave been done away with. One now chooses the format of the returned simulations via the- formatargument. 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.frameargument to- trajectoryhas been removed in favor of a new- formatargument 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 - rinitbehavior 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 - dprocessand- rprocesswill 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 - dpriorresult in- 1(- 0if- log = TRUE, and all calls to- rpriorresult in- NA.
- The default skeleton is missing. 
- The default parameter transformations remain the identity. 
 
- The - transformargument 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.matchand- traj.matchfunctions 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- targument has been replaced by- times, to make this uniform with the other workhorse functions.
- Covariates are now included using the - covariate_tableconstruction, passed via the- covarargument to- pomp. The- tcovarargument is no longer used.
- Instead of providing separate - fromEstimationScaleand- toEstimationScalearguments to- pomp, one now provides a single- partransargument 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_prefers to the value of- pon the estimation scale. Thus, if parameter- alphais to be log-transformed for estimation, the- toEstsnippet would contain the line- T_alpha = log(alpha);and the- fromEstsnippet would include- alpha = exp(T_alpha);.
- The - parameter_transfunction now takes optional arguments- log,- logit, and- barycentric, with names of parameters to be log-, logit-, and log-barycentric transformed, respectively.
- The - measurement.modelargument to- pomphas been removed. It is now necessary to specify the measurement model directly using- rmeasureand/or- dmeasure.
- The - initializeris 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.statehas been replaced by- rinit.
- The - conv.recmethod has been deprecated, replaced by the new- tracesmethod.
- The - euler.sirexample has been renamed- sir.
- The - gillespie.sirexample has been renamed- sir2.
- The - covmatmethod can now be applied to a- probed.pompobject. It returns the estimated covariance matrix of the probes.
- When - trajectorycalls on deSolve routines to numerically integrate a model vectorfield, more informative error messages are generated, and diagnostics are printed when- verbose = TRUE.
- The - showmethod applied to pomp objects is now quite terse. To obtain detailed information, the- spymethod is available.
- The - spymethod 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 - transformargument to the- probe.quantilefunction has been removed (as it is entirely redundant!).
- The old and deprecated - mifand- bsmcmethods have been removed.
Changes in pomp version 1.19
- The - obsand- statesarguments of- simulateare deprecated and will be removed in a forthcoming release.
- The C-level interface for - apply_probe_simshas changed: the new argument- rhomust be the “package:pomp” environment.
- A bug in - pfilter(and hence- pmcmc) when- filter.traj=TRUEwas 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 - sannboxbeing passed a- candidate.distthat is not a function.
-  showandprintmethods 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, usespy.
- New (unexported) - solibs<-method allows developers of packages extending pomp to incorporate C snippets into object that contain ‘pomp’ objects.
- New - verboseoption in- trajectorygives diagnostic information from deSolve integration routines. Of course, this is pertinent only if the model skeleton is a vectorfield.
- Bug in the display of - istatewhen- deSolve::odeerrors has been fixed.
- New - hitchfunction facilitates construction of- pomp.funobjects from R functions, C snippets, and links to external libraries.
- Native routines needed to access - pomp.funobjects in C are now registered for use by other packages.
-  coef(object) <- NULL, whereobjectis of class ‘pomp’, erases any parameters stored inobject.
- The - euler.sir,- gillespie.sir,- blowflies,- ricker,- bbs,- dacca, and- rw2examples are all now implemented using C snippets.
- A new ‘pomp_defines.h’ header is provided for developers of packages that depend on pomp. 
- Internally, - rprocessis no longer stored as an R function. The use of plugins is now required for the implementation of the- rprocesscomponent. Currently, there are five plugins available:- onestep.sim,- discrete.time.sim,- euler.sim,- gillespie.sim, and- gillespie.hl.sim.
- The new - hitchfunction automates the building and linking of C snippets and R functions into- pomp.funs.
- The handling of - dprocesshas changed. The- onestep.densplugin is now deprecated and will soon be removed.- dprocessis now specified directly using either a C snippet or an R function, in much the same way that, for example,- dmeasureis specified.
- The old ‘forward’ and ‘inverse’ options for the - dirargument of- partranshave been dispensed with. The much more descriptive options ‘toEstimationScale’ and ‘fromEstimationScale’ remain.
- The C snippet compiling facilities have been thoroughly reworked. 
-  onestep.denscan now take aCsnippetspecification of the process-model transition density.
Changes in pomp version 1.18
- All inference functions can now take a list in the - startor- paramsarguments.
- When altering parameters in a call to - probeon a- probed.pompobject, the new parameters were ignored. This bug has been fixed.
-  mif2,pfilter,probe,probe.match, andprobe.match.objfuncan now gracefully handle a list in thestartorparamsarguments.
- New - spymethod displays the C snippet file(s) associated with a- pompobject.
- The long-deprecated - seedargument to- bsmcand- bsmc2has been removed.
- More work to obviate warnings generated by T. Kalibera's latest - rchkchecks.
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=TRUEforces display of these messages.
- Source codes have been revisited to obviate warnings generated by T. Kalibera's latest - rchkchecks.
- Fix a minor bugs in - spect.
- Improve test coverage. 
-  spect.matchhas been refactored, with small changes to the interface.
-  pompnow handles specification of workhorse functions (i.e.,rprocess,dprocess,rmeasure,dmeasure,initializer,skeleton,rprior,dprior,fromEstimationScale,toEstimationScale) asNULLmore consistently.
- Fix bug in systematic resampler when - np != nw.
- Fix bug in - conv.recwhen only one parameter is requested.
- Correct and improve documentation for - conv.rec.
-  coef<-can now take a list of parameters: it simply appliesunlistto turn the list into a numeric vector.
- Simplify - conv.rec.
- In - pfilter,- Npis now a required argument unless- paramsis 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 - bakeor- freezereturn- 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.typeand- skelmap.delta.targuments of the- pompconstructor, 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 - pompis called with a single-row data frame. This has been fixed using his contributed patch.
Changes in pomp version 1.15
- A new - dmultinomfunction 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 - hmaxto- gillespie.simallows 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.basisandperiodic.bspline.basisnow take an optional non-negative integer argumentderiv. Whenderiv > 0, the order-derivderivative 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.
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.simand 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 - rchkchecks.
- 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 - dmeasurereturns 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- freezenow 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- timesargument.
Changes in pomp version 1.10
- New - logLikmethod for- pmcmcListobjects.
- The deprecated option to supply a matrix or numeric vector as the - dataargument to- pomphave been removed and an error is now generated.- datamust be provided as either a data frame or an object of class- pomp. See- ?pompfor details.
- The deprecated - skeleton.typeand- skelmap.delta.targuments to- pomphave 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 - dmeasurevalues 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 - mif2arising 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 - ploton- pompobjects with more than 10 variables to plot.
- Added the - shlib.argsoption to- pomp, allowing arbitrary options to be passed to the compiler when C snippets are used.
- Modified the “dacca” example to use C snippets. 
- Refactored - rw.sdfor 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 - showand- printmethods for- pompobjects.
- 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. 
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 - pomphelp page, which now has comprehensive instructions on building a- pompobject.
- 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 - rprocesscalled- 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 - dataargument to- pompare now deprecated and will be removed in a future release. In calls to- pomp,- datashould be either a data frame or a- pomp-class object.
- In - mif2, it is now required that- Nmif>0.
- Redundant - bootstrapargument to- nlfhas been removed.
- Many improvements to the test suite to obtain better code coverage. 
- Fixed bugs that might arise in rare circumstances in - simulateand- eulermultinomfunctions.
- 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. 
-  pompis no longer an S4 method. Its new status as an ordinary function abbreviates and consolidates the code and simplifies the documentation.
- Some minor improvements to error messages. 
- A bug restricting access in C code to - userdatahas 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.typeand- skelmap.delta.tare deprecated and will be removed in a future release.
- The - pfilterhelp page has been improved. Specifically, the discussion of filtering failures is better.
- Miscellaneous improvements to the help pages. 
-  mif2no longer computes filter means.
- The new argument - showof- pompExamplesallows one to display the example code instead of executing it.
- The minimum version of R supported is now 3.1.2. 
-  init.statenow has the optional argumentnsim. Using this, one can request multiple initial state vectors per parameter vector.
-  pfilternow uses less memory when it is asked to run at a single point in parameter space.
- A bug associated with the - rw.sdargument to- mif2on Windows platforms has been fixed.
- The - method="mif2"option to- mifhas been removed. Use- mif2instead.
- The - particlesmethod (rarely if ever used), has been removed to streamline the- mifcodes.
- The - method="mif2"option to- mifis now deprecated. It will be removed in a future release. Use- mif2instead.
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.recon the results of amif2computation now play nicely withreshape2::melt.
- It is now possible to direct - pompto place- Csnippetcodes in a specified location. This is accomplished via the new- cdirand- cfilearguments to- pomp.
- When several concurrent R processes attempt to simultaneously compile - Csnipetcode from copies of a- pompobject on the same machine, a race condition exists. This release fixes this by ensuring that- Csnippetcodes are written and compiled in a process-specific directory.
Changes in pomp version 1.3
This release removes several long-deprecated features.
- The - seedargument to- pfilterhas been removed. Use- freezeto obtain similar functionality.
- The redundant - parsargument to- mifhas been removed. Names of parameters to be estimated are taken from the nonzero entries of- rw.sd. Initial-value parameters are designated using the- ivpsargument.
- The old - parameter.transformand- parameter.inv.transformarguments to- pomphave been removed. They were superseded by the arguments- fromEstimationScaleand- toEstimationScalein version 0.65-1.
- Some internal changes to - mif2by 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.varmethods dropped the singleton dimension of the respective arrays, in conflict with the assumptions of certain- plotmethods. This resolves issue #3.
- Documentation improvements. Specifically, the details of how step-sizes are chosen in the - euler.sim,- discrete.time.sim, and- onestep.simplugins has been spelled out explicitly. Also, incompleteness in the- sannboxdocumentation has been corrected.
- Provide - filter.trajmethod for- pmcmcListobjects.
- Fixed a bug in - mifand- mif2when- cooling.type="hyperbolic"and- cooling.fraction.50=1.