# bdm::MultiModel Class Reference

(Switching) Multiple Model The model runs several models in parallel and evaluates thier weights (fittness). More...

`#include <kalman.h>`

List of all members.

## Public Member Functions
void | set_parameters (Array< EKFCh * > A, int pol0=1)
void | bayes (const vec &dt)
| Incremental Bayes rule.
const enorm< chmat > * | _e () const
const enorm< chmat > & | posterior () const
void | from_setting (const Setting &set)
| This method arrange instance properties according the data stored in the Setting structure.
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
virtual BM * | _copy_ () const
Mathematical operations
virtual void | bayesB (const mat &Dt)
| Batch Bayes rule (columns of Dt are observations).
virtual double | logpred (const vec &dt) const
vec | logpred_m (const mat &dt) const
| Matrix version of logpred.
virtual epdf * | epredictor () const
| Constructs a predictive density .
virtual mpdf * | predictor () const
| Constructs a conditional density 1-step ahead predictor.
Access to attributes
const RV & | _drv () const
void | set_drv (const RV &rv)
void | set_rv (const RV &rv)
double | _ll () const
void | set_evalll (bool evl0)
## Protected Attributes
Array< EKFCh * > | Models
| List of models between which we switch.
vec | w
| vector of model weights
vec | _lls
| cache of model lls
int | policy
| type of switching policy [1=maximum,2=...]
enorm< chmat > | est
| internal statistics
RV | drv
| Random variable of the data (optional).
double | ll
| Logarithm of marginalized data likelihood.
bool | evalll
| If true, the filter will compute likelihood of the data record and store it in `ll` . Set to false if you want to save computational time.
## Extension to conditional BM
This extension is useful e.g. in Marginalized Particle Filter (bdm::MPF). Alternatively, it can be used for automated connection to DS when the condition is observed
const RV & | _rvc () const
| access function
virtual void | condition (const vec &val)
| Substitute `val` for `rvc`.
RV | rvc
| Name of extension variable.
## Logging of results
virtual void | set_options (const string &opt)
| Set boolean options from a string recognized are: "logbounds,logll".
virtual void | log_add (logger &L, const string &name="")
| Add all logged variables to a logger.
virtual void | logit (logger &L)
ivec | LIDs
| IDs of storages in loggers 4:[1=mean,2=lb,3=ub,4=ll].
ivec | LFlags
| Flags for logging - same size as LIDs, each entry correspond to the same in LIDs.

## Detailed Description

(Switching) Multiple Model The model runs several models in parallel and evaluates thier weights (fittness).

The statistics of the resulting density are merged using (geometric?) combination.

The next step is performed with the new statistics for all models.

## Member Function Documentation

virtual BM* bdm::BM::_copy_ | ( |  | ) | const`[inline, virtual, inherited]`

Copy function required in vectors, Arrays of BM etc. Have to be DELETED manually! Prototype:

     BM* _copy_() const {return new BM(*this);}

Reimplemented in bdm::ARX, bdm::KalmanCh, bdm::EKF< sq_T >, bdm::EKFCh, and bdm::BMEF.

void bdm::MultiModel::bayes | ( | const vec & | dt | ) | `[inline, virtual]`

Incremental Bayes rule.

Parameters:

  | dt | vector of input data

Implements bdm::BM.

References _lls, bdm::enorm< sq_T >::_R(), est, bdm::enorm< sq_T >::mean(), Models, policy, bdm::enorm< sq_T >::set_parameters(), and w.

virtual double bdm::BM::logpred | ( | const vec & | dt | ) | const`[inline, virtual, inherited]`

Evaluates predictive log-likelihood of the given data record I.e. marginal likelihood of the data with the posterior integrated out.

Reimplemented in bdm::ARX, bdm::MixEF, and bdm::multiBM.

Referenced by bdm::BM::logpred_m().

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

- kalman.h
- kalman.cpp