Changeset 679 for library/bdm/estim/mixtures.cpp
- Timestamp:
- 10/23/09 00:05:25 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/estim/mixtures.cpp
r565 r679 30 30 //pick one datum 31 31 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 ); 33 33 //flatten back to oringinal 34 34 Coms ( i )->flatten ( Com0 ); … … 41 41 } 42 42 43 void MixEF::bayesB ( const mat &data , const vec &wData ) {43 void MixEF::bayesB ( const mat &data , const mat &cond, const vec &wData ) { 44 44 int ndat = data.cols(); 45 45 int t, i, niter; … … 106 106 //#pragma omp parallel for 107 107 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 ) ); 109 109 } 110 110 weights.bayes ( W.get_col ( t ) * wData ( t ) ); … … 122 122 } 123 123 124 void MixEF::bayes ( const vec &data ) {124 void MixEF::bayes ( const vec &data, const vec &cond=empty_vec ) { 125 125 126 126 }; 127 127 128 void MixEF::bayes ( const mat &data ) {129 this->bayesB ( data, ones ( data.cols() ) );128 void MixEF::bayes ( const mat &data, const vec &cond=empty_vec ) { 129 this->bayesB ( data, cond, ones ( data.cols() ) ); 130 130 }; 131 131 132 132 133 double MixEF::logpred ( const vec & dt ) const {133 double MixEF::logpred ( const vec &yt ) const { 134 134 135 135 vec w = weights.posterior().mean(); 136 136 double exLL = 0.0; 137 137 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 ) ); 139 139 } 140 140 return log ( exLL );