bdm::ARX Class Reference

Linear Autoregressive model with Gaussian noise. More...

#include <arx.h>

List of all members.

Public Member Functions

void set_statistics (const BMEF *BM0)
 Set sufficient statistics.
void from_setting (const Setting &set)
void validate ()
 This method TODO.
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
 ARX (const double frg0=1.0)
 ARX (const ARX &A0)
ARX_copy_ () const
void set_parameters (double frg0)
void set_constant (bool const0)
void set_statistics (int dimx0, const ldmat V0, double nu0=-1.0)
Mathematical operations
void bayes (const vec &dt, const double w)
 Weighted Bayes $ dt = [y_t psi_t] $.
void bayes (const vec &dt)
 Incremental Bayes rule.
double logpred (const vec &dt) const
void flatten (const BMEF *B)
 Flatten the posterior according to the given BMEF (of the same type!).
enorm< ldmat > * epredictor (const vec &rgr) const
 Conditioned version of the predictor.
enorm< ldmat > * epredictor () const
 Predictor for empty regressor.
mlnorm< ldmat > * predictor () const
 conditional version of the predictor
mlstudentpredictor_student () const
ivec structure_est (egiw Eg0)
 Brute force structure estimation.
ivec structure_est_LT (egiw Eg0)
 Smarter structure estimation by Ludvik Tesar.
Access attributes
const egiwposterior () const
Connection
void set_rv (const RV &yrv0, const RV &rgrrv0)
RVget_yrv ()
Mathematical operations
virtual void bayesB (const mat &Dt)
 Batch Bayes rule (columns of Dt are observations).
vec logpred_m (const mat &dt) const
 Matrix version of logpred.
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

int dimx
 size of output variable (needed in regressors)
RV _yrv
RV rgrrv
 rv of regressor
egiw est
 Posterior estimate of $\theta,r$ in the form of Normal-inverse Wishart density.
ldmatV
 cached value of est.V
double & nu
 cached value of est.nu
bool have_constant
 switch if constant is modelled or not
vec _dt
 cached value of data vector for have_constant =true
egiw alter_est
 Alternative estimate of parameters, used in stabilized forgetting, see [Kulhavy].
double frg
 forgetting factor
double last_lognc
 cached value of lognc() in the previous step (used in evaluation of ll )
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

Linear Autoregressive model with Gaussian noise.

Regression of the following kind:

\[ y_t = \theta_1 \psi_1 + \theta_2 + \psi_2 +\ldots + \theta_n \psi_n + r e_t \]

where unknown parameters rv are $[\theta r]$, regression vector $\psi=\psi(y_{1:t},u_{1:t})$ is a known function of past outputs and exogeneous variables $u_t$. Distrubances $e_t$ are supposed to be normally distributed:

\[ e_t \sim \mathcal{N}(0,1). \]

See Theory of ARX model estimation for mathematical treatment.

The easiest way how to use the class is:

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

// estimation of AR(0) model
int main() {
        //prior
        mat V0 = 0.00001 * eye ( 2 );
        V0 ( 0, 0 ) = 0.1; //
        ARX Ar;
        Ar.set_statistics ( 1, V0 ); //nu is default (set to have finite moments)
        // forgetting is default: 1.0
        mat Data = concat_vertical ( randn ( 1, 100 ), ones ( 1, 100 ) );
        Ar.bayesB ( Data );

        cout << "Expected value of Theta is: " << Ar.posterior().mean() << endl;
}

Todo:
sort out constant terms - bayes should accept vec without additional 1s

Member Function Documentation

ARX * bdm::ARX::_copy_ (  )  const [virtual]

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

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

Reimplemented from bdm::BMEF.

Reimplemented in bdm::ARXfrg.

void bdm::ARX::bayes ( const vec &  dt  )  [inline, virtual]

Incremental Bayes rule.

Parameters:
dt vector of input data

Reimplemented from bdm::BMEF.

References bayes().

void bdm::ARX::from_setting ( const Setting &  set  )  [virtual]

UI for ARX estimator

        class = 'ARX';
        rv    = RV({names_of_dt} )                 // description of output variables
        rgr   = RV({names_of_regressors}, [-1,-2]} // description of regressor variables
        constant = 1;                              // 0/1 switch if the constant term is modelled or not

        --- optional ---
        V0  = [1 0;0 1];                           // Initial value of information matrix V
          --- OR ---
        dV0 = [1e-3, 1e-5, 1e-5, 1e-5];            // Initial value of diagonal of information matrix V
                                                                                           // default: 1e-3 for rv, 1e-5 for rgr
        nu0 = 6;                                                   // initial value of nu, default: rgrlen + 2
        frg = 1.0;                                 // forgetting, default frg=1.0

        rv_param   = RV({names_of_parameters}}     // description of parametetr names 
                                                                                           // default: ["theta_i" and "r_i"]

Reimplemented from bdm::BM.

References _dt, est, bdm::BMEF::frg, bdm::UI::get(), have_constant, bdm::BM::set_options(), bdm::epdf::set_rv(), and validate().

double bdm::ARX::logpred ( const vec &  dt  )  const [virtual]

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

Reimplemented from bdm::BM.

References est, bdm::BM::evalll, bdm::BMEF::frg, bdm::BMEF::last_lognc, bdm::egiw::lognc(), nu, bdm::ldmat::opupdt(), bdm::egiw::pow(), and V.

ivec bdm::ARX::structure_est ( egiw  Eg0  ) 

Brute force structure estimation.

Returns:
indeces of accepted regressors.

References bdm::epdf::dimension(), est, and bdm::egiw::lognc().

ivec bdm::ARX::structure_est_LT ( egiw  Eg0  ) 

Smarter structure estimation by Ludvik Tesar.

Returns:
indeces of accepted regressors.


Member Data Documentation

RV bdm::ARX::_yrv [protected]

description of modelled data $ y_t $ in the likelihood function Do NOT access directly, only via get_yrv().

Referenced by validate().


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

Generated on Wed Oct 7 17:34:46 2009 for mixpp by  doxygen 1.5.9