bdm::KalmanCh Class Reference

Kalman filter in square root form. More...

#include <kalman.h>

List of all members.

Public Member Functions

BM_copy_ () const
 copy constructor
void set_parameters (const mat &A0, const mat &B0, const mat &C0, const mat &D0, const chmat &Q0, const chmat &R0)
 set parameters for adapt from Kalman
void initialize ()
 initialize internal parametetrs
void bayes (const vec &dt)
 Here dt = [yt;ut] of appropriate dimensions.
void from_setting (const Setting &set)
 load basic elements of Kalman from structure
void set_statistics (const vec &mu0, const mat &P0)
void set_statistics (const vec &mu0, const chmat &P0)
const enorm< chmat > & posterior () const
 posterior
shared_ptr< epdfshared_posterior ()
 shared posterior
void validate ()
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.
int _dimx ()
 access function
int _dimy ()
 access function
int _dimu ()
 access function
const mat & _A () const
 access function
const mat & _B () const
 access function
const mat & _C () const
 access function
const mat & _D () const
 access function
const chmat_Q () const
 access function
const chmat_R () const
 access function
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 epdfepredictor () const
 Constructs a predictive density $ f(d_{t+1} |d_{t}, \ldots d_{0}) $.
virtual mpdfpredictor () const
 Constructs conditional density of 1-step ahead predictor $ f(d_{t+1} |d_{t+h-1}, \ldots d_{t}) $.
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

RV yrv
 id of output
RV urv
 id of input
mat _K
 Kalman gain.
shared_ptr< enorm< chmat > > est
 posterior
enorm< chmatfy
 marginal on data f(y|y)
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.
int dimx
 cache of rv.count()
int dimy
 cache of rvy.count()
int dimu
 cache of rvu.count()
mat A
 Matrix A.
mat B
 Matrix B.
mat C
 Matrix C.
mat D
 Matrix D.
chmat Q
 Matrix Q in square-root form.
chmat R
 Matrix R in square-root form.
Internal storage - needs initialize()

pre array (triangular matrix)



mat preA
mat postA
 post array (triangular matrix)

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

Kalman filter in square root form.

Trivial example:

#include "estim/kalman.h"
using namespace bdm;

// estimation of AR(0) model
int main() {
        //dimensions
        int dx = 3, dy = 3, du = 1;
        // matrices
        mat A = eye ( dx );
        mat B = zeros ( dx, du );
        mat C = eye ( dx );
        mat D = zeros ( dy, du );
        mat Q = eye ( dx );
        mat R = 0.1 * eye ( dy );
        //prior
        mat P0 = 100 * eye ( dx );
        vec mu0 = zeros ( dx );
        // Estimator
        KalmanCh KF;
        KF.set_parameters ( A, B, C, D,/*covariances*/ Q, R );
        KF.set_statistics ( mu0, P0 );
        // Estimation loop
        for ( int i = 0; i < 100; i++ ) {
                KF.bayes ( randn ( dx + du ) );
        }
        //print results
        cout << "Posterior estimate of x is: "  << endl;
        cout << "mean: " << KF.posterior().mean() << endl;
        cout << "variance: " << KF.posterior().variance() << endl;
}

Complete constructor:


Member Function Documentation

void bdm::KalmanCh::bayes ( const vec &  dt  )  [virtual]
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.

References bdm_error.

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


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

Generated on Sun Sep 13 22:40:43 2009 for mixpp by  doxygen 1.6.1