News blog archive


documentation improvements in version 3.1.1.7

05 August 2020

pomp development version 3.1.1.7 has just been released on the package github site. It contains a number of improvements to the package help pages. These are also available online (as the package manual).


version 3.1.1.1 released

19 July 2020

pomp development version 3.1.1.1 has just been released on the package github site. This release introduces the profile_design function, which is intended to replace profileDesign. The so-called profile design consists of a series of slices through a parameter space perpendicular to one or more coordinate axes. The old behavior was to generate a single set of points in one of these slices (randomly according to a uniform distribution when type="runif" and according to a sub-random (Sobol’) sequence when type="sobol") and then copy these points across all slices. Thus, in a projection perpendicular to the slices, all nprof generated points would lie atop one another. The new behavior is to generate the points in each slice independently. Thus, a projection perpendicular to the slices will display n*nprof points, where n is the number of slices.

For stylistic reasons, the other design functions, sliceDesign, runifDesign, and sobolDesign have been replaced by slice_design, runif_design, and sobol_design, respectively.

The older functions remain in place, but are deprecated and will be removed in a future release.


volunteer needed

09 July 2020

I’m looking for a volunteer who can maintain the pomp installation instructions for Mac users. Personally, I work pretty much exclusively on linux machines. I think I’m more or less able to keep up with the Windows installation instructions, but with respect to the Mac, I’m not keeping up. It seems I turned around and several things changed at once.

If there’s a Mac user out there, a veteran installer of pomp, who can edit/augment the Mac installation instructions on an ongoing basis, to keep up with advice from the R core team, probably including revising or replacing the gfortran installation instructions, it would a great service to the pomp community!

Please contact me if you’re interested.


version 3.1 released

05 July 2020

pomp version 3.1 has just been released to CRAN and is on its way to a mirror near you. From this version pomp now requires at least version 4 of R.

Significant user-visible changes

Old function    Replacement
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")

New features

Under the hood


version 3.0.1.0 available on github

12 June 2020

pomp version 3.0.1.0 has been released: source code and binaries are available. This is a development release, anticipatory to the next CRAN version, which will be 3.1.

From this version, pomp requires at least version 4.0 of R.

New features

A new sequential importance sampling algorithm has been implemented as wpfilter. This is a generalization of the algorithm in pfilter in that it tracks the weights of the particles and allows the user to customize the resampling scheme. In particular, one can determine when resampling happens using the trigger option. One sets trigger to a positive number: when the effective sampling size is less than trigger * Np, resampling is triggered. Thus setting trigger = 0 forbids resampling, while setting trigger to any number ≥0 forces resampling at every observation a la pfilter.

One can also determine the weight distribution of the resampled particles using the target option. One sets target to a number in [0,1]. If target = α, say, and the weight of the i-th particle is wi, then it is resampled with weight wi1-α and, after resampling, carries weight wiα.

Thus, setting trigger = 1 and target = 0 reproduces the behavior of pfilter.

The new function wpfilter should be considered an alpha release: both the interface and the underlying algorithms may change at any time without notice. Please explore the function and give feedback via the pomp issues page.

For more information, see the help pages in the package manual.


version 3.0.0.0 available on github

02 June 2020

pomp version 3.0.0.0 has been released: source code and binaries are available. This is a development release, anticipatory to the next CRAN version, which will be 3.1.

Important Changes


version 2.8 released

11 April 2020

pomp version 2.8 has been released to CRAN and is on its way to a mirror near you.

Important Changes

Minor change


version 2.7.2.1 available on github

04 April 2020

Version 2.7.2.1 is now available on the pomp github repo. This release contains several minor revisions. Install it by doing, e.g., install.packages("pomp",repos="https://kingaa.github.io")


version 2.7.1.0 available on github

27 March 2020

Version 2.7.1.0 makes the first set of changes to the behavior of particle-filter-based algorithms promised in version 2.4.1.0. In particular, the default value of the tol parameter is now set to zero. This affects the pfilter, mif2, pmcmc, and bsmc2 functions.

See the earlier blog post for more information.

