Changes in version 6.3.1 o coef can now extract parameters by name from a ‘listie’. Changes in version 6.2.1 o The built-in examples that use simulated data add a seed argument to allow changing the simulated data. Changes in version 6.1.1 o The basic Kalman filter (kalmanFilter) has been refactored, with a roughly 3-fold speed up. o Some internal changes have been made in anticipation of changes to the C API for R. Changes in version 6.0.5 o It is now possible to specify more than one lag in the ivp function, which is evaluated only when the mif2 perturbations are specified. See ?mif2. Changes in version 6.0.4 o The new function append_data appends 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. Changes in version 6.0.3 o The new function eeulermultinom gives the expectation of an Euler-multinomial random variable. Changes in version 6.0.2 o The save.states option to pfilter has changed. See ?pfilter and ?saved_states for details. Changes in version 6.0.1 o 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. Changes in version 6.0.0 o 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 userdata argument. Changes in version 5.11.1 o A new addition to the C API allows one to easily compute the expectation of the Euler-multinomial. The function is eeulermultinom. o The help-page discussion of accumulator variables has been expanded and clarified. Changes in version 5.10.1 o 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 version 5.9.1 o The rprocess plugin onestep now 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 P is a ‘pomp’ object with an rprocess built using rprocess=onestep(f), t0=timezero(P), and t=time(P), then f will 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 version 5.8.4 o To add additional elements for use by the basic model components (i.e., “userdata”), the userdata argument should now be used. The old behavior will still work, but will generate a warning. In a future release, this will become an error. Changes in version 5.8.3 o Internally, pomp codes no longer include Rinternal.h. Changes in version 5.8.2 o A bug in covariate-table extrapolation for the case order="constant" has been fixed. o A new experimental function repair_lookup_table is provided to help eliminate unnecessary warnings about extrapolation. Changes in version 5.8.1 o Functions with names that include dots (.), which have been defunct since version 4.7, have been expunged. Changes in version 5.7.1 o 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. o More changes in C codes to forestall issues detected by rchk. o Minor corrections to documentation. Changes in version 5.6.1 o Minor corrections to documentation. o Changes in some C codes to avoid issues detected by rchk. o Fixed bug in wquant introduced by changes in pbeta with R version 4.3.3. Changes in version 5.5.2 o Minor corrections to documentation. Changes in version 5.5.1 o C-level functions set_pomp_userdata and unset_pomp_userdata are no longer exported. o bspline_eval is no longer exported. Changes in version 5.4.4 o C-level functions set_pomp_userdata and unset_pomp_userdata have been temporarily restored. The latter generates a warning. Changes in version 5.4.3 o 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. o bspline_eval is now deprecated as part of the pomp C API. o The formatting of some printed messages has been modified to forestall warnings in the latest R-devel. Changes in version 5.4.2 o Stateful objective functions (class ‘objfun’) now behave as if they are ‘pomp’ objects. Changes in version 5.4.1 o C-level functions set_pomp_userdata and unset_pomp_userdata are no longer exported. Changes in version 5.3.1 o stew now returns timing information by default. o The spurious warnings associated with NULL userdata have been eliminated. Changes in version 5.2.5 o The new option on_load allows one to specify a C snippet that will be executed at the time the C snippet library is loaded. o Internally, the userdata are made available via calls to pompLoad rather than within each call to a pomp workhorse. Changes in version 5.2.4 o The data frames returned by cond_logLik and eff_sample_size when 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). o Changes to the report generated by spy. o Some documentation improvements. Changes in version 5.2.3 o The manual pages have been reorganized, with improved cross-linking. o A bug in filter_traj etc. arising when not all state variables have names was fixed. Changes in version 5.2.2 o This version adds the new basic component dinit for evaluating the probability density function of the initial-state distribution. There is a corresponding workhorse function, dinit(). o The constructor pomp now 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 nstatevars can only be used to _increase_, not to decrease, the dimension of the latent state process. Moreover, nstatevars has no effect if the rinit basic component is furnished as an R function. o 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., ""). Changes in version 5.2.1 o reulermultinom now returns NA rather than NaN, in keeping with the behavior of rbinom. Thanks to John Drake for calling attention to this issue. Changes in version 5.1.1 o A bug in stew resulting in namespace conflicts has been repaired. o 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 version 5.0.1 o When the archive directory does not exist, bake and stew now create it. Changes in version 5.0.0 o We no longer import from plyr. o The dimnames attributes 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. o Some minor bugfixes. Changes in version 4.7.0 o 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. o plot now removes NA. Changes in version 4.6.4 o Better handling of ‘listie’s (lists of ‘pomp’ objects). o New concat function to turn lists of ‘pomp’ objects into ‘listies’. Changes in version 4.6.3 o Bug fix in filter_traj applied to ‘pfilterList’ and ‘pmcmcList’ objects. Changes in version 4.6.2 o The states and obs methods 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. Changes in version 4.6.1 o When melt is applied to a list, the identifier variable is now “.Lx”, where x denotes the level. This applies when as.data.frame is used to coerce a list of ‘pomp’ objects, and when saved_states is used to extract the particles from a list of ‘pfilterd_pomp’ objects. Changes in version 4.5.3 o logmeanexp can now compute the effective sample size, which can be useful in determining the reliability of its estimate. To do so, set ess=TRUE in a call to logmeanexp. o logmeanexp now returns a fully-named vector when either se=TRUE or ess=TRUE. Changes in version 4.5.2 o A new format argument 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. o pomp no longer depends on the superseded package reshape2. The melt function 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 of melt. o The magrittr pipe %>% is no longer re-exported by pomp: use the native R pipe |> instead. o The package now requires R version 4.1 at least. Changes in version 4.5.1 o 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. o The dimnames attributes for some of the arrays computed in pfilter and pmcmc computations have changed. In particular, whereas in previous versions, the time dimension was given names that were character strings composed of decimal representations of the time (difficult to work with and prone to roundoff error), the time dimension now is not given names. o A bug that resulted in gompertz giving different simulations on Windows machines has been fixed. Changes in version 4.4.3 o 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. o Minor documentation improvements. Changes in version 4.4.2 o The weighted quantile function wquant now uses the Harrell-Davis estimator instead of the type-7 estimator used previously. This eliminates bugs associated with non-integer weights. Changes in version 4.4.1 o It is now possible to retrieve the weighted particles computed in the course of a pfilter computation. To accomplish this, set save.states="weighted" in the call to pfilter and retrieve the particles and their weights using saved.states. Previously, one could obtain only the unweighted particles. Changes in version 4.4.0 o Some documentation improvements. Changes in version 4.3.4 o The new function wquant computes weighted quantiles. Changes in version 4.3.3 o The precise order in which the pmcmc function 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 pfilter and forestalls an associated class of errors. A consequence of this change, pmcmc computations using the new version will differ very slightly from previous computations, even with the RNG seed fixed at its previous values. Changes in version 4.3.2 o There is now a C interface to the bspline_eval function. See the pomp C API documentation for details. Changes in version 4.3.1 o The bspline.basis function now takes the optional argument rg which 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. o Documentation improvements. Changes in version 4.2.2 o 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. o The time method has been extended to pompList and related objects. o All workhorse functions except partrans have new default arguments. o Some documentation improvements. Changes in version 4.2.1 o 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. o A new global option, pomp_archive_dir, can be used to specify the locations of archive files used by bake and stew. o Documentation repair of issue flagged by Kurt Hornik (9 June 2022). Changes in version 4.2.0 o Minor changes, invisible to the user. o Minor changes to the C codes to keep up with R-devel. Changes in version 4.1.0 o Minor changes to the C codes to keep up with R-devel. o Minor changes in the implementation of bake and stew. Changes in version 4.0.11 o Change in the names of the variables returned by as.data.frame applied to a ‘pfilterd.pomp’ object. o Fixed bug found by Jesse Wheeler and Ed Ionides, to do with `simulate()` with `include.data=TRUE`. Changes in version 4.0.10 o It is now possible to plot lists of ‘pomp’ and ‘pomp’-derived objects using a single call to plot. Changes in version 4.0.9 o The rbetabinom and dbetabinom functions, long present as part of the C API, are now available as R functions. Changes in version 4.0.8 o The SIR examples sir() and sir2() now use a negative binomial measurement model. Changes in version 4.0.7 o 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. Changes in version 4.0.6 o It is now possible to change the parameters in an ‘objfun’ (objective function) object using coef(object)<-value. Changes in version 4.0.5 o parmat now takes an optional argument, names, which allows the user to name the parameter sets. o Independent realizations of the stochastic processes modeled in pomp are now distinguished by different values of .id. This behavior is now uniform throughout. o bake and stew now send messages instead of warnings when they recompute an archive due to a change in code or dependencies. Changes in version 4.0.4 o 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. o The forecast method now works for pfiterd_pomp objects (i.e., results of pfilter, pmcmc, or mif2 computations). Changes in version 4.0.3 o 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. o The basic (linear, Gaussian) Kalman filter is now available as kalmanFilter. Changes in version 4.0.2 o Computation of Monte Carlo-adjusted profile likelihood is now facilitated by the new mcap function. Changes in version 4.0.1 o The default return-value format for trajectory now matches that of simulate. Changes in version 4.0.0 o 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. o 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. o 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 version 3.5.6 o The states and obs methods now work for lists of ‘pomp’ objects (‘listies’). Changes in version 3.5.5 o The workhorse function flow now has default arguments. o 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. Changes in version 3.5.4 o 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). Changes in version 3.5.3 o Fixed bug in rprior arising with integer-valued return vectors. Changes in version 3.5.2 o Major improvements to the package manual, including richer cross-linking and better organization. Changes in version 3.5.1 o 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 version 3.4.6 o 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. Changes in version 3.4.5 o 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. Changes in version 3.4.4 o 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. o 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. o 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. o freeze no longer stores the details of the RNG seed and kind as an attribute of the returned object. Changes in version 3.4.2 o Fix bug in bsmc2 arising when some particles have zero likelihood. This is Issue #152. Thanks to Hola-Kwame Adrakey for reporting it. Changes in version 3.4.1 o 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 version 3.3.1 o The package manual and help pages has been streamlined. o The mif2 diagnostic plots have been made more flexible. o 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. Changes in version 3.3.0 o A bug in rgammawn has been fixed. Changes in version 3.2.0 o The pomp C API has been expanded a bit, to facilitate other packages' linking to the pomp library. Changes in version 3.1.1 o 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. o A note to Windows users on avoiding certain C snippet compilation errors has been added to the help pages. o 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. o 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 version 3.0.3 o A new saved.states method allows one to extract the saved states from a particle filter computation. Changes in version 3.0.2 o All instances of cond.loglik have been changed to cond.logLik, to remove a common source of typographical error. Changes in version 3.0.1 o 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. Changes in version 3.0.0 o 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. o bsmc2 can now accept a variable number of particles, as do the other particle-filter based algorithms pfilter, pmcmc, and mif2. o 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. o 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 () for more information. o 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") Changes in version 2.8.0 o Trap error from non-finite likelihoods in pmcmc. o New test of pmcmc codes in tests/issue109.R. o Trap error from missing accumulator variables in trajectory. Changes in version 2.7.2 o The Euler step size in sir is now adjustable. Changes in version 2.7.1 o 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. o In traces and diagnostic plotting methods, the nfail variable (tracking numbers of filtering failures) has been dropped. Changes in version 2.6.0 o Another documentation bug was fixed. Changes in version 2.5.0 o A documentation bug, identified by K. Hornik, was fixed. Changes in version 2.4.1 o 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. o A new example illustrating the accumvars argument has been provided. o Internal computations now use increased precision for means, variances, and certain calculations with likelihoods. o A new help page, pomp_examples, lists the various example datasets and pomp objects provided with the package. Changes in version 2.3.0 o 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! o A bug in the documentation for filter.traj, pointed out by Pierre Jacob, has been fixed. Changes in version 2.2.2 o 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. Changes in version 2.2.1 o The new pomp_cdir global option allows one to set the directory holding C snippet files globally. o A bug caused by re-use of the cfile argument has been fixed. Re-use now triggers an error, with an informative message. Changes in version 2.2.0 o Some documentation improvements. Changes in version 2.1.2 o A bug in runifDesign (and therefore profileDesign when type="runif") has been fixed. Changes in version 2.1.1 o There are now plot methods for objects of classes ‘probe_match_objfun’ and ‘spect_match_objfun’. Changes in version 2.1.0 o Released to CRAN. Changes in version 2.0.14 o The melt function can now be applied to arbitrary ‘pomp’ objects. Changes in version 2.0.13 o A new function, runifDesign allows construction of design matrices using samples from multivariate uniform distributions. o 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. Changes in version 2.0.12 o A new example, comprising models and data for the 2014-2016 west African Ebola virus disease outbreak, is included. See ?ebola for details. Changes in version 2.0.11 o 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. o 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. o The interface to the new flow workhorse has been changed to match. Changes in version 2.0.10 o The new flow workhorse allows integration/iteration of the deterministic skeleton at arbitrary times from an arbitrary initial condition. Changes in version 2.0.9 o When coef is applied to a ‘listie’, the result can be more usefully melted. o The probe-names returned by probe.acf and probe.ccf have changed. o A bug, whereby the ‘coef’ method from other packages was masked, has been fixed. o Errors in the documentation have been corrected. Changes in version 2.0.8 o There is a new as.data.frame method for ‘listie’s. o Some problems with the exposure of internal objects for package developers have been corrected. Changes in version 2.0.7 o The magrittr pipe operator, %>%, is now re-exported. Changes in version 2.0.6 o More examples have been included. o Minor changes to error messages. Changes in version 2.0.5 o The names of the ‘objfun’ methods have been changed to probe_objfun, spect_objfun, traj_objfun, and nlf_objfun. Changes in version 2.0.4 o The package directory structure has been modified to include a new examples directory, which holds the examples used in the documentation. o The names of the ‘objfun’ methods have been shortened. Changes in version 2.0.3 o 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. o The default cooling schedule (cooling.type) in mif2 is now “geometric”, in contrast to “hyperbolic”, as before. Changes in version 2.0.2 o pomp now requires at least R version 3.5. Changes in version 2.0.1 o The zeronames argument has been renamed accumvars. Changes in version 2.0.0 o In the course of ordinary work, one should never need to interact with the low-level pomp constructor function now. o The pompExample function has been dropped. The various examples are now included as regular functions that construct ‘pomp’ objects. o The bbs example has been dropped. o 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. o 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. o One can now call simulate on a model without reference to any data. o The covariate table facility (covariate_table) now supports piecewise constant interpolation. o 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. o 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. o 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. o 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. o 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. o 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. o 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". o 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. o 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. o 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. o The documentation system has been thoroughly overhauled. o In skeleton, the t argument has been replaced by times, to make this uniform with the other workhorse functions. o Covariates are now included using the covariate_table construction, passed via the covar argument to pomp. The tcovar argument is no longer used. o 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. o 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);. o 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. o The measurement.model argument to pomp has been removed. It is now necessary to specify the measurement model directly using rmeasure and/or dmeasure. o 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. o The conv.rec method has been deprecated, replaced by the new traces method. o The euler.sir example has been renamed sir. o The gillespie.sir example has been renamed sir2. o The covmat method can now be applied to a probed.pomp object. It returns the estimated covariance matrix of the probes. o 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. o The show method applied to pomp objects is now quite terse. To obtain detailed information, the spy method is available. o 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. o 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). o The transform argument to the probe.quantile function has been removed (as it is entirely redundant!). o The old and deprecated mif and bsmc methods have been removed. Changes in version 1.18.8 o The obs and states arguments of simulate are deprecated and will be removed in a forthcoming release. o The C-level interface for apply_probe_sims has changed: the new argument rho must be the “package:pomp” environment. Changes in version 1.18.7 o 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. o Timo Voipio contributed a pull request that traps the error resulting from sannbox being passed a candidate.dist that is not a function. Changes in version 1.18.6 o 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. o New (unexported) solibs<- method allows developers of packages extending pomp to incorporate C snippets into object that contain ‘pomp’ objects. Changes in version 1.18.5 o 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. o Bug in the display of istate when deSolve::ode errors has been fixed. Changes in version 1.18.4 o New hitch function facilitates construction of pomp.fun objects from R functions, C snippets, and links to external libraries. o Native routines needed to access pomp.fun objects in C are now registered for use by other packages. o coef(object) <- NULL, where object is of class ‘pomp’, erases any parameters stored in object. Changes in version 1.18.3 o The euler.sir, gillespie.sir, blowflies, ricker, bbs, dacca, and rw2 examples are all now implemented using C snippets. o A new pomp_defines.h header is provided for developers of packages that depend on pomp. o 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. o The new hitch function automates the building and linking of C snippets and R functions into pomp.funs. o 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. o 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. Changes in version 1.18.2 o The C snippet compiling facilities have been thoroughly reworked. Changes in version 1.18.1 o onestep.dens can now take a Csnippet specification of the process-model transition density. Changes in version 1.17.4 o All inference functions can now take a list in the start or params arguments. Changes in version 1.17.3 o When altering parameters in a call to probe on a probed.pomp object, the new parameters were ignored. This bug has been fixed. o mif2, pfilter, probe, probe.match, and probe.match.objfun can now gracefully handle a list in the start or params arguments. o New spy method displays the C snippet file(s) associated with a pomp object. Changes in version 1.17.2 o The long-deprecated seed argument to bsmc and bsmc2 has been removed. Changes in version 1.17.1 o More work to obviate warnings generated by T. Kalibera's latest rchk checks. Changes in version 1.16.4 o 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. o Source codes have been revisited to obviate warnings generated by T. Kalibera's latest rchk checks. Changes in version 1.16.3 o Fix a minor bugs in spect. o Improve test coverage. o spect.match has been refactored, with small changes to the interface. o pomp now handles specification of workhorse functions (i.e., rprocess, dprocess, rmeasure, dmeasure, initializer, skeleton, rprior, dprior, fromEstimationScale, toEstimationScale) as NULL more consistently. Changes in version 1.16.2 o Fix bug in systematic resampler when np != nw. o Fix bug in conv.rec when only one parameter is requested. o Correct and improve documentation for conv.rec. o coef<- can now take a list of parameters: it simply applies unlist to turn the list into a numeric vector. o Simplify conv.rec. Changes in version 1.16.1 o 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 version 1.15.4 o The bug reported in issue #57 has been fixed. o A bug arising when building pomp objects with Csnippets in certain Windows configurations has been fixed. Changes in version 1.15.3 o 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. o 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. o Improve documentation of traj.match, in response to Issue #57. Changes in version 1.15.2 o 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. o The old facility for Gillespie simulations, gillespie.sim, now accepts C snippets for faster calculation of event rates. o 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. Changes in version 1.15.1 o 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 version 1.14.2 o A new dmultinom function is provided in ‘pomp.h’. This provides the probability distribution function for the multinomial distribution. Changes in version 1.14.1 o Improved tests. o Fixed bugs emerging in R-devel due to refactoring of underlying R source code. Changes in version 1.13.4 o 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. o The new argument hmax to gillespie.sim allows the user to specify the maximum step size that will be taken before covariates are evaluated. o 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. Changes in version 1.13.3 o 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. o 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. Changes in version 1.13.2 o Upgrade license to GPL version 3. Changes in version 1.13.1 o Fix buffer-flow problem identified by valgrind. Changes in version 1.12.3 o Fix bug found by Eamon O'Dea in gillespie.sim. o Fix bug in onestep.sim. Changes in version 1.12.2 o 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. Changes in version 1.12.1 o Improved error trapping. Changes in version 1.11.3 o 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. o Minor changes in C codes to obviate warnings generated by T. Kalibera's rchk checks. Changes in version 1.11.2 o The rare and fascinating “Bug of St. Patrick” has been fixed. Thanks to Carles Breto for finding the bug and helping to isolate it. o More informative error messages are generated when dmeasure returns a non-finite likelihood in any of the particle filtering codes. Changes in version 1.11.1 o Some streamlining of codes. Changes in version 1.10.6 o Callable routines are now registered. Changes in version 1.10.5 o More verbosity is provided with verbose=TRUE. Changes in version 1.10.4 o 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. o Some documentation improvements, courtesy of Sebastian Funk. Changes in version 1.10.3 o Documentation improvements. Changes in version 1.10.2 o More verbosity in building of Csnippets. Changes in version 1.10.1 o Better handling of pomp's times argument. Changes in version 1.9.3 o New logLik method for pmcmcList objects. Changes in version 1.9.2 o The deprecated options to supply a matrix or numeric vector as the data argument to pomp have been removed and doing so now generates an error. The first argument to pomp, data, must now be provided either as a data frame or as an object of class pomp. See ?pomp for details. o 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 specifying the deterministic skeleton is now explained in the help pages (?pomp). Changes in version 1.9.1 o Source code fixes to eliminate warnings during compilation. o Improved test suite. o Minor documentation correction. Changes in version 1.8.11 o 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. o Modified src/ssa.c to fix UBSAN errors. Changes in version 1.8.10 o C codes have been modified to take advantage of changes to the R API (R SVN REVISION 71180). Changes in version 1.8.9 o 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. Changes in version 1.7.7 o 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. o Further improvements to the test suite. Code coverage is now 100%. Changes in version 1.7.6 o In Sobol' sequence generation (sobolDesign, profileDesign), we now use the suggestion of Joe & Kuo (2003) to choose a better sequence start point. Changes in version 1.7.5 o 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. o Improved testing suite. o Made rw.sd even more robust via new safecall class. Changes in version 1.7.4 o Refactored rw.sd for greater stability. Changes in version 1.7.3 o Fixed a bug in plot on pomp objects with more than 10 variables to plot. o Added the shlib.args option to pomp, allowing arbitrary options to be passed to the compiler when C snippets are used. o Modified the “dacca” example to use C snippets. o Refactored rw.sd for greater stability. o Made Sobol' codes more robust. Changes in version 1.7.2 o Modified the demos to use best practices. Changes in version 1.7.1 o Improved the test suite. Changes in version 1.6.7 o Improve the test suite and error messages. o Replace the automatic “verbose” setting during compilation under Windows. This was dropped in version 1.6.4.3, when it no longer appeared to be necessary. Apparently, it is, at least under some Windows OS/R combinations. Changes in version 1.6.6 o Fix probe bug introduced in version 1.6.5.9. Changes in version 1.6.5 o Several obscure bug-fixes. o Improvement of the test suite and of error messages. Changes in version 1.6.4 o Remove the automatic “verbose” setting during compilation under Windows. This was introduced in version 0.63-6 as a workaround. It appears no longer to be necessary. o Improve the show method for pomp objects. o Change the print method for pomp objects. o Improve messages for plugin errors. o Some internal refactoring. Changes in version 1.6.3 o Improve error messages for missing basic components. Changes in version 1.6.2 o Fix typos in one of the help-page examples. o Add some references. Changes in version 1.6.1 o 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. o Update to the package help page. Changes in version 1.5.10 o 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. o Many more errors are now trapped and reported with more informative messages. Changes in version 1.5.9 o Redundant bootstrap argument to nlf has been removed. o More improvements to the testing suite. Changes in version 1.5.8 o Major improvements to error and warning handling. o Fix bugs that might arise in rare circumstances in simulate and eulermultinom functions. o More improvements to the testing suite. Changes in version 1.5.7 o Many improvements to the test suite. o Fixed a bug in pompExample. Changes in version 1.5.6 o Major overhaul of error handling system and error messages. o There is a new plugin for rprocess called kleap.sim. This implements the so-called “K-leap method” of Cai & Xu (2007). Changes in version 1.5.5 o Many improvements to the test suite. Changes in version 1.5.4 o More improvements to the test suite. o Fixed bugs found as a result of improved testing. o In mif2, it is now required that Nmif>0. Changes in version 1.5.3 o More improvements to the test suite. o Fixed bugs found as a result of improved testing. o Fixed bug in specification of skeleton in pompExamples. Changes in version 1.5.2 o Improved the test suite to obtain better code coverage. o pomp is no longer an S4 method. Its new status as an ordinary function abbreviates and consolidates the code and simplifies the documentation. o Some minor improvements to error messages. o A bug restricting access in C code to userdata has been fixed. o Fixed bug in pompExample(...,show=TRUE). Changes in version 1.5.1 o New methods for the Ensemble Kalman Filter (enkf) and Ensemble Adjustment Kalman Filter (eakf) have been added to the package. Changes in version 1.4.9 o 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. o The pfilter help page has been improved. Specifically, the discussion of filtering failures is better. o Miscellaneous improvements to the help pages. Changes in version 1.4.8 o mif2 no longer computes filter means. Changes in version 1.4.7 o The new argument show of pompExamples allows one to display the example code instead of executing it. o The minimum version of R supported is now 3.1.2. Changes in version 1.4.6 o init.state now has the optional argument nsim. Using this, one can request multiple initial state vectors per parameter vector. o pfilter now uses less memory when it is asked to run at a single point in parameter space. Changes in version 1.4.5 o A bug associated with the rw.sd argument to mif2 on Windows platforms has been fixed. Changes in version 1.4.4 o The method="mif2" option to mif has been removed. Use mif2 instead. Changes in version 1.4.3 o The particles method (rarely if ever used), has been removed to streamline the mif codes. Changes in version 1.4.2 o The method="mif2" option to mif is now deprecated. It will be removed in a future release. Use mif2 instead. Changes in version 1.4.1 o 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. Changes in version 1.3.4 o conv.rec on the results of a mif2 computation now play nicely with reshape2::melt. Changes in version 1.3.3 o 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. Changes in version 1.3.2 o 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 version 1.3.1 o The seed argument to pfilter has been removed. Use freeze to obtain similar functionality. o 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. o 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. Changes in version 1.2.2 o Some internal changes to mif2 by C. Breto, in support of panel methods under development. Changes in version 1.2.1 o 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. Changes in version 1.1.4 o 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. Changes in version 1.1.3 o Provide filter.traj method for pmcmcList objects. Changes in version 1.1.2 o Fixed a bug in mif and mif2 when cooling.type="hyperbolic" and cooling.fraction.50=1.