Changeset 700 for library/bdm/estim
- Timestamp:
- 11/04/09 22:54:58 (15 years ago)
- Location:
- library/bdm/estim
- Files:
-
- 4 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/estim/arx.cpp
r679 r700 2 2 namespace bdm { 3 3 4 void ARX::bayes_weighted ( const vec &yt, const vec &cond, const double w ) { 4 void ARX::bayes_weighted ( const vec &yt, const vec &cond, const double w ) { 5 6 bdm_assert_debug(yt.length()>=dimy,"ARX::bayes yt is smaller then dimc"); 7 bdm_assert_debug(cond.length()>=dimc,"ARX::bayes cond is smaller then dimc"); 5 8 double lnc; 6 9 //cache -
library/bdm/estim/arx.h
r679 r700 54 54 //! \name Constructors 55 55 //!@{ 56 ARX ( const double frg0 = 1.0 ) : BMEF ( frg0 ), have_constant(true), dyad(), est() {};57 ARX ( const ARX &A0 ) : BMEF (A0 .frg), have_constant(A0.have_constant), dyad(A0.dyad),est(est) { };56 ARX ( const double frg0 = 1.0 ) : BMEF ( frg0 ), have_constant(true), dyad(), est(), alter_est() {}; 57 ARX ( const ARX &A0 ) : BMEF (A0), have_constant(A0.have_constant), dyad(A0.dyad),est(A0.est),alter_est(A0.alter_est) { }; 58 58 ARX* _copy_() const; 59 59 void set_parameters ( double frg0 ) { … … 167 167 /*! ARX model conditined by knowledge of the forgetting factor 168 168 \f[ f(\theta| d_1 \ldots d_t , \phi_t) \f] 169 170 The symbol \f$ \phi \f$ is assumed to be the last of the conditioning variables. 169 171 */ 170 172 class ARXfrg : public ARX{ … … 174 176 ARXfrg(const ARXfrg &A0):ARX(A0){}; 175 177 ARXfrg* _copy_() const {ARXfrg *A = new ARXfrg(*this); return A;} 176 void condition(const vec &val){ 177 frg = val(0); 178 179 void bayes(const vec &val, const vec &cond){ 180 frg = cond(dimc-1); // last in cond is phi 181 ARX::bayes(val,cond); 182 } 183 void validate() { 184 ARX::validate(); 185 rvc.add(RV("{phi }",vec_1(1))); 186 dimc +=1; 178 187 } 179 188 }; -
library/bdm/estim/particles.cpp
r679 r700 78 78 int n=pf->__w().length(); 79 79 vec &lls = pf->_lls(); 80 Array<vec> &samples=pf->__samples(); 80 81 81 82 // generate samples - time step … … 84 85 #pragma parallel for 85 86 for ( i = 0; i < n; i++ ) { 86 BMs(i) -> bayes(this2bm.pushdown(yt), this2bm.get_cond(yt,cond)); 87 vec bm_cond(BMs(i)->dimensionc()); 88 this2bm.fill_cond(yt,cond, bm_cond); 89 pf2bm.filldown(samples(i), bm_cond); 90 BMs(i) -> bayes(this2bm.pushdown(yt), bm_cond); 87 91 lls ( i ) += BMs(i)->_ll(); 88 92 } -
library/bdm/estim/particles.h
r693 r700 157 157 res_threshold=0.5; 158 158 } 159 validate();159 //validate(); 160 160 } 161 161 //! load prior information from set and set internal structures accordingly … … 177 177 178 178 void validate(){ 179 bdm_assert(par,"PF::parameter_pdf not specified."); 179 180 n=_w.length(); 180 181 lls=zeros(n); 182 181 183 if (par->_rv()._dsize()>0) { 182 184 bdm_assert(par->_rv()._dsize()==est.dimension(),"Mismatch of RV and dimension of posterior" ); … … 301 303 //! datalink from global yt and cond (Up) to PFs yt and cond (Down) 302 304 datalink_m2m this2pf; 305 //!datalink from PF part to BM 306 datalink_part pf2bm; 303 307 304 308 public: … … 367 371 } 368 372 //set drv 373 //??set_yrv(concat(BM0->_yrv(),u) ); 374 set_yrv(BM0->_yrv() ); 375 rvc = BM0->_rvc().subt(par->_rv()); 369 376 //find potential input - what remains in rvc when we subtract rv 370 RV u = par->_rvc().remove_time().subt( par->_rv() ); 371 set_yrv(concat(BM0->_yrv(),u) ); 377 RV u = par->_rvc().subt( par->_rv().copy_t(-1) ); 378 rvc.add(u); 379 dimc = rvc._dsize(); 372 380 validate(); 373 381 } 374 382 void validate(){ 375 383 try{ 376 pf->validate();384 pf->validate(); 377 385 } catch (std::exception &e){ 378 386 throw UIException("Error in PF part of MPF:"); … … 380 388 jest.read_parameters(); 381 389 this2bm.set_connection(BMs(0)->_yrv(), BMs(0)->_rvc(), yrv, rvc); 382 this2bm.set_connection(pf->_yrv(), pf->_rvc(), yrv, rvc); 390 this2pf.set_connection(pf->_yrv(), pf->_rvc(), yrv, rvc); 391 pf2bm.set_connection(BMs(0)->_rvc(), pf->posterior()._rv()); 383 392 } 384 393