Legend:
- Unmodified
- Added
- Removed
-
bdm/stat/emix.cpp
r182 r183 35 35 for(int i=0;i<Coms.length();i++){Cn(i)=Coms(i)->marginal(rv);} 36 36 emix* tmp = new emix(rv); 37 tmp->set_parameters(w,C oms,false);37 tmp->set_parameters(w,Cn,false); 38 38 tmp->ownComs(); 39 39 return tmp; -
bdm/stat/emix.h
r182 r183 57 57 den = nom->marginal(rvc); 58 58 }; 59 double evalcond(const vec &val, const vec &cond) const{59 double evalcond(const vec &val, const vec &cond) { 60 60 return exp(nom->evalpdflog(concat(val,cond)) - den->evalpdflog(cond)); 61 61 } … … 100 100 int i; 101 101 double sum = 0.0; 102 for ( i = 0;i < w.length();i++ ) {sum += w ( i ) * Coms ( i )->evalpdflog ( val);}102 for ( i = 0;i < w.length();i++ ) {sum += w ( i ) * exp(Coms ( i )->evalpdflog ( val ));} 103 103 return log ( sum ); 104 104 }; -
bdm/stat/libBM.h
r182 r183 182 182 } 183 183 //! Return conditional density on the given RV, the remaining rvs will be in conditioning 184 virtual mpdf* condition(const RV &rv) const {it_warning("Not implemented"); return NULL;}184 virtual mpdf* condition(const RV &rv) const {it_warning("Not implemented"); return NULL;} 185 185 //! Return marginal density on the given RV, the remainig rvs are intergrated out 186 epdf* marginal(const RV &rv) const {it_warning("Not implemented"); return NULL;}186 virtual epdf* marginal(const RV &rv) const {it_warning("Not implemented"); return NULL;} 187 187 188 188 //! return expected value -
bdm/stat/libEF.h
r182 r183 130 130 double lognc () const; 131 131 vec mean() const {return mu;} 132 mlnorm<sq_T>* condition ( const RV &rvn ) const ; 133 enorm<sq_T>* marginal ( const RV &rv ) const; 132 // mlnorm<sq_T>* condition ( const RV &rvn ) const ; 133 mpdf* condition ( const RV &rvn ) const ; 134 // enorm<sq_T>* marginal ( const RV &rv ) const; 135 epdf* marginal ( const RV &rv ) const; 134 136 //Access methods 135 137 //! returns a pointer to the internal mean value. Use with Care! … … 597 599 598 600 template<class sq_T> 599 e norm<sq_T>* enorm<sq_T>::marginal ( const RV &rvn ) const {601 epdf* enorm<sq_T>::marginal ( const RV &rvn ) const { 600 602 ivec irvn = rvn.dataind ( rv ); 601 603 … … 607 609 608 610 template<class sq_T> 609 m lnorm<sq_T>* enorm<sq_T>::condition ( const RV &rvn ) const {611 mpdf* enorm<sq_T>::condition ( const RV &rvn ) const { 610 612 611 613 RV rvc = rv.subt ( rvn );