root/library/tests/arx_test.cpp @ 679

Revision 679, 1.9 kB (checked in by smidl, 15 years ago)

Major changes in BM -- OK is only test suite and tests/tutorial -- the rest is broken!!!

  • 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 );
24        V0 ( 0.0 ) = 1; //
25        double nu0 = ord + 5.0;
26
27        ARX Ar;
28        Ar.set_statistics ( 1, V0, nu0 );               // Estimator
29        Ar.set_constant(false);
30        Ar.validate();
31        const epdf& f_thr = Ar.posterior();          // refrence to posterior of the estimator
32
33        //Test estimation
34        int ndat = 100;                 // number of data records
35        vec Yt ( ndat );                // Store generated data
36        Yt.set_subvector ( 0, randn ( ord ) ); //initial values
37        vec rgr ( ord );                // regressor
38
39        //print moments of the prior distribution
40        cout << "prior mean: " << f_thr.mean() << endl;
41        cout << "prior variance: " << f_thr.variance() << endl;
42
43        // cycle over time:
44        for ( int t = ord; t < ndat; t++ ) {
45                //Generate regressor
46                for ( int j = 0; j < ( ord ); j++ ) {
47                        rgr ( j ) = Yt ( t - j - 1 );
48                }
49                //model
50                Yt ( t ) = th * rgr + sqr * NorRNG();
51
52                Ar.bayes ( vec_1(Yt(t)), rgr );             // Bayes rule
53
54                // Build predictor
55                mlstudent*      Pr = Ar.predictor_student ( );
56                // Test similarity of likelihoods from the Bayes rule and the predictor
57                cout << "BR log-lik: " << Ar._ll();
58                cout << " , predictor ll: " <<  Pr->evallogcond ( vec_1 ( Yt ( t ) ), rgr )  << endl;
59                delete Pr;
60        }
61        //print posterior moments
62        cout << "posterior mean: " << f_thr.mean() << endl;
63        cout << "posterior variance: " << f_thr.variance() << endl;
64
65        // Test brute-froce structure estimation
66
67        cout << "Structure estimation: " << endl;
68        cout << Ar.structure_est ( egiw ( 1, V0, nu0 ) ) << endl;
69}
Note: See TracBrowser for help on using the browser.