Changeset 213 for mpdm/merg_pred.cpp
- Timestamp:
- 11/25/08 12:24:42 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
mpdm/merg_pred.cpp
r211 r213 15 15 RV u1 ( "{u1 }" ); 16 16 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 ); 20 20 21 21 // Full system … … 44 44 45 45 // Logging 46 dirfilelog L ( "exp/merg", ndat);46 dirfilelog L ( "exp/merg",10 ); 47 47 48 48 int Li_Eth1 = L.add ( thri,"P1" ); … … 56 56 57 57 vec Yt ( ndat ); 58 vec yt (1);58 vec yt ( 1 ); 59 59 60 60 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 ); 64 64 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 ); 68 68 ivec ind_r1 = "0 1 3"; 69 69 ivec ind_r2 = "0 2 3"; … … 73 73 rgrg ( 0 ) =Yt ( t-1 ); 74 74 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 term77 78 rgr1 (0) = rgrg(0); rgr1(1) = rgrg(1); rgr1(2) = rgrg(3); // no u279 rgr2 (0) = rgrg(0); rgr2(1) = rgrg(2); rgr2(2) = rgrg(3); // no u175 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 80 80 81 81 Yt ( t ) = thg*rgrg + sqr * NorRNG(); 82 82 83 83 // 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 ); 99 98 { 100 cout << " yt: " << yt << endl;99 cout << "T: " << t << "yt: " << yt << endl; 101 100 cout << "yt_1: " << P1p->_epdf().mean() << endl; 101 cout << *P1p <<endl; 102 102 cout << "yt_2: " << P2p->_epdf().mean() << endl; 103 103 cout << "yt_G: " << P2p->_epdf().mean() << endl; … … 106 106 double cP2pl; 107 107 { 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 ); 114 114 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 118 118 cout << "ytm1: " << cP1p->_epdf().mean() << endl; 119 119 cout << "ytm2: " << cP2p->_epdf().mean() << endl; 120 cout << *cP2p << endl; 120 121 } 121 122 122 123 PredLLs *=frg; 123 PredLLs += log(concat(vec_3(P1pl, P2pl, PGpl), vec_2(cP1pl,cP2pl)));124 L.logit (Li_Pred, PredLLs); //log-normal125 124 PredLLs += concat ( vec_3 ( P1pl, P2pl, PGpl ), vec_2 ( cP1pl,cP2pl ) ); 125 L.logit ( Li_Pred, PredLLs ); //log-normal 126 126 127 delete P1p; 127 128 delete P2p; 128 129 delete Pgp; 129 130 } 130 131 // 1st132 P1.bayes ( concat(Yt(t),rgr1) );133 // 2nd134 P2.bayes ( concat(Yt(t),rgr2) );135 131 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 } 139 141 //Merger 140 142 } … … 146 148 PostLLs += vec_3 ( P1._ll(), P2._ll(), PG._ll() ); 147 149 L.logit ( Li_LL, PostLLs ); 148 L.step ( 150 L.step ( ); 149 151 } 150 152 L.finalize( );