MUQ  0.4.3
muq::Modeling::Gamma Class Reference

#include <Gamma.h>

Inheritance diagram for muq::Modeling::Gamma:

Detailed Description

Defines the Gamma distribution, which has probability density function

\[ \pi(x) = \frac{\beta^\alpha}{\Gamma(\alpha)}x^{\alpha-1}\exp\left(-\beta x\right), \]

where \(\alpha\) and \(\beta\) are parameters in the distribution. For multivariate \(x\), it is assumed that all components of \(x\) are independent. However, each component can have different parameters \(\alpha\) and \(\beta\), which are specified as vectors in the constructor.

Definition at line 18 of file Gamma.h.

Public Member Functions

 Gamma (double alphaIn, double betaIn)
 
 Gamma (Eigen::VectorXd const &alphaIn, Eigen::VectorXd const &betaIn)
 
virtual ~Gamma ()=default
 
- Public Member Functions inherited from muq::Modeling::Distribution
 Distribution (unsigned int varSizeIn, Eigen::VectorXi const &hyperSizesIn=Eigen::VectorXi())
 
virtual ~Distribution ()=default
 
virtual double LogDensity (ref_vector< Eigen::VectorXd > const &inputs)
 Evaluate the log-density. More...
 
virtual double LogDensity (std::vector< Eigen::VectorXd > const &inputs)
 
 VARIADIC_TO_REFVECTOR (LogDensity, Eigen::VectorXd, double)
 
virtual Eigen::VectorXd GradLogDensity (unsigned int wrt, std::vector< Eigen::VectorXd > const &inputs)
 
template<typename... Args>
Eigen::VectorXd GradLogDensity (unsigned int wrt, Args... args)
 
virtual Eigen::VectorXd ApplyLogDensityHessian (unsigned int const inWrt1, unsigned int const inWrt2, std::vector< Eigen::VectorXd > const &input, Eigen::VectorXd const &vec)
 
Eigen::VectorXd Sample (ref_vector< Eigen::VectorXd > const &inputs)
 Sample the distribution. More...
 
Eigen::VectorXd Sample (std::vector< Eigen::VectorXd > const &inputs)
 
Eigen::VectorXd Sample ()
 Sample the distribution with no inputs. More...
 
 VARIADIC_TO_REFVECTOR (Sample, Eigen::VectorXd, Eigen::VectorXd)
 
std::shared_ptr< DensityAsDensity ()
 Returns a density built from this distribution. More...
 
std::shared_ptr< RandomVariableAsVariable ()
 Returns a random variable built from this distribution. More...
 

Static Public Member Functions

static std::shared_ptr< GammaFromMoments (Eigen::VectorXd const &mean, Eigen::VectorXd const &var)
 

Public Attributes

const Eigen::VectorXd alpha
 
const Eigen::VectorXd beta
 
- Public Attributes inherited from muq::Modeling::Distribution
const unsigned int varSize
 
const Eigen::VectorXi hyperSizes
 

Constructor & Destructor Documentation

◆ Gamma() [1/2]

Gamma::Gamma ( double  alphaIn,
double  betaIn 
)

Definition at line 15 of file Gamma.cpp.

◆ Gamma() [2/2]

Gamma::Gamma ( Eigen::VectorXd const &  alphaIn,
Eigen::VectorXd const &  betaIn 
)

Definition at line 8 of file Gamma.cpp.

◆ ~Gamma()

virtual muq::Modeling::Gamma::~Gamma ( )
virtualdefault

Member Function Documentation

◆ ApplyLogDensityHessian()

Eigen::VectorXd Gamma::ApplyLogDensityHessian ( unsigned int const  inWrt1,
unsigned int const  inWrt2,
ref_vector< Eigen::VectorXd > const &  input,
Eigen::VectorXd const &  vec 
)
overrideprivatevirtual

Reimplemented from muq::Modeling::Distribution.

Definition at line 66 of file Gamma.cpp.

References alpha.

◆ ComputeConstant()

double Gamma::ComputeConstant ( Eigen::VectorXd const &  alphaIn,
Eigen::VectorXd const &  betaIn 
)
staticprivate

Definition at line 19 of file Gamma.cpp.

References logConst.

◆ FromMoments()

std::shared_ptr< Gamma > Gamma::FromMoments ( Eigen::VectorXd const &  mean,
Eigen::VectorXd const &  var 
)
static

Creates a Gamma distribution given a mean and variance, which are converted to alpha and beta.

Definition at line 87 of file Gamma.cpp.

References alpha, and beta.

◆ GradLogDensity()

Eigen::VectorXd Gamma::GradLogDensity ( unsigned int  wrt,
ref_vector< Eigen::VectorXd > const &  inputs 
)
overrideprivatevirtual

Reimplemented from muq::Modeling::Distribution.

Definition at line 49 of file Gamma.cpp.

References alpha, and beta.

◆ LogDensityImpl()

double Gamma::LogDensityImpl ( ref_vector< Eigen::VectorXd > const &  inputs)
overrideprivatevirtual

Implement the log-density.

If known, the log-density should be implemented by a child. If it is not overridden then the default behavior is to return negative infinity (-1.0*std::numeric_limits<double>::infinity()).

Parameters
[in]inputsthe vector of inputs to the log-density
Returns
The log density

Reimplemented from muq::Modeling::Distribution.

Definition at line 29 of file Gamma.cpp.

References alpha, beta, and logConst.

◆ SampleImpl()

Eigen::VectorXd Gamma::SampleImpl ( ref_vector< Eigen::VectorXd > const &  inputs)
overrideprivatevirtual

Sample the distribution.

Reimplemented from muq::Modeling::Distribution.

Definition at line 40 of file Gamma.cpp.

References alpha, and beta.

Member Data Documentation

◆ alpha

const Eigen::VectorXd muq::Modeling::Gamma::alpha

◆ beta

const Eigen::VectorXd muq::Modeling::Gamma::beta

Definition at line 36 of file Gamma.h.

Referenced by FromMoments(), GradLogDensity(), LogDensityImpl(), and SampleImpl().

◆ logConst

const double muq::Modeling::Gamma::logConst
private

Definition at line 43 of file Gamma.h.

Referenced by ComputeConstant(), and LogDensityImpl().


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