Changeset 665 for library/bdm/estim/arx.cpp
- Timestamp:
- 10/19/09 22:24:45 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/estim/arx.cpp
r639 r665 6 6 7 7 if ( frg < 1.0 ) { 8 est.pow ( frg ); 8 est.pow ( frg ); // multiply V and nu 9 9 10 10 //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); 13 14 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" 17 18 if ( evalll ) { 18 19 last_lognc = est.lognc(); … … 219 220 int rgrlen = rrv->_dsize(); 220 221 222 dimx = ylen; 221 223 set_rv ( *yrv, *rrv ); 222 224 … … 234 236 235 237 //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 } 246 256 247 257 double frg; … … 250 260 251 261 set_parameters ( frg ); 252 set_statistics ( ylen, V0, nu0 );253 262 254 263 //name results (for logging)