Show
Ignore:
Timestamp:
05/27/10 13:08:44 (14 years ago)
Author:
smidl
Message:

mixtures do not have n

Files:
1 modified

Legend:

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

    r943 r1004  
    88        //prepare sizes 
    99        Coms.set_size ( c ); 
    10         n = c; 
    1110        weights.set_parameters ( ones ( c ) ); //assume at least one observation in each comp. 
    1211        //est will be done at the end 
     
    2221 
    2322        //Copy it to the rest 
    24         for ( i = 1; i < n; i++ ) { 
     23        for ( i = 1; i < Coms.length(); i++ ) { 
    2524                //copy Com0 and create new rvs for them 
    2625                Coms ( i ) =  (BMEF*) Coms ( 0 )->_copy ( ); 
    2726        } 
    2827        //Pick some data for each component and update it 
    29         for ( i = 0; i < n; i++ ) { 
     28        for ( i = 0; i < Coms.length(); i++ ) { 
    3029                //pick one datum 
    3130                int ind = (int) floor ( ndat * UniRNG.sample() ); 
     
    4443        multiBM weights0 ( weights ); 
    4544 
     45        int n = Coms.length(); 
    4646        Array<BMEF*> Coms0 ( n ); 
    4747        for ( i = 0; i < n; i++ ) { 
     
    131131        vec w = weights.posterior().mean(); 
    132132        double exLL = 0.0; 
    133         for ( int i = 0; i < n; i++ ) { 
     133        for ( int i = 0; i < Coms.length(); i++ ) { 
    134134                exLL += w ( i ) * exp ( Coms ( i )->logpred ( yt ) ); 
    135135        } 
     
    138138 
    139139emix* 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++ ) { 
    142142                pC ( i ) = Coms ( i )->epredictor ( ); 
    143143                pC (i) -> set_rv(_yrv()); 
     
    153153void MixEF::flatten ( const BMEF* M2 ) { 
    154154        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" ); 
    156156        //Flatten each component 
    157         for ( int i = 0; i < n; i++ ) { 
     157        for ( int i = 0; i < Coms.length(); i++ ) { 
    158158                Coms ( i )->flatten ( Mix2->Coms ( i ) ); 
    159159        }