#include <emix.h>
Public Member Functions | |
emix () | |
Default constructor. | |
void | set_parameters (const vec &w, const Array< epdf * > &Coms, bool copy=false) |
vec | sample () const |
Returns a sample, from density . | |
vec | mean () const |
return expected value | |
vec | variance () const |
return expected variance (not covariance!) | |
double | evallog (const vec &val) const |
vec | evallog_m (const mat &Val) const |
Compute log-probability of multiple values argument val . | |
mat | evallog_M (const mat &Val) const |
Auxiliary function that returns pdflog for each component. | |
emix * | marginal (const RV &rv) const |
Return marginal density on the given RV, the remainig rvs are intergrated out. | |
mratio * | condition (const RV &rv) const |
Return conditional density on the given RV, the remaining rvs will be in conditioning. | |
vec & | _w () |
returns a pointer to the internal mean value. Use with Care! | |
void | ownComs () |
Auxiliary function for taking ownership of the Coms(). | |
epdf * | _Coms (int i) |
access function | |
void | set_rv (const RV &rv) |
Name its rv. | |
void | from_setting (const Setting &set) |
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 | |
Construction of each epdf should support two types of constructors:
set_parameters() . This way references can be initialized in constructors. | |
void | set_parameters (int dim0) |
Matematical Operations | |
virtual mat | sample_m (int N) const |
Returns N samples, from density . | |
virtual vec | evallog_m (const Array< vec > &Avec) const |
Compute log-probability of multiple values argument val . | |
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< epdf * > | Coms |
Component (epdfs). | |
bool | destroyComs |
Flag if owning Coms. | |
int | dim |
dimension of the random variable | |
RV | rv |
Description of the random variable. |
Density function:
where is any density on random variable , called component,
double bdm::emix::evallog | ( | const vec & | val | ) | const [inline, virtual] |
void bdm::epdf::from_setting | ( | const Setting & | set | ) | [inline, virtual, inherited] |
Load from structure with elements:
{ rv = {class="RV", names=(...),}; // RV describing meaning of random variable // elements of offsprings }
Reimplemented from bdm::root.
Reimplemented in bdm::enorm< sq_T >, bdm::egiw, bdm::egamma, bdm::euni, bdm::merger_base, bdm::enorm< ldmat >, bdm::enorm< chmat >, and bdm::enorm< fsqmat >.
References bdm::epdf::set_rv().
void bdm::emix::set_parameters | ( | const vec & | w, | |
const Array< epdf * > & | 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::epdf::_rv(), Coms, destroyComs, bdm::epdf::dim, bdm::epdf::dimension(), bdm::RV::equal(), bdm::epdf::isnamed(), set_rv(), and w.
Referenced by bdm::MixEF::epredictor(), bdm::egiwmix::marginal(), and marginal().