If you haven’t changed your workflow to use tol=0, as prompted by the warnings from versions 2.4.1 on, this change may break some of your existing code. To recover previous behavior, set tol to a positive value (the old default was 10-17). It is a good idea at this stage, however, to modify your workflows by setting tol=0 or, better still, leaving tol at the default value, since the tol argument will go away soon.

In a forthcoming release, the option to set a nonzero tolerance will be removed entirely.


new online help pages

22 February 2020

HTML versions of the pomp help pages are now available online at the pomp website.


version 2.7 released

20 February 2020

pomp version 2.7 has been released to CRAN and is on its way to a mirror near you. This is an extremely minor revision over 2.6, which was in turn also very minor. The only changes are fixes to the PDF documentation necessitated by changes in R.


version 2.6 released

05 February 2020

pomp version 2.6 has been released to CRAN. This is an extremely minor revision over 2.5: the only change is a fix to the PDF manual.


version 2.5 released

28 January 2020

pomp version 2.5 has been released to CRAN and is on its way to a mirror near you.

Changes to particle-filter algorithms

This release anticipates an important change in the behavior of key pomp algorithms. In particular, all algorithms based on the particle filter—including pfilter, mif2, pmcmc, and bsmc2—are affected.

In previous versions, each of these algorithms has an adjustable tolerance, tol, which sets the minimum likelihood distinguishable from zero for the purposes of these methods. Though this tolerance has been present since the earliest days of pomp, the rationale for it has always been practical rather than theoretical and there is little evidence for its usefulness. Worse, as pomp users continue to tackle larger and more complicated problems, they are increasingly encountering situations where the default value of tol turns out to be inappropriately high. For these reasons, we have decided to dispense with it entirely.

Since this change would break some existing code, we will accomplish this in stages. In this release, the behavior of all the above algorithms remains as before, but a warning is generated whenever tol is nonzero. This means that using the default value will generate a warning. This warning is meant to pester you into setting tol = 0 whenever you use one of the affected algorithms (pfilter, mif2, pmcmc, bsmc2). By doing so, you will be prepared when, in a forthcoming version, the default value of tol changes to zero and when, ultimately, the tol parameter is removed entirely.

To reiterate: the default behavior of these algorithms continues unchanged as of this version, but warnings of forthcoming changes are generated. These warnings give you time to set tol = 0 in your codes before this setting becomes, first, the default and, ultimately, mandatory.

New documentation

Under the hood


Phasing out the particle filter tolerance parameter

25 January 2020

The new development release, version 2.4.1.3, sets in motion an important change in the behavior of key pomp algorithms. All algorithms based on the particle filter—including pfilter, mif2, pmcmc, and bsmc2—are affected. Each of these algorithms has a tolerance, tol, which sets the minimum likelihood distinguishable from zero for the purposes of these methods. This parameter, the rationale for which has always been practical rather than theoretical, has been present since the earliest days of pomp, and there is little evidence for its usefulness. Worse, as we continue to tackle larger and more complicated problems with pomp, we are increasingly encountering situations where the default value of tol turns out to be inappropriately high. For these reasons, we have decided to dispense with it entirely.

Since this change will break some existing code, we will accomplish this in stages. In a forthcoming release, the new default is set to become zero and ultimately we anticipate a version that entirely removes the option to set a nonzero tolerance. Accordingly, as of 2.4.1.3, a warning is generated whenever tol is nonzero—including for the default value. To make this annoying warning go away, simply set tol = 0 in any of the affected algorithms: pfilter, mif2, pmcmc, or bsmc2. To reiterate: the default behavior of these algorithms continues unchanged as of this version, but warnings of forthcoming changes are generated. These are intended to give users time to adjust their pomp usage to tol = 0 before it becomes, first, the default and, ultimately, mandatory.


version 2.4 released

10 October 2019

pomp version 2.4 has been released to CRAN and is on its way to a mirror near you. In this release, the source codes underlying specification of basic model components via R functions has been reworked to remove reliance on deep PROTECT stacks. No changes will be visible to the user. Thanks to Thomas Kalibera for showing the way! Additionally, a bug in the documentation for filter.traj, pointed out by Pierre Jacob, has been fixed.


