particleFilter

Implement a particle filter assimilation


Description

The particleFilter class provides objects that perform particle filter assimilations. This assimilation method uses a Bayesian formula to quantify the similarity of ensemble members (particles) to a set of proxy observations. The state vector is then updated using a weighted mean of the ensemble members. The weight of each ensemble member is a function of its similarity to the proxy observations. A more detailed sketch of the algorithm is provided below.

Classical particle filters are often degenerate in paleoclimate contexts. Essentially, the best ensemble member receives a weight near 1, and the weights for all other ensemble members are near 0. When this occurs, the updated state vector is nearly identical to the best particle. This behavior is not always desirable, because the updated state vector is not informed by the other members of the ensemble. Thus, many particle filter implementations modify the particle weighting scheme to try and reduce this degeneracy.

In the DASH toolbox, the particleFilter class provides objects that help implement the particle filter algorithm. These objects provide methods that allow users to provide data inputs (such as observations) to the filter, select algorithm parameters (such as the weighting scheme), and run particle filter algorithms.

Outline

The Following Is A Sketch For Using The Particlefilter Class

  1. Use the “particleFilter” method to initialize a new particle filter

  2. Use the “observations”, “estimates”, “prior”, and “uncertainties” methods to provide essential data inputs to the particle filter.

  3. Use the “weights” method to select a particle weighting scheme, and

  4. Use the “run” method to run the particle filter algorithm on the data inputs with the selected weighting scheme.

You can also use the “computeWeights” method to calculate particle weights, without needing to update a state vector. This reduces the computational expense of tasks that only require particle weights – for example, testing a particle filter for degeneracy, or selecting ensemble members for use in an evolving prior.

Algorithm

The Following Is A Sketch Of The Particle Filter Algorithm

For an assimilated time step, the method determines the differences between proxy observations and estimates (known as the innovations). These innovations are then weighted by the proxy uncertainties, and the algorithm computes the sum of these weighted innovations for each member of the ensemble. The result is the sum of squared errors (SSE) for each ensemble member. The SSE values measure the similarity of each ensemble member to the observations - the lower its SSE value, the more closesly an ensemble member resembles the observations. Next, the method applies a weighting scheme to the SSE values to determine a weight for each ensemble member. Finally, the method uses these weights to take a weighted mean across the ensemble. The final weighted mean is the updated state vector for that time step.

Troubleshooting Large State Vectors

Large state vector ensembles can overwhelm computer memory and may prevent a particle filter assimilation from running. If this occurs, it is useful to note that the update for each state vector element is independent of all other state vector elements. Thus, you can often circumvent memory issues by splitting the state vector into several smaller pieces and then assimilating each piece individually. The built-in “matfile” command can be helpful for saving/loading pieces of large ensembles iteratively.


Key Methods

These methods are the most essential for users.


All User Methods

Create

Data Inputs

Weights

Calculations

Console Display


Utility Methods

Utility methods that help the class run. They do not implement error checking and are not intended for users.

Name

Weighting Schemes

Size Validation

Inherited

Tests