Changeset 205 for bdm/estim/merger.h
- Timestamp:
- 11/10/08 15:40:30 (16 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
bdm/estim/merger.h
r198 r205 43 43 //!Prior on the log-normal merging model 44 44 double beta; 45 //! Projection to empirical density 46 eEmp eSmp; 47 45 48 public: 46 49 //!Default constructor 47 50 merger ( const Array<mpdf*> &S ) : 48 51 compositepdf ( S ), epdf ( getrv ( false ) ), 49 Mix ( Array<BMEF*> ( 0 ),vec ( 0 ) ), dls ( n ), rvzs ( n ), zdls ( n ) {52 Mix ( Array<BMEF*> ( 0 ),vec ( 0 ) ), dls ( n ), rvzs ( n ), zdls ( n ), eSmp(rv,0) { 50 53 RV ztmp; 51 54 // Extend rv by rvc! … … 68 71 } 69 72 //! Set internal parameters used in approximation 70 void set_parameters ( double beta0, int Ns0, int Nc0 ) { beta=beta0;Ns=Ns0;Nc=Nc0;}73 void set_parameters ( double beta0, int Ns0, int Nc0 ) {beta=beta0;Ns=Ns0;Nc=Nc0;eSmp.set_n(Ns0,false);} 71 74 //!Initialize the proposal density. This function must be called before merge()! 72 75 void init() { ////////////// NOT FINISHED … … 90 93 return Mix.logpred ( dtf ); 91 94 } 92 vec mean() const {return Mix._epdf().mean();} 95 vec mean() const { 96 const Vec<double> &w = eSmp._w(); 97 const Array<vec> &S = eSmp._samples(); 98 vec tmp=zeros ( rv.count() ); 99 for ( int i=0; i<Ns; i++ ) { 100 tmp+=w ( i ) *S ( i ); 101 } 102 return tmp; 103 } 104 mat variance() const { 105 const vec &w = eSmp._w(); 106 const Array<vec> &S = eSmp._samples(); 107 108 vec mea = mean(); 109 110 cout << sum(w) << "," << w*w <<endl; 111 112 mat Tmp=zeros(rv.count(), rv.count()); 113 for ( int i=0; i<Ns; i++ ) { 114 Tmp+=w ( i ) *outer_product(S ( i ), S(i)); 115 } 116 return Tmp-outer_product(mea,mea); 117 } 93 118 //! for future use 94 119 virtual ~merger() { … … 101 126 //! Access function 102 127 MixEF& _Mix() {return Mix;} 128 //! Access function 129 eEmp& _Smp() {return eSmp;} 103 130 }; 104 131