Changeset 213 for mpdm/merg_pred.cpp

Show
Ignore:
Timestamp:
11/25/08 12:24:42 (15 years ago)
Author:
smidl
Message:

Merging - new experiment

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • mpdm/merg_pred.cpp

    r211 r213  
    1515        RV u1 ( "{u1 }" ); 
    1616        RV u2 ( "{u2 }" ); 
    17         RV ym=y; ym.t(-1); 
    18         RV yy = y; yy.add(ym); 
    19         RV uu=u1; uu.add(u2); 
     17        RV ym=y; ym.t ( -1 ); 
     18        RV yy = y; yy.add ( ym ); 
     19        RV uu=u1; uu.add ( u2 ); 
    2020 
    2121        // Full system 
     
    4444 
    4545        // Logging 
    46         dirfilelog L ( "exp/merg",ndat ); 
     46        dirfilelog L ( "exp/merg",10 ); 
    4747 
    4848        int Li_Eth1 = L.add ( thri,"P1" ); 
     
    5656 
    5757        vec Yt ( ndat ); 
    58         vec yt(1); 
     58        vec yt ( 1 ); 
    5959 
    6060        Yt.set_subvector ( 0,randn ( ord ) ); //initial values 
    61         vec rgrg ( thrg.count() -1); // constant terms are in! 
    62         vec rgr1 ( thri.count() -1); 
    63         vec rgr2 ( thri.count() -1); 
     61        vec rgrg ( thrg.count() -1 ); // constant terms are in! 
     62        vec rgr1 ( thri.count() -1 ); 
     63        vec rgr2 ( thri.count() -1 ); 
    6464 
    65         vec PredLLs(5); 
    66         vec PostLLs(3); 
    67         vec PredLLs_m=zeros(5); 
     65        vec PredLLs ( 5 ); 
     66        vec PostLLs ( 3 ); 
     67        vec PredLLs_m=zeros ( 5 ); 
    6868        ivec ind_r1 = "0 1 3"; 
    6969        ivec ind_r2 = "0 2 3"; 
     
    7373                        rgrg ( 0 ) =Yt ( t-1 ); 
    7474                        rgrg ( 1 ) = pow(sin ( ( t/40.0 ) *pi ),3); 
    75                         rgrg ( 2 ) = pow(cos ( ( t/40.0 ) *pi ),3); 
    76                         rgrg (3) = 1.0; // constant term 
    77                          
    78                         rgr1(0) = rgrg(0); rgr1(1) = rgrg(1); rgr1(2) = rgrg(3); // no u2 
    79                         rgr2(0) = rgrg(0); rgr2(1) = rgrg(2); rgr2(2) = rgrg(3); // no u1 
     75                        rgrg ( 2 ) = pow(cos ( ( t/60.0 ) *pi ),3); 
     76                        rgrg ( 3 ) = 1.0; // constant term 
     77 
     78                        rgr1 ( 0 ) = rgrg ( 0 ); rgr1 ( 1 ) = rgrg ( 1 ); rgr1 ( 2 ) = rgrg ( 3 ); // no u2 
     79                        rgr2 ( 0 ) = rgrg ( 0 ); rgr2 ( 1 ) = rgrg ( 2 ); rgr2 ( 2 ) = rgrg ( 3 ); // no u1 
    8080 
    8181                        Yt ( t ) = thg*rgrg + sqr * NorRNG(); 
    8282 
    8383                        // Test predictors 
    84                         if (t>2){ 
    85                                 mlnorm<ldmat>* P1p = P1.predictor(y,concat(ym,u1)); 
    86                                 mlnorm<ldmat>* P2p = P2.predictor(y,concat(ym,u2)); 
    87                                 mlnorm<ldmat>* Pgp = PG.predictor(y,concat(ym,uu)); 
    88                                  
    89                                 Array<mpdf*> A(2); A(0)=P1p;A(1)=P2p; 
    90                                 merger M(A); 
    91                                 enorm<ldmat> g0(concat(yy,uu)); g0.set_parameters("0 0 0 0 ",3*eye(4)); 
    92                                 M.set_parameters(10000000.0, 100,1); 
    93                                 M.merge(&g0); 
    94                                  
    95                                 yt(0) = Yt(t); 
    96                                 double P1pl = P1p->evallogcond(yt,rgr1);         
    97                                 double P2pl = P2p->evallogcond(yt,rgr2);         
    98                                 double PGpl = Pgp->evallogcond(yt,rgrg);         
     84                        if ( t>2 ) { 
     85                                        mlnorm<ldmat>* P1p = P1.predictor ( y,concat ( ym,u1 ) ); 
     86                                        mlnorm<ldmat>* P2p = P2.predictor ( y,concat ( ym,u2 ) ); 
     87                                        mlnorm<ldmat>* Pgp = PG.predictor ( y,concat ( ym,uu ) ); 
     88 
     89                                        Array<mpdf*> A ( 2 ); A ( 0 ) =P1p;A ( 1 ) =P2p; 
     90                                        merger M ( A ); 
     91                                        enorm<ldmat> g0 ( concat ( yy,uu ) ); g0.set_parameters ( "0 0 0 0 ",3*eye ( 4 ) ); 
     92                                        M.set_parameters ( 1e8, 101,1 ); 
     93                                        M.merge ( &g0 ); 
     94                                yt ( 0 ) = Yt ( t ); 
     95                                double P1pl = P1p->evallogcond ( yt,rgr1 ); 
     96                                double P2pl = P2p->evallogcond ( yt,rgr2 ); 
     97                                double PGpl = Pgp->evallogcond ( yt,rgrg ); 
    9998                                { 
    100                                         cout << "yt: " << yt << endl; 
     99                                        cout << "T: " << t << "yt: " << yt << endl; 
    101100                                        cout << "yt_1: " << P1p->_epdf().mean() << endl; 
     101                                        cout << *P1p <<endl; 
    102102                                        cout << "yt_2: " << P2p->_epdf().mean() << endl; 
    103103                                        cout << "yt_G: " << P2p->_epdf().mean() << endl; 
     
    106106                                double cP2pl; 
    107107                                { 
    108                                         ARX* Apred = (ARX*)M._Mix()._Coms(0); 
    109                                         enorm<ldmat>* MP= Apred->predictor(concat(yy,uu)); 
    110                                         enorm<ldmat>* mP1p = (enorm<ldmat>*)MP->marginal(concat(yy,u1)); 
    111                                         enorm<ldmat>* mP2p = (enorm<ldmat>*)MP->marginal(concat(yy,u2)); 
    112                                         mlnorm<ldmat>* cP1p = (mlnorm<ldmat>*)mP1p->condition(y); 
    113                                         mlnorm<ldmat>* cP2p = (mlnorm<ldmat>*)mP2p->condition(y); 
     108                                        ARX* Apred = ( ARX* ) M._Mix()._Coms ( 0 ); 
     109                                        enorm<ldmat>* MP= Apred->predictor ( concat ( yy,uu ) ); 
     110                                        enorm<ldmat>* mP1p = ( enorm<ldmat>* ) MP->marginal ( concat ( yy,u1 ) ); 
     111                                        enorm<ldmat>* mP2p = ( enorm<ldmat>* ) MP->marginal ( concat ( yy,u2 ) ); 
     112                                        mlnorm<ldmat>* cP1p = ( mlnorm<ldmat>* ) mP1p->condition ( y ); 
     113                                        mlnorm<ldmat>* cP2p = ( mlnorm<ldmat>* ) mP2p->condition ( y ); 
    114114 
    115                                         cP1pl = cP1p->evallogcond(yt,rgr1);      
    116                                         cP2pl = cP2p->evallogcond(yt,rgr2);      
    117                                  
     115                                        cP1pl = cP1p->evallogcond ( yt,rgr1 ); 
     116                                        cP2pl = cP2p->evallogcond ( yt,rgr2 ); 
     117 
    118118                                        cout << "ytm1: " << cP1p->_epdf().mean() << endl; 
    119119                                        cout << "ytm2: " << cP2p->_epdf().mean() << endl; 
     120                                        cout << *cP2p << endl; 
    120121                                } 
    121122 
    122123                                PredLLs *=frg; 
    123                                 PredLLs += log(concat(vec_3(P1pl, P2pl, PGpl), vec_2(cP1pl,cP2pl))); 
    124                                 L.logit(Li_Pred, PredLLs); //log-normal 
    125                                  
     124                                PredLLs += concat ( vec_3 ( P1pl, P2pl, PGpl ), vec_2 ( cP1pl,cP2pl ) ); 
     125                                L.logit ( Li_Pred, PredLLs ); //log-normal 
     126 
    126127                                delete P1p; 
    127128                                delete P2p; 
    128129                                delete Pgp; 
    129130                        } 
    130                          
    131                         // 1st 
    132                         P1.bayes ( concat(Yt(t),rgr1) ); 
    133                         // 2nd 
    134                         P2.bayes ( concat(Yt(t),rgr2) ); 
    135131 
    136                         //Global 
    137                         PG.bayes ( concat ( Yt ( t ),rgrg ) ); 
    138                          
     132                        if ( t<100 ) { 
     133                                // 1st 
     134                                P1.bayes ( concat ( Yt ( t ),rgr1 ) ); 
     135                                // 2nd 
     136                                P2.bayes ( concat ( Yt ( t ),rgr2 ) ); 
     137 
     138                                //Global 
     139                                PG.bayes ( concat ( Yt ( t ),rgrg ) ); 
     140                        } 
    139141                        //Merger 
    140142                } 
     
    146148                PostLLs += vec_3 ( P1._ll(), P2._ll(), PG._ll() ); 
    147149                L.logit ( Li_LL, PostLLs ); 
    148                 L.step (  ); 
     150                L.step ( ); 
    149151        } 
    150152        L.finalize( );