root/tests/arx_test.cpp @ 263

Revision 263, 2.0 kB (checked in by smidl, 15 years ago)

UIArxDS test

  • Property svn:eol-style set to native
Line 
1/*!
2\file
3\brief Test of basic elements of the ARX class
4
5See file \ref arx for mathematical background.
6
7This class tests functions ARX::bayes (Bayes rule) ARX::structure_est and ARX::predictor_student
8
9Untested functions: none.
10
11 */
12
13#include <estim/arx.h>
14using namespace bdm;
15
16int main() {
17        // Setup model
18        vec th ( "0.8 -0.3 0.4 0.01" );
19        int ord=th.length(); //auxiliary variable
20        double sqr=0.1;
21
22        //Test constructor
23        mat V0 = 0.00001*eye ( ord+1 ); V0 ( 0.0 ) = 1; //
24        double nu0 = ord+5.0;
25
26        RV thr ( "{theta_and_r }",vec_1 ( ord+1 ) );   // Descriptive random variable
27        ARX Ar ( thr, V0, nu0 );                 // Estimator
28        const epdf& f_thr = Ar._epdf();          // refrence to posterior of the estimator
29
30        //Test estimation
31        int ndat = 100;                 // number of data records
32        vec Yt ( ndat );                // Store generated data
33        Yt.set_subvector ( 0,randn ( ord ) ); //initial values
34        vec rgr ( ord );                // regressor
35        vec Psi ( ord+1 );              // extended regressor
36
37        //print moments of the prior distribution
38        cout << "prior mean: " << f_thr.mean() <<endl;
39        cout << "prior variance: " << f_thr.variance() <<endl;
40
41        // cycle over time:
42        for ( int t=ord; t<ndat; t++ ) {
43                //Generate regressor
44                for ( int j=0;j< ( ord );j++ ) {rgr ( j ) =Yt ( t-j-1 );}
45                //model
46                Yt ( t ) = th*rgr + sqr * NorRNG();
47
48                Psi = concat ( Yt ( t ), rgr ); // Inefficient! Used for compatibility with Matlab!
49                Ar.bayes ( Psi );             // Bayes rule
50
51                // Build predictor
52                mlstudent*      Pr = Ar.predictor_student ( RV ( "{y }" ),RV ( "{y1 y2 y3 y4 }" ) );
53                // Test similarity of likelihoods from the Bayes rule and the predictor
54                cout << "BR log-lik: " << Ar._ll();
55                cout <<" , predictor ll: " <<  Pr->evallogcond ( vec_1 ( Yt ( t ) ),rgr )  <<endl;
56                delete Pr;
57        }
58        //print posterior moments
59        cout << "posterior mean: " << f_thr.mean() <<endl;
60        cout << "posterior variance: " << f_thr.variance() <<endl;
61
62        // Test brute-froce structure estimation
63       
64        cout << "Structure estimation: " <<endl;
65        cout <<Ar.structure_est ( egiw ( thr,V0,nu0 ) ) <<endl;
66}
Note: See TracBrowser for help on using the browser.