version 2.3 released

05 September 2019

pomp version 2.3 has been released to CRAN and is on its way to a mirror near you. This release, makes changes to the documentation of the C API. It is now described and explained in the new C API vignette.

In addition, the new global option pomp_cdir allows one to select the directory in which all C snippet files produced during a session will be written.


new document defining the pomp C API

27 July 2019

pomp provides C entry points to a number of facilities for model specification. The new C API document describes these.

In particular, pomp provides C-level access to several different probability distributions of use in modeling, facilities for working with splines, and parameter transformations.

The final section of the document describes the prototypes for the basic model components. Users wishing to write libraries to hold basic model components must furnish functions of these prototypes that perform the basic model component computations.


pomp version 2.2 released to CRAN

24 June 2019

pomp version 2.2 has been released to CRAN and is on its way to a mirror near you. This release adds one new feature: it is now possible to create diagnostic plots by calling plot directly on the objective functions created by probe_objfun and spect_objfun. In addition, a small but annoying bug in profileDesign, when the new option type="runif" is used, has been fixed.


pomp version 2.1 released to CRAN

01 June 2019

I have just released pomp version 2.1 to CRAN. For the last six months, this has been available on the pomp website as the package pomp2.

Because it is not fully backward-compatible, pomp version 2 is being made available temporarily as the pomp2 package. Hopefully, most of you will have been using pomp2 for some time now, but if you find yourself needing to update old codes and workflows for the new version, have a look at the upgrade guide, which summarizes all the changes in version 2.

If you have pomp2 on your system, you should now remove it entirely, and replace all references to pomp2 in your codes with references to pomp.

As always, please don’t hesitate to bring questions, conundrums, puzzles, paradoxes, bugs, and feature requests, to my attention via by raising an Issue.


Upgrade Guide updates

23 December 2018

The pomp Version 2 Upgrade Guide has been revised. It now includes before-and-after examples of codes rewritten for pomp version 2. This is meant to help you revise pomp version <2 codes to take advantage of the new features.

As a reminder, an alpha-release preview of pomp version 2 is available as pomp2 on the pomp website. Do

install.packages("pomp2",repos="https://kingaa.github.io")

to install it. It is possible to have both pomp (version <2) and pomp2 installed simultaneously during workflow migration.

Around the middle of 2019, pomp2 will be renamed pomp and uploaded to CRAN as version 2.1. From that point forward, there will be no support for older versions of pomp.


Getting Started with pomp2

22 December 2018

The “Getting Started with pomp” vignette has been completely rewritten for pomp version 2. If you are new to pomp, or want to get up to speed on the changes coming in pomp version 2, have a look! The vignette is available here.


pomp version 2 released as pomp2

15 December 2018

Version 2 of pomp, with major improvements, is on its way! Because it is not fully backward-compatible, pomp version 2 is being made available temporarily as the pomp2 package. pomp2 is not available on CRAN but source and binaries can be downloaded from the pomp website. See the installation page for instructions.

pomp2 will be phased out, replaced by version 2 of pomp, around the middle of 2019. At that point, pomp versions <2 will no longer be supported.

It is recommended that users begin making the transition to version 2 now. An upgrade guide is available to help you transition your codes to the new version. In the interim period, you can have both pomp and pomp2 installed on your system simultaneously.


pomp version 1.19 released

14 December 2018

pomp version 1.19 is now available on CRAN. Source and binaries will soon be visible on a CRAN mirror near you.

Important note

Version 2 of pomp, with major improvements, is on its way. Because it is not fully backward-compatible, pomp version 2 is being made available temporarily as the pomp2 package. pomp2 is not available on CRAN but source and binaries can be downloaded from the pomp website. See the installation page for instructions.

pomp2 will be phased out, replaced by version 2 of pomp, around the middle of 2019. At that point, pomp versions <2 will no longer be supported.

It is recommended that users begin making the transition to version 2 now. An upgrade guide is available to help you transition your codes to the new version. In the interim period, you can have both pomp and pomp2 installed on your system simultaneously.

Release notes

