root/library/tests/arx_test.cpp @ 582

Revision 477, 2.0 kB (checked in by mido, 15 years ago)

panove, vite, jak jsem peclivej na upravu kodu.. snad se vam bude libit:) konfigurace je v souboru /system/astylerc

  • 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        const epdf& f_thr = Ar.posterior();          // refrence to posterior of the estimator
30
31        //Test estimation
32        int ndat = 100;                 // number of data records
33        vec Yt ( ndat );                // Store generated data
34        Yt.set_subvector ( 0, randn ( ord ) ); //initial values
35        vec rgr ( ord );                // regressor
36        vec Psi ( ord + 1 );            // extended regressor
37
38        //print moments of the prior distribution
39        cout << "prior mean: " << f_thr.mean() << endl;
40        cout << "prior variance: " << f_thr.variance() << endl;
41
42        // cycle over time:
43        for ( int t = ord; t < ndat; t++ ) {
44                //Generate regressor
45                for ( int j = 0; j < ( ord ); j++ ) {
46                        rgr ( j ) = Yt ( t - j - 1 );
47                }
48                //model
49                Yt ( t ) = th * rgr + sqr * NorRNG();
50
51                Psi = concat ( Yt ( t ), rgr ); // Inefficient! Used for compatibility with Matlab!
52                Ar.bayes ( Psi );             // 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.