Changeset 115

Show
Ignore:
Timestamp:
05/23/08 18:47:11 (16 years ago)
Author:
smidl
Message:

zmena mmix_triv na mepdf

Files:
7 modified

Legend:

Unmodified
Added
Removed
  • bdm/estim/arx.cpp

    r97 r115  
    1313                ll = lnc - last_lognc; 
    1414                last_lognc = lnc; 
     15                tll +=ll; 
    1516        } 
    1617} 
     
    3940        ivec maxindeces=indeces; 
    4041 
     42 
     43cout << "bb:(" << indeces <<") ll=" << Egll <<endl; 
     44 
    4145        //try to remove only one rv 
    4246        for ( i=0;i<end;i++ ) { 
     
    5054                Vp0.ldform ( Li0,Vo0._D() ); 
    5155                tmpll = Eg.lognc()-Eg0.lognc(); // likelihood is difference of norm. coefs. 
     56 
     57cout << "i=(" << i <<") ll=" << tmpll <<endl; 
     58                 
    5259                // 
    5360                if ( tmpll > Egll ) { //increase of the likelihood 
  • bdm/estim/arx.h

    r97 r115  
    4646        //! cached value of lognc() in the previous step (used in evaluation of \c ll ) 
    4747        double last_lognc; 
     48        //! total likelihood 
     49        double tll; 
    4850public: 
    4951        //! 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;}; 
    5153        //! Here \f$dt = [y_t psi_t] \f$. 
    5254        void bayes ( const vec &dt ); 
     
    5456        //! Brute force structure estimation.\return indeces of accepted regressors. 
    5557        ivec structure_est(egiw Eg0); 
     58        //!access function 
     59        double _tll(){return tll;} 
    5660}; 
    5761 
  • bdm/estim/libPF.h

    r98 r115  
    131131 
    132132//SimStr: 
    133         double SSAT;     
     133        double SSAT; 
    134134}; 
    135135 
     
    156156                if ( lls ( i ) >mlls ) mlls=lls ( i ); //find maximum likelihood (for numerical stability) 
    157157        } 
    158          
     158 
    159159        if ( true ) { 
    160160                for ( i=0;i<n;i++ ) { 
     
    163163                        sumL2WL += exp ( 2*lls ( i ) ) *WL; 
    164164                } 
    165                 SSAT  = sumL2WL/(sumLWL*sumLWL); 
    166         } 
    167  
     165                SSAT  = sumL2WL/ ( sumLWL*sumLWL ); 
     166        } 
     167 
     168        double sum_w=0.0; 
    168169        // compute weights 
    169170        for ( i=0;i<n;i++ ) { 
    170171                _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        } 
    180180 
    181181 
  • bdm/stat/emix.h

    r107 r115  
    4848                return mu; 
    4949        } 
    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        }; 
    5156 
    5257//Access methods 
     
    5560}; 
    5661 
    57 class mmix_triv : public mpdf { 
     62/*! \brief Chain rule decomposition of epdf 
     63 
     64 
     65*/ 
     66class eprod: public epdf { 
     67protected: 
     68        Array<epdf*> epdfs; 
     69        Array<mpdf*> mpdfs; 
    5870public: 
    59         //!Default constructor 
    60         mmix_triv ( const RV &rv, const RV &rvc, emix* em ) :mpdf ( rv,rvc ) {ep=em;}; 
     71         
     72         
    6173}; 
    6274 
  • bdm/stat/libBM.h

    r102 r115  
    171171        virtual mat samplecond ( vec &cond, vec &ll, int N ) { 
    172172                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 );} 
    174175                return temp; 
    175176        }; 
     
    189190        //!access function 
    190191        epdf& _epdf() {return *ep;} 
     192}; 
     193 
     194/*! \brief Unconditional mpdf, allows using epdf in the role of mpdf.  
     195 
     196WARNING: the class does not check validity of the \c ep pointer nor its existence. 
     197*/ 
     198class mepdf : public mpdf { 
     199public: 
     200        //!Default constructor 
     201        mepdf ( const RV &rv, const RV &rvc, epdf* em ) :mpdf ( rv,rvc ) {ep=em;}; 
    191202}; 
    192203 
  • pmsm/pmsm_mix.cpp

    r105 r115  
    153153        cout << Eevol.sample() <<endl; 
    154154 
    155         mmix_triv evolQR(rQR,rQR,&Eevol); 
     155        mepdf evolQR(rQR,rQR,&Eevol); 
    156156        MPF<EKFful_unQR> M ( rx,rQR, evolQR, evolQR, Npar, EKU ); 
    157157 
  • tests/testSmp.cpp

    r104 r115  
    7979 
    8080        cout << "======= MMix_triv ======== " << endl; 
    81         mmix_triv mMix(rv,rv,&eMix); 
     81        mepdf mMix(rv,rv,&eMix); 
    8282         
    8383        Smp = mMix.samplecond(mu0,lik,N);