GammaDistribution Class Reference

This class represents the Gamma distribution. More...

Public Member Functions

 GammaDistribution (const size_t dimensionality=0)
 Construct the Gamma distribution with the given number of dimensions (default 0); each parameter will be initialized to 0. More...

 
 GammaDistribution (const arma::mat &data, const double tol=1e-8)
 Construct the Gamma distribution, training on the given parameters. More...

 
 GammaDistribution (const arma::vec &alpha, const arma::vec &beta)
 Construct the Gamma distribution given two vectors alpha and beta. More...

 
 ~GammaDistribution ()
 Destructor. More...

 
double Alpha (const size_t dim) const
 Get the alpha parameter of the given dimension. More...

 
double & Alpha (const size_t dim)
 Modify the alpha parameter of the given dimension. More...

 
double Beta (const size_t dim) const
 Get the beta parameter of the given dimension. More...

 
double & Beta (const size_t dim)
 Modify the beta parameter of the given dimension. More...

 
size_t Dimensionality () const
 Get the dimensionality of the distribution. More...

 
void LogProbability (const arma::mat &observations, arma::vec &logProbabilities) const
 This function returns the logarithm of the probability of a group of observations. More...

 
double LogProbability (double x, const size_t dim) const
 This function returns the logarithm of the probability of a single observation. More...

 
void Probability (const arma::mat &observations, arma::vec &probabilities) const
 This function returns the probability of a group of observations. More...

 
double Probability (double x, const size_t dim) const
 This is a shortcut to the Probability(arma::mat&, arma::vec&) function for when we want to evaluate only the probability of one dimension of the gamma. More...

 
arma::vec Random () const
 This function returns an observation of this distribution. More...

 
void Train (const arma::mat &rdata, const double tol=1e-8)
 This function trains (fits distribution parameters) to new data or the dataset the object owns. More...

 
void Train (const arma::mat &observations, const arma::vec &probabilities, const double tol=1e-8)
 Fits an alpha and beta parameter according to observation probabilities. More...

 
void Train (const arma::vec &logMeanxVec, const arma::vec &meanLogxVec, const arma::vec &meanxVec, const double tol=1e-8)
 This function trains (fits distribution parameters) to a dataset with pre-computed statistics logMeanx, meanLogx, meanx for each dimension. More...

 

Detailed Description

This class represents the Gamma distribution.

It supports training a Gamma distribution on a given dataset and accessing the fitted alpha and beta parameters.

This class supports multidimensional Gamma distributions; however, it is assumed that each dimension is independent; therefore, a multidimensional Gamma distribution here may be seen as a set of independent single-dimensional Gamma distributions—and the parameters are estimated under this assumption.

The estimation algorithm used can be found in the following paper:

@techreport{minka2002estimating,
title={Estimating a {G}amma distribution},
author={Minka, Thomas P.},
institution={Microsoft Research},
address={Cambridge, U.K.},
year={2002}
}

Definition at line 51 of file gamma_distribution.hpp.

Constructor & Destructor Documentation

◆ GammaDistribution() [1/3]

GammaDistribution ( const size_t  dimensionality = 0)

Construct the Gamma distribution with the given number of dimensions (default 0); each parameter will be initialized to 0.

Parameters
dimensionalityNumber of dimensions.

◆ GammaDistribution() [2/3]

GammaDistribution ( const arma::mat &  data,
const double  tol = 1e-8 
)

Construct the Gamma distribution, training on the given parameters.

Parameters
dataData to train the distribution on.
tolConvergence tolerance. This is not an absolute measure: It will stop the approximation once the change in the value is smaller than tol.

◆ GammaDistribution() [3/3]

GammaDistribution ( const arma::vec &  alpha,
const arma::vec &  beta 
)

Construct the Gamma distribution given two vectors alpha and beta.

Parameters
alphaThe vector of alphas, one per dimension.
betaThe vector of betas, one per dimension.

◆ ~GammaDistribution()

Member Function Documentation

◆ Alpha() [1/2]

double Alpha ( const size_t  dim) const
inline

Get the alpha parameter of the given dimension.

Definition at line 196 of file gamma_distribution.hpp.

◆ Alpha() [2/2]

