bsta : Brown Statistical Library

This library is primarily template library for probability distributions. Some older statistical code also exists here which does not fit into the framework of this library. Expect this older code to be deprecated soon.

Overview

This library uses the generic programming paradigm for statistical distributions. The class hierarchy is for code reuse and type definitions as opposed to polymorphism. The base class for distributions, bsta_distribution, contains no functions or member variables. Each distribution has template parameters for the scalar type (typically float or double) and dimension.

Typedefs

The bsta_distribution defines the following typedefs

• `dimension` (integer with enum hack) the dimensionality of the space
• `math_type` the type used in mathmatical operations (expects double or float)
• `vector_type` the type used to represent a vector `math_type` of size `dimension`

The `vector_type` is defined as `vnl_vector_fixed<math_type,dimension>` by default. Using template partial specialization, `vector_type` is redefined to be the same as `math_type` when equals 1. Using the `vector_type` typedef allow much of the same code to be used both univariate and multivariate distributions without the overhead of of a 1 dimensional vector or other wrapper classes.

Distributions

The Gaussian (aka Normal) distribution is provided with several variants. Each variant has a different restriction on the parameters. These Gaussians share a base class named bsta_gaussian which adds member variable for the mean (stored as a `vector_type`) and functions to access it. Each variant of the Gaussian also defines the typedef `covar_type` to specifiy the data type used to represent covariance.

• bsta_guassian_sphere has a single variance parameter and is spherically symmetric (`covar_type` is `math_type` )
• bsta_gaussian_indep has independent variance in each of its principal axes. The covariance matrix is diagonal and is stored as a vector (`covar_type` is `vector_type` )
• bsta_gaussian_full is the most general form Gassian with a full covariance matrix (`covar_type` is `vnl_matrix_fixed<math_type,dimension,dimension>` )