Changeset 1004 for library/bdm/estim/mixtures.cpp
- Timestamp:
- 05/27/10 13:08:44 (14 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/estim/mixtures.cpp
r943 r1004 8 8 //prepare sizes 9 9 Coms.set_size ( c ); 10 n = c;11 10 weights.set_parameters ( ones ( c ) ); //assume at least one observation in each comp. 12 11 //est will be done at the end … … 22 21 23 22 //Copy it to the rest 24 for ( i = 1; i < n; i++ ) {23 for ( i = 1; i < Coms.length(); i++ ) { 25 24 //copy Com0 and create new rvs for them 26 25 Coms ( i ) = (BMEF*) Coms ( 0 )->_copy ( ); 27 26 } 28 27 //Pick some data for each component and update it 29 for ( i = 0; i < n; i++ ) {28 for ( i = 0; i < Coms.length(); i++ ) { 30 29 //pick one datum 31 30 int ind = (int) floor ( ndat * UniRNG.sample() ); … … 44 43 multiBM weights0 ( weights ); 45 44 45 int n = Coms.length(); 46 46 Array<BMEF*> Coms0 ( n ); 47 47 for ( i = 0; i < n; i++ ) { … … 131 131 vec w = weights.posterior().mean(); 132 132 double exLL = 0.0; 133 for ( int i = 0; i < n; i++ ) {133 for ( int i = 0; i < Coms.length(); i++ ) { 134 134 exLL += w ( i ) * exp ( Coms ( i )->logpred ( yt ) ); 135 135 } … … 138 138 139 139 emix* MixEF::epredictor ( const vec &vec) const { 140 Array<shared_ptr<epdf> > pC ( n);141 for ( int i = 0; i < n; i++ ) {140 Array<shared_ptr<epdf> > pC ( Coms.length() ); 141 for ( int i = 0; i < Coms.length(); i++ ) { 142 142 pC ( i ) = Coms ( i )->epredictor ( ); 143 143 pC (i) -> set_rv(_yrv()); … … 153 153 void MixEF::flatten ( const BMEF* M2 ) { 154 154 const MixEF* Mix2 = dynamic_cast<const MixEF*> ( M2 ); 155 bdm_assert_debug ( Mix2-> n == n, "Different no of coms" );155 bdm_assert_debug ( Mix2->Coms.length() == Coms.length(), "Different no of coms" ); 156 156 //Flatten each component 157 for ( int i = 0; i < n; i++ ) {157 for ( int i = 0; i < Coms.length(); i++ ) { 158 158 Coms ( i )->flatten ( Mix2->Coms ( i ) ); 159 159 }