pomp version 1.19 includes bug fixes and some feature enhancements.

User-visible changes

API and implementation changes

See the package NEWS for more details.


pomp version 1.18 released

09 July 2018

pomp version 1.18 is now available on CRAN and will soon be visible on a CRAN mirror near you. This release includes bug fixes and some feature enhancements.

User-visible changes include:

See the package NEWS for more details.


pomp version 1.17 released

27 June 2018

pomp version 1.17 is now available on CRAN and is coming soon to a mirror near you. This release includes bug fixes and some feature enhancements.

Highlights include:

See the package NEWS for more details.


pomp version 1.16 released

17 December 2017

pomp version 1.16 is now available on CRAN and is coming soon to a mirror near you. This release includes new features and bug fixes.

Highlights include:

See the package NEWS for more details.


pomp version 1.15 released

21 September 2017

pomp version 1.15 is now available on CRAN and is coming soon to a mirror near you. This release fixes errors that would have arisen in R version 3.5 due to new changes in the underpinnings of R.

Additionally, there has been one augmentation of the pomp C API: a new dmultinom function for multinomial likelihoods. See the package NEWS for more details.


pomp version 1.14 released

24 August 2017

pomp version 1.14 is now available on CRAN and is coming soon to a mirror near you. This release fixes a bug in gillespie.sim and removes the kleap.sim plug-in.

A new feature: the new argument hmax to gillespie.sim allows the user to specify the maximum step size that will be taken before covariates are evaluated.

The K-leap method has been removed because its accuracy on test problems is low 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.

See the package NEWS for more details.


pomp version 1.13 released

17 July 2017

pomp version 1.13 is now available on CRAN and will make its way soon to a mirror near you. This is strictly a bug-fix release. See the package NEWS for more details.


pomp version 1.12 released

19 April 2017

pomp version 1.12 is now available on CRAN and will make its way soon to a mirror near you. This is strictly a bug-fix release. See the package NEWS for more details.


pomp version 1.11 released

01 March 2017

pomp version 1.11 is now available on CRAN. This release introduces one new feature, fixes some bugs, and improves the documentation.

New feature

The functions bake, stew, and freeze now preserve information about the system time used in computation as an attribute of the returned object. Another attribute stores information about the RNG settings used.

Other changes


pomp version 1.10 released

23 November 2016

pomp version 1.10 is now available on CRAN. This release removes some deprecated facilities and provides one new feature.

Deprecated facilities removed

New feature

See the package NEWS for more details.


pomp version 1.9

02 October 2016

pomp version 1.9 is now available on CRAN. This release fixes several bugs.

Bug fixes

Please see the package NEWS for more details.


pomp version 1.8

31 August 2016

pomp version 1.8 is now available on CRAN. This release introduces one new feature and fixes several bugs.

New feature

User-visible changes

Under the hood

Bug fixes

Please see the package NEWS for more details.


pomp version 1.7 is released

01 August 2016

pomp version 1.7 is now available on CRAN. This is a bug-fix and documentation upgrade. Since version 1.6, I have continued to improve the handling of error messages and warnings. Please continue to send examples of error messages that are uninformative or misinformative, along with the code that produced them, so I can trap those errors and improve the messages!

Please see the package NEWS for more details.


pomp version 1.6!

01 July 2016

pomp version 1.6 is now available on CRAN. Lots of changes to report: big improvements in the documentation and in the error messages, lots of bug fixes, and some new features, too.

Improvements to the error handling system: War on useless error messages!

Documentation improvements

User-visible changes

New features

Bug fixes

The many changes to the testing suite turned up a number of bugs, which have been fixed. These include:

Under the hood

Please see the package NEWS for more details.


pomp version 1.5 released

31 May 2016

pomp version 1.5 is now available on CRAN.

User-visible changes

New features

Documentation improvements

Bug fixes

Under the hood

Please see the package NEWS for more details.


panelPomp package alpha release

24 May 2016

