Changeset 310 for bdm

Show
Ignore:
Timestamp:
04/09/09 14:33:08 (15 years ago)
Author:
smidl
Message:

Published example 2d

Location:
bdm
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • bdm/estim/merger.cpp

    r301 r310  
    8888 
    8989                        // This will be active only later in iterations!!! 
    90                         if ( ( !fix_smp ) & ( 1./sum_sqr ( w ) <0.9*Ns ) ) 
     90                        if ( ( !fix_smp ) & ( 1./sum_sqr ( w ) <effss_coef*Ns ) ) 
    9191                        { 
    9292                                // Generate new samples 
     
    9898                                        set_col_part ( Smp_ex,i,Smp ( i ) ); 
    9999                                        //Importance of the mixture 
    100                                         lw_mix ( i ) =Mix.logpred (Smp_ex.get_col(i) ); 
     100                                        //lw_mix ( i ) =Mix.logpred (Smp_ex.get_col(i) ); 
     101                                        lw_mix ( i ) = Mpred->evallog(Smp(i)); 
    101102                                } 
    102103                                if ( 1 ) 
    103104                                { 
    104105                                        cout<<"Resampling =" << 1./sum_sqr ( w ) << endl; 
     106                                        cout << Mix._e()->mean() <<endl; 
    105107                                        cout << sum ( Smp_ex,2 ) /Ns <<endl; 
    106108                                        cout << Smp_ex*Smp_ex.T() /Ns << endl; 
     
    111113                                sprintf ( str,"Mpred_mean%d",niter ); 
    112114                                *dbg << Name ( str ) << Mpred->mean(); 
     115                                sprintf ( str,"Mpred_var%d",niter ); 
     116                                *dbg << Name ( str ) << Mpred->variance(); 
    113117 
    114118 
     
    216220                        // ==== stopping rule === 
    217221                        niter++; 
    218                         converged = ( niter>20 ); 
     222                        converged = ( niter>40 ); 
    219223                } 
    220224                delete Mpred; 
  • bdm/estim/merger.h

    r299 r310  
    4747                        //! Projection to empirical density 
    4848                        eEmp eSmp; 
     49                        //! coefficient of resampling 
     50                        double effss_coef; 
    4951 
    5052                        //! debug or not debug 
     
    8890                        void debug_file ( const string fname ) { if ( DBG ) delete dbg; dbg = new it_file ( fname ); if ( dbg ) DBG=true;} 
    8991//! Set internal parameters used in approximation 
    90                         void set_parameters ( double beta0, int Ns0, int Nc0 ) {beta=beta0;Ns=Ns0;Nc=Nc0;eSmp.set_parameters ( Ns0,false );} 
     92                        void set_parameters ( double beta0, int Ns0, int Nc0, double effss_coef0=0.5 ) {beta=beta0; 
     93                                Ns=Ns0; 
     94                                Nc=Nc0; 
     95                                effss_coef=effss_coef0; 
     96                                eSmp.set_parameters ( Ns0,false ); 
     97                        } 
    9198                        void set_grid ( Array<vec> &XYZ ) 
    9299                        { 
  • bdm/stat/emix.h

    r286 r310  
    112112                //non-central moment 
    113113                vec mom2 = zeros ( dim ); 
    114                 for ( int i = 0;i < w.length();i++ ) {mom2 += w ( i ) * pow ( Coms ( i )->mean(),2 ); } 
     114                for ( int i = 0;i < w.length();i++ ) {mom2 += w ( i ) * (Coms(i)->variance() + pow ( Coms ( i )->mean(),2 )); } 
    115115                //central moment 
    116116                return mom2-pow ( mean(),2 ); 
  • bdm/stat/libEF.h

    r299 r310  
    230230                        //!sufficient statistics 
    231231                        vec beta; 
    232                         //!speedup variable 
    233                         double gamma; 
    234232                public: 
    235233                        //!\name Constructors 
     
    243241                                beta= beta0; 
    244242                                dim = beta.length(); 
    245                                 gamma = sum ( beta ); 
    246243                        } 
    247244                        //!@} 
    248245 
    249246                        vec sample() const {it_error ( "Not implemented" );return vec_1 ( 0.0 );}; 
    250                         vec mean() const {return beta/gamma;}; 
    251                         vec variance() const {return elem_mult ( beta, ( beta+1 ) ) / ( gamma* ( gamma+1 ) );} 
     247                        vec mean() const {return beta/sum(beta);}; 
     248                        vec variance() const {double gamma =sum(beta); return elem_mult ( beta, ( beta+1 ) ) / ( gamma* ( gamma+1 ) );} 
    252249                        //! In this instance, val is ... 
    253250                        double evallog_nn ( const vec &val ) const