Base class for general combination of pdfs on discrete support. More...
Base class for general combination of pdfs on discrete support.
Mixtures of Gaussian densities are used internally. Switching to other densities should be trivial.
The merged pdfs are expected to be of the form:
where the resulting merger is a density on . Note that all variables will be joined.
As a result of this feature, each source must be extended to common support
where accumulate variables that were not in the original source. These extensions are calculated on-the-fly.
However, these operations can not be performed in general. Hence, this class merges only sources on common support, . For merging of more general cases, use offsprings merger_mix and merger_grid.
#include <merger.h>
Public Member Functions | |
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. | |
Constructors | |
merger_base () | |
Default constructor. | |
merger_base (const Array< shared_ptr< mpdf > > &S) | |
Constructor from sources. | |
void | set_sources (const Array< shared_ptr< mpdf > > &Sources) |
Function setting the main internal structures. | |
void | set_support (rectangular_support &Sup) |
Set support points from rectangular grid. | |
void | set_support (discrete_support &Sup) |
Set support points from dicrete grid. | |
void | set_debug_file (const string fname) |
set debug file | |
void | set_method (MERGER_METHOD MTH=DFLT_METHOD, double beta0=DFLT_beta) |
Set internal parameters used in approximation. | |
void | set_support (const epdf &overall, int N) |
Set support points from a pdf by drawing N samples. | |
virtual | ~merger_base () |
Destructor. | |
Mathematical operations | |
virtual void | merge () |
Merge given sources in given points. | |
vec | merge_points (mat &lW) |
Merge log-likelihood values in points using method specified by parameter METHOD. | |
vec | mean () const |
weight w is a | |
mat | covariance () const |
vec | variance () const |
return expected variance (not covariance!) | |
Access to attributes | |
eEmp & | _Smp () |
Access function. | |
void | from_setting (const Setting &set) |
load from setting | |
void | validate () |
This method TODO. | |
Constructors | |
Construction of each epdf should support two types of constructors:
The following constructors should be supported for convenience:
All internal data structures are constructed as empty. Their values (including sizes) will be set by method | |
void | set_parameters (int dim0) |
Matematical Operations | |
virtual vec | sample () const |
Returns a sample, from density . | |
virtual mat | sample_m (int N) const |
Returns N samples, from density . | |
virtual double | evallog (const vec &val) const |
Compute log-probability of argument val In case the argument is out of suport return -Infinity. | |
virtual vec | evallog_m (const mat &Val) const |
Compute log-probability of multiple values argument val . | |
virtual vec | evallog_m (const Array< vec > &Avec) const |
Compute log-probability of multiple values argument val . | |
virtual shared_ptr< mpdf > | condition (const RV &rv) const |
Return conditional density on the given RV, the remaining rvs will be in conditioning. | |
virtual shared_ptr< epdf > | marginal (const RV &rv) const |
Return marginal density on the given RV, the remainig rvs are intergrated out. | |
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 | |
void | set_rv (const RV &rv0) |
Name its rv. | |
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 | |
Array< shared_ptr< mpdf > > | mpdfs |
Elements of composition. | |
Array< datalink_m2e * > | dls |
Data link for each mpdf in mpdfs. | |
Array< RV > | rvzs |
Array of rvs that are not modelled by mpdfs at all, . | |
Array< datalink_m2e * > | zdls |
Data Links for extension . | |
int | Npoints |
number of support points | |
int | Nsources |
number of sources | |
MERGER_METHOD | METHOD |
switch of the methoh used for merging | |
double | beta |
Prior on the log-normal merging model. | |
eEmp | eSmp |
Projection to empirical density (could also be piece-wise linear). | |
bool | DBG |
debug or not debug | |
it_file * | dbg_file |
debugging file | |
int | dim |
dimension of the random variable | |
RV | rv |
Description of the random variable. | |
Static Protected Attributes | |
static const MERGER_METHOD | DFLT_METHOD = LOGNORMAL |
Default for METHOD. | |
static const double | DFLT_beta = 1.2 |
default for beta |
vec bdm::merger_base::mean | ( | ) | const [inline, virtual] |
weight w is a
sample from merged density
Reimplemented from bdm::epdf.
References bdm::eEmp::_samples(), bdm::eEmp::_w(), bdm::epdf::dim, eSmp, and Npoints.
Referenced by variance().