Show
Ignore:
Timestamp:
10/23/09 00:05:25 (15 years ago)
Author:
smidl
Message:

Major changes in BM -- OK is only test suite and tests/tutorial -- the rest is broken!!!

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/estim/mixtures.cpp

    r565 r679  
    3030                //pick one datum 
    3131                int ind = floor ( ndat * UniRNG.sample() ); 
    32                 Coms ( i )->bayes ( Data.get_col ( ind ), 1.0 ); 
     32                Coms ( i )->bayes ( Data.get_col ( ind ), empty_vec ); 
    3333                //flatten back to oringinal 
    3434                Coms ( i )->flatten ( Com0 ); 
     
    4141} 
    4242 
    43 void MixEF::bayesB ( const mat &data , const vec &wData ) { 
     43void MixEF::bayesB ( const mat &data , const mat &cond, const vec &wData ) { 
    4444        int ndat = data.cols(); 
    4545        int t, i, niter; 
     
    106106                        //#pragma omp parallel for 
    107107                        for ( i = 0; i < n; i++ ) { 
    108                                 Coms ( i )-> bayes ( data.get_col ( t ), W ( i, t ) * wData ( t ) ); 
     108                                Coms ( i )-> bayes_weighted ( data.get_col ( t ), empty_vec, W ( i, t ) * wData ( t ) ); 
    109109                        } 
    110110                        weights.bayes ( W.get_col ( t ) * wData ( t ) ); 
     
    122122} 
    123123 
    124 void MixEF::bayes ( const vec &data ) { 
     124void MixEF::bayes ( const vec &data, const vec &cond=empty_vec ) { 
    125125 
    126126}; 
    127127 
    128 void MixEF::bayes ( const mat &data ) { 
    129         this->bayesB ( data, ones ( data.cols() ) ); 
     128void MixEF::bayes ( const mat &data, const vec &cond=empty_vec ) { 
     129        this->bayesB ( data, cond, ones ( data.cols() ) ); 
    130130}; 
    131131 
    132132 
    133 double MixEF::logpred ( const vec &dt ) const { 
     133double MixEF::logpred ( const vec &yt ) const { 
    134134 
    135135        vec w = weights.posterior().mean(); 
    136136        double exLL = 0.0; 
    137137        for ( int i = 0; i < n; i++ ) { 
    138                 exLL += w ( i ) * exp ( Coms ( i )->logpred ( dt ) ); 
     138                exLL += w ( i ) * exp ( Coms ( i )->logpred ( yt ) ); 
    139139        } 
    140140        return log ( exLL );