# bdm::egiwmix Class Reference

Mixture of egiws. More...

`#include <emix.h>`

List of all members.

## Public Member Functions
| egiwmix ()
| Default constructor.
void | set_parameters (const vec &w, const Array< egiw * > &Coms, bool copy=false)
vec | mean () const
| return expected value
vec | sample () const
| return a sample from the density
vec | variance () const
| return the expected variance
void | mean_mat (mat &M, mat &R) const
| expected values of the linear coefficient and the covariance matrix are written to `M` and `R` , respectively
double | evallog_nn (const vec &val) const
| In this instance, val= [theta, r]. For multivariate instances, it is stored columnwise val = [theta_1 theta_2 ... r_1 r_2 ].
double | lognc () const
| logarithm of the normalizing constant,
shared_ptr< epdf > | marginal (const RV &rv) const
| Return marginal density on the given RV, the remainig rvs are intergrated out.
void | marginal (const RV &rv, emix &target) const
vec & | _w ()
| returns a pointer to the internal mean value. Use with Care!
void | ownComs ()
| Auxiliary function for taking ownership of the Coms().
egiw * | _Coms (int i)
| access function
void | set_rv (const RV &rv)
| Name its rv.
egiw * | approx ()
| Approximation of a GiW mix by a single GiW pdf.
vec | est_theta () const
| LS estimate of .
ldmat | est_theta_cov () const
| Covariance of the LS estimate.
void | pow (double p)
| Power of the density, used e.g. to flatten the density.
virtual double | evallog (const vec &val) const
| Evaluate normalized log-probability.
virtual vec | evallog_m (const mat &Val) const
| Evaluate normalized log-probability for many samples.
virtual vec | evallog_m (const Array< vec > &Val) const
| Evaluate normalized log-probability for many samples.
virtual string | to_string ()
| This method returns a basic info about the current instance.
virtual void | to_setting (Setting &set) const
| This method save all the instance properties into the Setting structure.
virtual void | validate ()
| This method TODO.
Constructors
void | set_parameters (int dimx0, ldmat V0, double nu0=-1.0)
Constructors
Construction of each epdf should support two types of constructors: empty constructor, copy constructor, The following constructors should be supported for convenience: constructor followed by calling `set_parameters()` constructor accepting random variables calling `set_rv()` All internal data structures are constructed as empty. Their values (including sizes) will be set by method `set_parameters()`. This way references can be initialized in constructors.
void | set_parameters (int dim0)
Access attributes
ldmat & | _V ()
const ldmat & | _V () const
double & | _nu ()
const double & | _nu () const
void | from_setting (const Setting &set)
Matematical Operations
virtual mat | sample_m (int N) const
| Returns N samples, from density .
virtual shared_ptr< mpdf > | condition (const RV &rv) const
| Return conditional density on the given RV, the remaining rvs will be in conditioning.
virtual void | qbounds (vec &lb, vec &ub, double percentage=0.95) const
| Lower and upper bounds of `percentage` % quantile, returns mean-2*sigma as default.
Connection to other classes
Description of the random quantity via attribute `rv` is optional. For operations such as sampling `rv` does not need to be set. However, for `marginalization` and `conditioning` `rv` has to be set. NB:
bool | isnamed () const
| True if rv is assigned.
const RV & | _rv () const
| Return name (fails when isnamed is false).
Access to attributes
int | dimension () const
| Size of the random variable.
## Protected Attributes
vec | w
| weights of the components
Array< egiw * > | Coms
| Component (epdfs).
bool | destroyComs
| Flag if owning Coms.
ldmat | V
| Extended information matrix of sufficient statistics.
double | nu
| Number of data records (degrees of freedom) of sufficient statistics.
int | dimx
| Dimension of the output.
int | nPsi
| Dimension of the regressor.
int | dim
| dimension of the random variable
RV | rv
| Description of the random variable.

## Detailed Description

Mixture of egiws.

## Member Function Documentation

void bdm::egiw::from_setting | ( | const Setting & | set | ) | `[inline, virtual, inherited]`

Create Gauss-inverse-Wishart density

from structure

                    class = 'egiw';
                    V     = [];               // square matrix
                    nu    = [];               // scalar \nu ((almost) degrees of freedom)
                                                                      // when missing, it will be computed to obtain proper pdf
                    dimx  = [];               // dimension of the wishart part
                    rv = RV({'name'})         // description of RV
                    rvc = RV({'name'})        // description of RV in condition

Reimplemented from bdm::epdf.

References bdm::egiw::dimx, bdm::UI::get(), bdm::egiw::nu, and bdm::egiw::V.

void bdm::egiwmix::set_parameters | ( | const vec & | w,
|  | const Array< egiw * > & | Coms,
|  | bool | copy = `false` |
| ) |  |  |

Set weights `w` and components `Coms` By default Coms are copied inside. Parameter `copy` can be set to false if Coms live externally. Use method ownComs() if Coms should be destroyed by the destructor.

References bdm_assert_debug, bdm_error, Coms, destroyComs, bdm::epdf::dim, bdm::epdf::dimension(), and w.

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

- emix.h
- emix.cpp