Show
Ignore:
Timestamp:
10/19/09 22:24:45 (15 years ago)
Author:
smidl
Message:

Compilation and minor extensions

Files:
1 modified

Legend:

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

    r639 r665  
    66                 
    77        if ( frg < 1.0 ) { 
    8                 est.pow ( frg ); 
     8                est.pow ( frg ); // multiply V and nu 
    99                 
    1010                //stabilize 
    11                 ldmat V0(eye(V.rows())); 
    12                 V0*=(1-frg)*1e-3; 
     11                ldmat V0=alter_est._V(); //$ copy 
     12                double &nu0=alter_est._nu(); 
     13                V0*=(1-frg); 
    1314                V += V0; //stabilization 
    14                 nu +=(1-frg)*(0.1 + V.rows() + 1* dimx + 2); 
    15                  
    16                 // recompute loglikelihood of "prior" 
     15                nu +=(1-frg)*nu0; 
     16                 
     17                // recompute loglikelihood of new "prior" 
    1718                if ( evalll ) { 
    1819                        last_lognc = est.lognc(); 
     
    219220        int rgrlen = rrv->_dsize(); 
    220221         
     222        dimx = ylen; 
    221223        set_rv ( *yrv, *rrv ); 
    222224         
     
    234236 
    235237        //init 
    236         mat V0; 
    237         vec dV0; 
    238         if (!UI::get(V0, set, "V0",UI::optional)){ 
    239                 if ( !UI::get ( dV0, set, "dV0" ) ) 
    240                         dV0 = concat ( 1e-3 * ones ( ylen ), 1e-5 * ones ( rgrlen ) ); 
    241                 V0 = diag ( dV0 ); 
    242         } 
    243         double nu0; 
    244         if ( !UI::get ( nu0, set, "nu0" ) ) 
    245                 nu0 = rgrlen + ylen + 2; 
     238        shared_ptr<egiw> pri=UI::build<egiw>(set, "prior", UI::optional); 
     239        if (pri) { 
     240                bdm_assert(pri->_dimx()==ylen,"prior is not compatible"); 
     241                bdm_assert(pri->_V().rows()==ylen+rgrlen,"prior is not compatible"); 
     242                est.set_parameters( pri->_dimx(),pri->_V(), pri->_nu()); 
     243        }else{ 
     244                est.set_parameters( ylen, zeros(ylen+rgrlen)); 
     245                set_prior_default(est); 
     246        } 
     247                 
     248        shared_ptr<egiw> alt=UI::build<egiw>(set, "alternative", UI::optional); 
     249        if (alt) { 
     250                bdm_assert(alt->_dimx()==ylen,"alternative is not compatible"); 
     251                bdm_assert(alt->_V().rows()==ylen+rgrlen,"alternative is not compatible"); 
     252                alter_est.set_parameters( alt->_dimx(),alt->_V(), alt->_nu()); 
     253        } else { 
     254                alter_est = est; 
     255        } 
    246256 
    247257        double frg; 
     
    250260 
    251261        set_parameters ( frg ); 
    252         set_statistics ( ylen, V0, nu0 ); 
    253262         
    254263        //name results (for logging)