This alpha release provides tools for working with panel data using partially observed Markov processes. In particular, this package allows one to model multiple, independent units (or individuals) for each of which one has (potentially multivariate) time series data. The basic idea driving panelPomp is to apply to a collection of units some of the pomp package facilities for implementing POMP models, simulating them, and fitting them to time series data. Regarding fitting, as of this release, only the iterated filtering (mif2) algorithm has currently been extended to the panelPomp panel setting. The package is authored and maintained by Carles Breto.

See the panelPomp github site for information, source code, and downloads.


Journal of Statistical Software paper on pomp released!

29 March 2016

A Journal of Statistical Software paper describing pomp, its rationale, structure, and the inference algorithms it contains, has just been released. The paper gives the inference algorithms in detail (including pseudocode), and demonstrates them on a few examples. Its aim is to give an introduction pomp both as a scientific tool and as a platform for development of inference methods for POMPs. Please cite this paper (do citation("pomp") in an R session to see how) when you use the package. Coinciding with the paper’s release is a new version of pomp which is on CRAN now. See the package NEWS for details on the new release.


Short course on pomp at SISMID, Seattle

15 March 2016

Ed Ionides and Aaron King will be teaching their short course on Simulation-based Inference for Epidemiological Dynamics for the second time this July at the 8th Summer Institute in Statistics and Modeling in Infectious Diseases (SISMID). The course introduces statistical inference techniques and computational methods for dynamic models of epidemiological systems. It will explore deterministic and stochastic formulations of epidemiological dynamics and develop inference methods appropriate for a range of models. Special emphasis will be on exact and approximate likelihood as the key elements in parameter estimation, hypothesis testing, and model selection. Specifically, the course will cover sequential Monte Carlo and synthetic likelihood techniques. Students will learn to implement these in R to carry out maximum likelihood and Bayesian inference. Knowledge of the material in Module 1 (Probability and Statistical Inference) is assumed. Students new to R should complete a tutorial before the module. The course is listed as Module 9 and will run from 18-20 July 2016 at the University of Washington in Seattle.


Can I write a pomp for multivariate data?

01 March 2016

This is no problem.

The data you supply to pomp can contain multiple variables. You simply refer to these variables by name in writing the rmeasure and dmeasure Csnippets. See FAQ 3.2 for an example.


pomp version 1.3.1.1 released

29 February 2016

In version 1.3.1.1, several features that had long been deprecated have been removed. These include:

Please see the package NEWS for more details.


pomp version 1.2.1.1 released

24 September 2015

Version 1.2.1.1 has been released and is coming soon to a CRAN mirror near you. This is a bug-fix and documentation improvement release. Please see the package NEWS for details.


pomp version 1.1.1.1 released

20 August 2015

Version 1.1.1.1 has been released and is coming soon to a CRAN mirror near you. Since version 0.65-1, there have been many changes to pomp, including new features, some bug fixes, and algorithmic improvements. Some of the highlights include:

New features

Bug fixes

Deprecated and defunct


Improved "getting started" tutorial

09 August 2015

The Getting started with pomp tutorial has been substantially improved. In particular, the tutorial now contains not only an example of the construction of a pomp object, but also

Although the tutorial uses as its example a very simple data analysis (one in fact for which far simpler methods than the ones employed would be sufficient), the methods that it illustrates can be readily transposed for dealing with much more challenging problems.


Adaptive PMCMC proposals

07 August 2015

As of version 0.78-1, pomp includes facilities for adaptive proposals for particle MCMC (pmcmc) and approximate Bayesian computation (abc). The new function mvn.rw.adaptive generates an multivariate normal random-walk MCMC proposal function that adapts in scale and shape. Thanks to Sebastian Funk for contributing a patch that spurred this development. This functionality should be regarded as experimental and subject to change. Please tell me about your experiences with it and contribute suggestions for improvement (or pull requests!) if you can.


Deprecated arguments removed

06 August 2015

A number of minor changes to pomp have been made since the last blog post. Specifically, in pomp version 0.77-1:


Bug fix for logmeanexp

29 July 2015

A bug in logmeanexp has been fixed. Previously, when se = TRUE, this function used a delta-method estimate of the variance in log(mean(exp(x))) which was accurate when exp(x) had small variance but had two problems:

  1. It was overly conservative, being an estimate of the standard error on each element of x, as opposed to the standard error on log(mean(exp(x))), as might have been expected
  2. It performed poorly when the variance in exp(x) was large. In particular, it returned misleadingly small estimates of the standard error in this case.

