Changeset 115
- Timestamp:
- 05/23/08 18:47:11 (17 years ago)
- Files:
-
- 7 modified
Legend:
- Unmodified
- Added
- Removed
-
bdm/estim/arx.cpp
r97 r115 13 13 ll = lnc - last_lognc; 14 14 last_lognc = lnc; 15 tll +=ll; 15 16 } 16 17 } … … 39 40 ivec maxindeces=indeces; 40 41 42 43 cout << "bb:(" << indeces <<") ll=" << Egll <<endl; 44 41 45 //try to remove only one rv 42 46 for ( i=0;i<end;i++ ) { … … 50 54 Vp0.ldform ( Li0,Vo0._D() ); 51 55 tmpll = Eg.lognc()-Eg0.lognc(); // likelihood is difference of norm. coefs. 56 57 cout << "i=(" << i <<") ll=" << tmpll <<endl; 58 52 59 // 53 60 if ( tmpll > Egll ) { //increase of the likelihood -
bdm/estim/arx.h
r97 r115 46 46 //! cached value of lognc() in the previous step (used in evaluation of \c ll ) 47 47 double last_lognc; 48 //! total likelihood 49 double tll; 48 50 public: 49 51 //! Full constructor 50 ARX (RV &rv, mat &V0, double &nu0, double frg0=1.0) : BM(rv),est(rv,V0,nu0), V(est._V()), nu(est._nu()), frg(frg0){last_lognc=est.lognc(); };52 ARX (RV &rv, mat &V0, double &nu0, double frg0=1.0) : BM(rv),est(rv,V0,nu0), V(est._V()), nu(est._nu()), frg(frg0){last_lognc=est.lognc();tll=0.0;}; 51 53 //! Here \f$dt = [y_t psi_t] \f$. 52 54 void bayes ( const vec &dt ); … … 54 56 //! Brute force structure estimation.\return indeces of accepted regressors. 55 57 ivec structure_est(egiw Eg0); 58 //!access function 59 double _tll(){return tll;} 56 60 }; 57 61 -
bdm/estim/libPF.h
r98 r115 131 131 132 132 //SimStr: 133 double SSAT; 133 double SSAT; 134 134 }; 135 135 … … 156 156 if ( lls ( i ) >mlls ) mlls=lls ( i ); //find maximum likelihood (for numerical stability) 157 157 } 158 158 159 159 if ( true ) { 160 160 for ( i=0;i<n;i++ ) { … … 163 163 sumL2WL += exp ( 2*lls ( i ) ) *WL; 164 164 } 165 SSAT = sumL2WL/(sumLWL*sumLWL); 166 } 167 165 SSAT = sumL2WL/ ( sumLWL*sumLWL ); 166 } 167 168 double sum_w=0.0; 168 169 // compute weights 169 170 for ( i=0;i<n;i++ ) { 170 171 _w ( i ) *= exp ( lls ( i ) - mlls ); // multiply w by likelihood 171 } 172 173 if (sum(_w)>0.0){ 174 _w /=sum ( _w ); //? 175 } 176 else 177 { 178 cout<<"sum(w)==0"<<endl; 179 } 172 sum_w+=_w(i); 173 } 174 175 if ( sum_w >0.0 ) { 176 _w /=sum_w; //? 177 } else { 178 cout<<"sum(w)==0"<<endl; 179 } 180 180 181 181 -
bdm/stat/emix.h
r107 r115 48 48 return mu; 49 49 } 50 double evalpdflog ( const vec &val ) const {int i; double sum=0.0; for ( i=0;i<w.length();i++ ) {sum+=w ( i ) *Coms ( i )->evalpdflog ( val );} return log ( sum );}; 50 double evalpdflog ( const vec &val ) const { 51 int i; 52 double sum=0.0; 53 for ( i=0;i<w.length();i++ ) {sum+=w ( i ) *Coms ( i )->evalpdflog ( val );} 54 return log ( sum ); 55 }; 51 56 52 57 //Access methods … … 55 60 }; 56 61 57 class mmix_triv : public mpdf { 62 /*! \brief Chain rule decomposition of epdf 63 64 65 */ 66 class eprod: public epdf { 67 protected: 68 Array<epdf*> epdfs; 69 Array<mpdf*> mpdfs; 58 70 public: 59 //!Default constructor60 mmix_triv ( const RV &rv, const RV &rvc, emix* em ) :mpdf ( rv,rvc ) {ep=em;};71 72 61 73 }; 62 74 -
bdm/stat/libBM.h
r102 r115 171 171 virtual mat samplecond ( vec &cond, vec &ll, int N ) { 172 172 this->condition ( cond ); 173 mat temp ( rv.count(),N ); vec smp ( rv.count() ); for ( int i=0;i<N;i++ ) {smp=ep->sample() ;temp.set_col ( i, smp );ll ( i ) =ep->evalpdflog ( smp );} 173 mat temp ( rv.count(),N ); vec smp ( rv.count() ); 174 for ( int i=0;i<N;i++ ) {smp=ep->sample() ;temp.set_col ( i, smp );ll ( i ) =ep->evalpdflog ( smp );} 174 175 return temp; 175 176 }; … … 189 190 //!access function 190 191 epdf& _epdf() {return *ep;} 192 }; 193 194 /*! \brief Unconditional mpdf, allows using epdf in the role of mpdf. 195 196 WARNING: the class does not check validity of the \c ep pointer nor its existence. 197 */ 198 class mepdf : public mpdf { 199 public: 200 //!Default constructor 201 mepdf ( const RV &rv, const RV &rvc, epdf* em ) :mpdf ( rv,rvc ) {ep=em;}; 191 202 }; 192 203 -
pmsm/pmsm_mix.cpp
r105 r115 153 153 cout << Eevol.sample() <<endl; 154 154 155 m mix_trivevolQR(rQR,rQR,&Eevol);155 mepdf evolQR(rQR,rQR,&Eevol); 156 156 MPF<EKFful_unQR> M ( rx,rQR, evolQR, evolQR, Npar, EKU ); 157 157 -
tests/testSmp.cpp
r104 r115 79 79 80 80 cout << "======= MMix_triv ======== " << endl; 81 m mix_trivmMix(rv,rv,&eMix);81 mepdf mMix(rv,rv,&eMix); 82 82 83 83 Smp = mMix.samplecond(mu0,lik,N);