Changeset 176 for bdm/stat/libEF.h

Show
Ignore:
Timestamp:
10/09/08 11:32:12 (16 years ago)
Author:
smidl
Message:

Corrections to mixtures & merger

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • bdm/stat/libEF.h

    r173 r176  
    9191        void bayes ( const vec &dt ); 
    9292        //!Flatten the posterior 
    93         virtual void flatten ( BMEF * B) {it_error ( "Not implemented" );} 
     93        virtual void flatten ( BMEF * B ) {it_error ( "Not implemented" );} 
    9494}; 
    9595 
     
    206206        vec sample() const {it_error ( "Not implemented" );return vec_1 ( 0.0 );}; 
    207207        vec mean() const {return beta/sum ( beta );}; 
    208         //! In this instance, val= [theta, r]. For multivariate instances, it is stored columnwise val = [theta_1 theta_2 ... r_1 r_2 ] 
     208        //! In this instance, val is ... 
    209209        double evalpdflog_nn ( const vec &val ) const {return ( beta-1 ) *log ( val );}; 
    210210        double lognc () const { 
     
    216216        //!access function 
    217217        vec& _beta() {return beta;} 
     218        //!Set internal parameters 
     219        void set_parameters(const vec &beta0){ 
     220                if(beta0.length()!=beta.length()){ 
     221                        it_assert_debug(rv.length()==1,"Undefined"); 
     222                        rv.set_size(0,beta0.length()); 
     223                } 
     224                beta= beta0; 
     225        } 
    218226}; 
    219227 
     
    239247                eDirich pred ( est ); 
    240248                vec &beta = pred._beta(); 
    241                  
     249 
    242250                double lll; 
    243251                if ( frg<1.0 ) 
     
    250258                return pred.lognc()-lll; 
    251259        } 
    252         void flatten (BMEF* B ) { 
    253                 eDirich* E=dynamic_cast<eDirich*>(B); 
     260        void flatten ( BMEF* B ) { 
     261                eDirich* E=dynamic_cast<eDirich*> ( B ); 
    254262                // sum(beta) should be equal to sum(B.beta) 
    255263                const vec &Eb=E->_beta(); 
    256                 est.pow ( sum(beta)/sum(Eb) ); 
     264                est.pow ( sum ( beta ) /sum ( Eb ) ); 
     265                if ( evalll ) {last_lognc=est.lognc();} 
     266        } 
     267        const epdf& _epdf() const {return est;}; 
     268        void set_parameters ( const vec &beta0 ) { 
     269                est.set_parameters(beta0); 
     270                rv = est._rv(); 
    257271                if(evalll){last_lognc=est.lognc();} 
    258272        } 
    259         const epdf& _epdf() const {return est;}; 
    260         //!access funct 
    261273}; 
    262274