The new version uses a jackknife estimate of the variance in log(mean(exp(x))). Since the jackknife estimate is biased upward, it is still somewhat conservative, but is more robust when the variance of exp(x) is large.


Short course on "Simulation-based Inference for Epidemiological Dynamics"

28 July 2015

Ed Ionides and Aaron King taught a short course on this topic at the 7th Summer Institute for Statistics and Modeling for Infectious Disease at the University of Washington in Seattle this summer. The materials include:

These materials are available via the pomp website.


Pimp my pomp

27 July 2015

The new pimp my pomp page on the pomp wiki is for sharing advice and code. The first entry contains some advice about maintaining a database of parameter points and likelihoods to facilitate exploration of complex likelihood surfaces.


Better caching

25 July 2015

When a pomp object is constructed using Csnippets, the C source is compiled and dynamically loaded into the running R session. Heretofore, this meant that one had to rebuild the pomp in each new R session. Changes in version 0.75-1 now make it so that one can store and re-use pomp objects across R sessions. This is achieved by storing the source code internally to the pomp object. When a pomp object is used, a test is first performed to see if the needed shared-object file exists. If it does not, the source code is written to a file in the session’s temporary directory, which is then compiled and loaded. This feature allows pomp objects to be stored and reused across R sessions. To avoid collisions, the name of the file is constructed using a hash of its contents.


Reproducibility utilities

24 July 2015

On cooking shows, recipes requiring lengthy baking or stewing are prepared beforehand. The bake and stew functions perform analogously, performing an R computation and storing the result in a named file. If the function is called again and the file is present, the computation is not executed; rather, the results are loaded from the file in which they were previously stored. Moreover, via their optional seed and kind arguments, bake and stew can control the pseudorandom-number generator (RNG) for greater reproducibility. After the computation is finished, these functions restore the pre-existing RNG state to avoid side effects.

The freeze function doesn’t save results, but does set the RNG state to the specified value and restore it after the computation is complete.


Changes to the way certain functions manipulate the RNG seed

20 July 2015

Smoothed trajectories via PMCMC

10 July 2015

pmcmc and pfilter now have the capability of saving filtered trajectories. These can be extracted using the new method filter.traj. The principal use will be in conjunction with pmcmc, where, upon convergence to the posterior, samples from the filtered trajectories will be draws from the posterior P[x[1:T] | y[1:T]], i.e., the smoothing distribution. Thanks to Sebastian Funk for initiating this development!


Initializer can now be furnished as a Csnippet

11 June 2015

Full-featured version of mif2 now implemented

05 June 2015

A full-featured version of IF2, an improved iterated filtering algorithm, is now available as mif2.
This allows a more general structure for the random perturbations applied to parameters and is generally more efficient and stable than IF1. mif2 should be preferable to mif in just about all circumstances.


pomp version 0.65-1 released to CRAN

01 June 2015

pomp version 0.65-1 is now available on CRAN and coming soon to a mirror near you.

This release contains many improvements. Highlights include:


pomp version 0.53-1 released

30 June 2014

pomp version 0.53-1 is now available on CRAN and coming soon to a mirror near you.

This is a major new feature release. Some highlights are:


pomp version 0.49-1 on CRAN

23 March 2014

pomp version 0.49-1 is now available on CRAN and coming soon to a mirror near you.

This is a new feature release. Some highlights are:


Subscribe to this newsfeed 


NSF
NCEAS
NIH

This software has been made possible by support from the U.S. National Science Foundation (Grants #EF-0545276, #EF-0430120), by the “Inference for Mechanistic Models” Working Group supported by the National Center for Ecological Analysis and Synthesis (a Center funded by N.S.F. (Grant #DEB-0553768), the University of California, Santa Barbara, and the State of California), and by the RAPIDD program of the Science & Technology Directorate, Department of Homeland Security and the Fogarty International Center, U.S. National Institutes of Health.