# bdm::merger_base Class Reference

Base class for general combination of pdfs on discrete support. More...

`#include <merger.h>`

List of all members.

## Public Member Functions
void | set_elements (const Array< mpdf * > A0)
RV | getrv (bool checkoverlap=false)
| find common rv, flag
void | setrvc (const RV &rv, RV &rvc)
| common rvc of all mpdfs is written to rvc
virtual string | to_string ()
| This method returns a basic info about the current instance.
virtual void | from_setting (const Setting &root)
| This method arrange instance properties according the data stored in the Setting structure.
virtual void | to_setting (Setting &root) const
| This method save all the instance properties into the Setting structure.
virtual void | validate ()
| This method TODO.
Constructors
| merger_base ()
| Empty constructor.
| merger_base (const Array< mpdf * > &S)
| Constructor from sources.
void | set_sources (const Array< mpdf * > &Sources)
| Function setting the main internal structures.
void | set_debug_file (const string fname)
| set debug file
void | set_parameters (double beta0, MERGER_METHOD MTH)
| Set internal parameters used in approximation.
void | set_support (epdf &overall, int N)
| Set support points from a pdf.
virtual | ~merger_base ()
| Destructor.
Mathematical operations
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.
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)
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`.
virtual vec | evallog_m (const mat &Val) const
| Compute log-probability of multiple values argument `val`.
virtual mpdf * | condition (const RV &rv) const
| Return conditional density on the given RV, the remaining rvs will be in conditioning.
virtual 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
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:
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< 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 | Ns
| 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
| debugging file
Array< mpdf * > | mpdfs
| Elements of composition.
int | dim
| dimension of the random variable
RV | rv
| Description of the random variable.

## Detailed Description

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.

## Member Function Documentation

RV bdm::compositepdf::getrv | ( | bool | checkoverlap = `false` | ) | `[inherited]`

find common rv, flag

Parameters:

  | checkoverlap | modifies whether overlaps are acceptable

References bdm::RV::add(), and bdm::compositepdf::mpdfs.

Referenced by set_sources().

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 Ns.

Referenced by variance().

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

- merger.h
- merger.cpp