double& Alpha ( const size_t  dim)
inline

Modify the alpha parameter of the given dimension.

Definition at line 198 of file gamma_distribution.hpp.

◆ Beta() [1/2]

double Beta ( const size_t  dim) const
inline

Get the beta parameter of the given dimension.

Definition at line 201 of file gamma_distribution.hpp.

◆ Beta() [2/2]

double& Beta ( const size_t  dim)
inline

Modify the beta parameter of the given dimension.

Definition at line 203 of file gamma_distribution.hpp.

◆ Dimensionality()

size_t Dimensionality ( ) const
inline

Get the dimensionality of the distribution.

Definition at line 206 of file gamma_distribution.hpp.

◆ LogProbability() [1/2]

void LogProbability ( const arma::mat &  observations,
arma::vec &  logProbabilities 
) const

This function returns the logarithm of the probability of a group of observations.

The logarithm of the probability of a value x is

\[ \log(\frac{x^{(\alpha - 1)}}{\Gamma(\alpha) \beta^\alpha} e^ {-\frac{x}{\beta}}) \]

for one dimension. This implementation assumes each dimension is independent, so the product rule is used.

Parameters
observationsMatrix of observations, one per column.
logProbabilitiesColumn vector of log probabilities, one per observation.

Referenced by GammaDistribution::~GammaDistribution().

◆ LogProbability() [2/2]

double LogProbability ( double  x,
const size_t  dim 
) const

This function returns the logarithm of the probability of a single observation.

Parameters
xThe 1-dimensional observation.
dimThe dimension for which to calculate the probability.

◆ Probability() [1/2]

void Probability ( const arma::mat &  observations,
arma::vec &  probabilities 
) const

This function returns the probability of a group of observations.

The probability of the value x is

\[ \frac{x^{(\alpha - 1)}}{\Gamma(\alpha) \beta^\alpha} e^{-\frac{x}{\beta}} \]

for one dimension. This implementation assumes each dimension is independent, so the product rule is used.

Parameters
observationsMatrix of observations, one per column.
probabilitiesColumn vector of probabilities, one per observation.

Referenced by GammaDistribution::~GammaDistribution().

◆ Probability() [2/2]

double Probability ( double  x,
const size_t  dim 
) const

This is a shortcut to the Probability(arma::mat&, arma::vec&) function for when we want to evaluate only the probability of one dimension of the gamma.

Parameters
xThe 1-dimensional observation.
dimThe dimension for which to calculate the probability.

◆ Random()

arma::vec Random ( ) const

This function returns an observation of this distribution.

Referenced by GammaDistribution::~GammaDistribution().

◆ Train() [1/3]

void Train ( const arma::mat &  rdata,
const double  tol = 1e-8 
)

This function trains (fits distribution parameters) to new data or the dataset the object owns.

Parameters
rdataReference data to fit parameters to.
tolConvergence tolerance. This is not an absolute measure: It will stop the approximation once the change in the value is smaller than tol.

Referenced by GammaDistribution::~GammaDistribution().

◆ Train() [2/3]

void Train ( const arma::mat &  observations,
const arma::vec &  probabilities,
const double  tol = 1e-8 
)

Fits an alpha and beta parameter according to observation probabilities.

This method is not yet implemented.

Parameters
observationsThe reference data, one observation per column.
probabilitiesThe probability of each observation. One value per column of the observations matrix.
tolConvergence tolerance. This is not an absolute measure: It will stop the approximation once the change in the value is smaller than tol.

◆ Train() [3/3]

void Train ( const arma::vec &  logMeanxVec,
const arma::vec &  meanLogxVec,
const arma::vec &  meanxVec,
const double  tol = 1e-8 
)

This function trains (fits distribution parameters) to a dataset with pre-computed statistics logMeanx, meanLogx, meanx for each dimension.

Parameters
logMeanxVecIs each dimension's logarithm of the mean (log(mean(x))).
meanLogxVecIs each dimension's mean of logarithms (mean(log(x))).
meanxVecIs each dimension's mean (mean(x)).
tolConvergence tolerance. This is not an absolute measure: It will stop the approximation once the change in the value is smaller than tol.

The documentation for this class was generated from the following file: