CMP++: Uncertainty Quantification & Bayesian Calibration
Loading...
Searching...
No Matches
cmp::distribution::NormalInverseWishartDistribution Class Reference

#include <distribution.h>

Inheritance diagram for cmp::distribution::NormalInverseWishartDistribution:
Collaboration diagram for cmp::distribution::NormalInverseWishartDistribution:

Public Member Functions

 NormalInverseWishartDistribution (const Eigen::Ref< const Eigen::VectorXd > &mean, double kappa, double nu, const Eigen::Ref< const Eigen::MatrixXd > &psi)
 
 NormalInverseWishartDistribution ()=default
 
double logPDF (const Eigen::Ref< const Eigen::VectorXd > &x) const
 
Eigen::VectorXd sample (std::default_random_engine &rng)
 
const Eigen::VectorXd & mean () const
 
const double & kappa () const
 
const double & nu () const
 
const Eigen::MatrixXd covariance () const
 
Eigen::MatrixXd toCanonical (const Eigen::MatrixXd &x) const
 
Eigen::MatrixXd toPhysical (const Eigen::MatrixXd &z) const
 
size_t dimension () const
 
- Public Member Functions inherited from cmp::distribution::MultivariateDistribution< NormalInverseWishartDistribution >
double logPDF (const Eigen::Ref< const Eigen::VectorXd > &x) const
 Computes the joint log probability density function (log-PDF) of the distribution.
 
Eigen::VectorXd sample (std::default_random_engine &rng)
 Draws a single vector sample from the joint distribution.
 
Eigen::MatrixXd toCanonical (const Eigen::MatrixXd &x) const
 Transforms physical samples to standard canonical space.
 
Eigen::MatrixXd fromCanonical (const Eigen::MatrixXd &x) const
 Transforms standard canonical samples back to physical space.
 
size_t dimension () const
 Returns the dimensionality of the multivariate space.
 

Static Public Member Functions

static NormalInverseWishartDistribution canonical (const size_t dim, double kappa, double nu)
 
static NormalInverseWishartDistribution empiricalPrior (const Eigen::MatrixXd &data, double expected_clusters, double kappa0)
 Computes an empirical Normal-Inverse-Wishart prior from the provided dataset. Useful for initializing the prior in a Dirichlet Process Mixture Model (DPMM) when you have observed data.
 

Private Attributes

Eigen::VectorXd mean_
 Mean parameter vector.
 
double kappa_
 Degrees of freedom scaling parameter kappa.
 
double nu_
 Degrees of freedom parameter nu.
 
size_t dim_
 Dimensionality of the parameter space.
 
Eigen::LDLT< Eigen::MatrixXd > covLDLT_
 LDLT decomposition of the scaling matrix.
 
double logDeterminant_
 Log-determinant of the scale covariance matrix.
 
std::normal_distribution< double > distN_ {0., 1.}
 Normal distribution helper for coordinate sampling.
 

Constructor & Destructor Documentation

◆ NormalInverseWishartDistribution() [1/2]

cmp::distribution::NormalInverseWishartDistribution::NormalInverseWishartDistribution ( const Eigen::Ref< const Eigen::VectorXd > &  mean,
double  kappa,
double  nu,
const Eigen::Ref< const Eigen::MatrixXd > &  psi 
)
inline

◆ NormalInverseWishartDistribution() [2/2]

cmp::distribution::NormalInverseWishartDistribution::NormalInverseWishartDistribution ( )
default

Member Function Documentation

◆ canonical()

static NormalInverseWishartDistribution cmp::distribution::NormalInverseWishartDistribution::canonical ( const size_t  dim,
double  kappa,
double  nu 
)
inlinestatic

◆ covariance()

const Eigen::MatrixXd cmp::distribution::NormalInverseWishartDistribution::covariance ( ) const
inline

◆ dimension()

size_t cmp::distribution::NormalInverseWishartDistribution::dimension ( ) const
inline

◆ empiricalPrior()

static NormalInverseWishartDistribution cmp::distribution::NormalInverseWishartDistribution::empiricalPrior ( const Eigen::MatrixXd &  data,
double  expected_clusters,
double  kappa0 
)
inlinestatic

Computes an empirical Normal-Inverse-Wishart prior from the provided dataset. Useful for initializing the prior in a Dirichlet Process Mixture Model (DPMM) when you have observed data.

Parameters
dataThe observed data matrix.
expected_clustersThe expected number of clusters.
kappa0The prior precision parameter.
Returns
The computed empirical Normal-Inverse-Wishart prior.

◆ kappa()

const double & cmp::distribution::NormalInverseWishartDistribution::kappa ( ) const
inline

◆ logPDF()

double cmp::distribution::NormalInverseWishartDistribution::logPDF ( const Eigen::Ref< const Eigen::VectorXd > &  x) const
inline

◆ mean()

const Eigen::VectorXd & cmp::distribution::NormalInverseWishartDistribution::mean ( ) const
inline

◆ nu()

const double & cmp::distribution::NormalInverseWishartDistribution::nu ( ) const
inline

◆ sample()

Eigen::VectorXd cmp::distribution::NormalInverseWishartDistribution::sample ( std::default_random_engine &  rng)
inline

◆ toCanonical()

Eigen::MatrixXd cmp::distribution::NormalInverseWishartDistribution::toCanonical ( const Eigen::MatrixXd &  x) const
inline

◆ toPhysical()

Eigen::MatrixXd cmp::distribution::NormalInverseWishartDistribution::toPhysical ( const Eigen::MatrixXd &  z) const
inline

Member Data Documentation

◆ covLDLT_

Eigen::LDLT<Eigen::MatrixXd> cmp::distribution::NormalInverseWishartDistribution::covLDLT_
private

LDLT decomposition of the scaling matrix.

◆ dim_

size_t cmp::distribution::NormalInverseWishartDistribution::dim_
private

Dimensionality of the parameter space.

◆ distN_

std::normal_distribution<double> cmp::distribution::NormalInverseWishartDistribution::distN_ {0., 1.}
private

Normal distribution helper for coordinate sampling.

◆ kappa_

double cmp::distribution::NormalInverseWishartDistribution::kappa_
private

Degrees of freedom scaling parameter kappa.

◆ logDeterminant_

double cmp::distribution::NormalInverseWishartDistribution::logDeterminant_
private

Log-determinant of the scale covariance matrix.

◆ mean_

Eigen::VectorXd cmp::distribution::NormalInverseWishartDistribution::mean_
private

Mean parameter vector.

◆ nu_

double cmp::distribution::NormalInverseWishartDistribution::nu_
private

Degrees of freedom parameter nu.


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