Currently the resampling scheme is hard-coded in Birch: we use systematic resampling for standard particle filters, and multinomial resampling for conditional particle filters. The aim of this project is to implement some alternative resampling algorithms and provide the user with a choice of which to use.
Currently, all resampling functions are implemented in resample.birch. We would instead like to create a src/resampler
directory and provide a hierarchy of classes such as MultinomialResampler
, StratifiedResampler
, etc, from which the user can choose. LibBi provides such a setup, which may be a useful reference.
For the filter and sample programs, we could then add support for choosing a resampler using something like the following in the config file, much like one can choose a filter class and sampler class at the moment:
"resampler": {
"class": "StratifiedResampler"
}
A good set to include would be the multinomial, stratified and systematic resamplers, (see Murray, Lee & Jacob, 2015 for implementation) and the SSP algorithm (Gerber, Chopin & Whiteley, 2019).
References
-
L.M. Murray, A. Lee and P.E. Jacob (2015). Parallel Resampling in the Particle Filter. Journal of Computational and Graphical Statistics. [doi] [arXiv]
-
Gerber, M., Chopin, N., and Whiteley, N. (2019). Negative association, ordering and convergence of resampling methods. Ann. Statist. 47, 4:2236--2260. [doi] [arXiv]