Changeset 536

Show
Ignore:
Timestamp:
08/16/09 18:13:31 (15 years ago)
Author:
smidl
Message:

removal of unused functions _e() and samplecond(,) and added documentation lines

Location:
library
Files:
17 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/base/bdmbase.h

    r532 r536  
    2929 
    3030typedef std::map<string, int> RVmap; 
     31//! Internal global variable storing sizes of RVs 
    3132extern ivec RV_SIZES; 
     33//! Internal global variable storing names of RVs 
    3234extern Array<string> RV_NAMES; 
    3335 
     
    160162                } 
    161163                //!@} 
    162  
    163                 //TODO why not inline and later?? 
    164164 
    165165                //! \name Algebra on Random Variables 
     
    192192                //!@{ 
    193193 
    194                 //! generate \c str from rv, by expanding sizes TODO to_string.. 
     194                //! generate \c str from rv, by expanding sizes  
    195195                str tostr() const; 
    196196                //! when this rv is a part of bigger rv, this function returns indices of self in the data vector of the bigger crv. 
     
    223223 
    224224                // TODO dodelat void to_setting( Setting &set ) const; 
    225  
    226225                //! Invalidate all named RVs. Use before initializing any RV instances, with care... 
    227226                static void clear_all(); 
     
    391390SHAREDPTR(epdf); 
    392391 
    393 //! Conditional probability density, e.g. modeling some dependencies. 
    394 //TODO Samplecond can be generalized 
     392//! Conditional probability density, e.g. modeling \f$ f( x | y) \f$, where \f$ x \f$ is random variable, \c rv, and \f$ y \f$ is conditioning variable, \c rvc. 
    395393class mpdf : public root 
    396394{ 
     
    405403 
    406404        protected: 
     405                //! set internal pointer \c ep to point to given \c iepdf 
    407406                void set_ep (epdf &iepdf) { 
    408407                        ep = &iepdf; 
    409408                } 
     409                //! set internal pointer \c ep to point to given \c iepdf 
    410410                void set_ep (epdf *iepdfp) { 
    411411                        ep = iepdfp; 
     
    487487SHAREDPTR(mpdf); 
    488488 
     489//! Mpdf with internal epdf that is modified by function \c condition 
    489490template <class EPDF> 
    490491class mpdf_internal: public mpdf 
    491492{ 
    492493        protected : 
     494                //! Internal epdf used for sampling 
    493495                EPDF iepdf; 
    494496        public: 
     
    555557                //! Constructor 
    556558                datalink() : downsize (0), upsize (0) { } 
     559                //! Conevnience constructor 
    557560                datalink (const RV &rv, const RV &rv_up) { 
    558561                        set_connection (rv, rv_up); 
     
    607610                //! Constructor 
    608611                datalink_m2e() : condsize (0) { } 
    609  
     612                //! Set connection between vectors 
    610613                void set_connection (const RV &rv, const RV &rvc, const RV &rv_up) { 
    611614                        datalink::set_connection (rv, rv_up); 
     
    621624                        return tmp; 
    622625                } 
    623  
     626                //! Copy corresponding values to Up.condition 
    624627                void pushup_cond (vec &val_up, const vec &val, const vec &cond) { 
    625628                        it_assert_debug (downsize == val.length(), "Wrong val"); 
     
    643646                //! Constructor 
    644647                datalink_m2m() {}; 
     648                //! Set connection between the vectors 
    645649                void set_connection (const RV &rv, const RV &rvc, const RV &rv_up, const RV &rvc_up) { 
    646650                        datalink_m2e::set_connection (rv, rvc, rv_up); 
     
    713717class mepdf : public mpdf 
    714718{ 
    715  
     719                //! Internal shared pointer to epdf 
    716720                shared_ptr<epdf> iepdf; 
    717721        public: 
    718722                //!Default constructor 
    719723                mepdf() { } 
    720  
     724                //! Set internal shared pointer 
    721725                mepdf (shared_ptr<epdf> em) { 
    722726                        iepdf = em; 
     
    893897                        return NULL; 
    894898                }; 
    895                 //!Constructs a conditional density 1-step ahead predictor \f$ f(d_{t+1} |d_{t+h-1}, \ldots d_{t}) 
     899                //!Constructs conditional density of 1-step ahead predictor \f$ f(d_{t+1} |d_{t+h-1}, \ldots d_{t}) \f$ 
    896900                virtual mpdf* predictor() const { 
    897901                        it_error ("Not implemented"); 
     
    939943                } 
    940944                virtual const epdf& posterior() const = 0; 
    941                 virtual const epdf* _e() const = 0; 
    942945                //!@} 
    943946 
  • library/bdm/estim/arx.h

    r529 r536  
    110110        //!\name Access attributes 
    111111        //!@{ 
    112         const egiw* _e() const { 
    113                 return &est ; 
    114         }; 
    115112        const egiw& posterior() const { 
    116113                return est; 
  • library/bdm/estim/kalman.h

    r529 r536  
    125125                return est; 
    126126        } 
    127         const enorm<sq_T>* _e() const { 
    128                 return &est; 
    129         } 
    130127        //!access function 
    131128        mat& __K() { 
     
    214211                return E; 
    215212        }; 
    216         const enorm<fsqmat>* _e() const { 
    217                 return &E; 
    218         }; 
    219213        const mat _R() { 
    220214                return P; 
     
    277271        // TODO dodelat void to_setting( Setting &set ) const; 
    278272 
     273        const enorm<chmat>& posterior() {return est;} 
    279274}; 
    280275 
     
    423418 
    424419                est.set_rv ( RV ( "MM", A ( 0 )->posterior().dimension(), 0 ) ); 
    425                 est.set_parameters ( A ( 0 )->_e()->mean(), A ( 0 )->_e()->_R() ); 
     420                est.set_parameters ( A ( 0 )->posterior().mean(), A ( 0 )->posterior()._R() ); 
    426421        } 
    427422        void bayes ( const vec &dt ) { 
     
    439434                case 1: { 
    440435                        int mi = max_index ( w ); 
    441                         const enorm<chmat>* st = ( Models ( mi )->_e() ); 
    442                         est.set_parameters ( st->mean(), st->_R() ); 
     436                        const enorm<chmat> &st = Models ( mi )->posterior() ; 
     437                        est.set_parameters ( st.mean(), st._R() ); 
    443438                } 
    444439                break; 
     
    451446                } 
    452447        } 
    453         //all posterior densities are equal => return the first one 
    454         const enorm<chmat>* _e() const { 
    455                 return &est; 
    456         } 
    457         //all posterior densities are equal => return the first one 
     448        //! posterior density 
    458449        const enorm<chmat>& posterior() const { 
    459450                return est; 
  • library/bdm/estim/mixtures.h

    r477 r536  
    2121namespace bdm { 
    2222 
     23//! enum switch for internal approximation used in MixEF 
    2324enum MixEF_METHOD { EM = 0, QB = 1}; 
    2425 
     
    118119                return *est; 
    119120        } 
    120         const eprod* _e() const { 
    121                 return est; 
    122         } 
    123121        emix* epredictor() const; 
    124122        //! Flatten the density as if it was not estimated from the data 
  • library/bdm/estim/particles.h

    r488 r536  
    111111                        dim = E.dimension() + A ( 0 )->posterior().dimension(); 
    112112                        for ( int i = 0; i < _w.length() ; i++ ) { 
    113                                 Coms ( i ) = A ( i )->_e(); 
     113                                Coms ( i ) = &(A ( i )->posterior()); 
    114114                        } 
    115115                } 
     
    218218                return jest; 
    219219        } 
    220         const epdf* _e() const { 
    221                 return &jest;    //Fixme: is it useful? 
    222         } 
    223220        //! Set postrior of \c rvc to samples from epdf0. Statistics of BMs are not re-computed! Use only for initialization! 
    224221        /*      void set_est ( const epdf& epdf0 ) { 
     
    234231 
    235232        //!Access function 
    236         BM* _BM ( int i ) { 
     233        const BM* _BM ( int i ) { 
    237234                return BMs ( i ); 
    238235        } 
  • library/bdm/math/square_mat.cpp

    r495 r536  
    6464 
    6565ldmat::ldmat ( const mat &V ) : sqmat ( V.cols() ) { 
    66 //TODO check if correct!! Based on heuristic observation of lu() 
    6766 
    6867        it_assert_debug ( dim == V.rows(), "ldmat::ldmat matrix V is not square!" ); 
    6968 
    7069        // L and D will be allocated by ldform() 
    71  
    7270        //Chol is unstable 
    7371        this->ldform ( chol ( V ), ones ( dim ) ); 
    74 //      this->ldform(ul(V),ones(dim)); 
    7572} 
    7673 
  • library/bdm/mex/config2mxstruct.h

    r477 r536  
    88using namespace libconfig; 
    99 
     10//! Reimplementation of libconfig's Config class for Matlab mxArray structures 
    1011class UImxConfig : public Config { 
    1112public: 
     13        //! Matlab structure where the info is stored 
    1214        mxArray *mxconfig; 
     15        //! Load file in libconfig syntax to Matlab arrays 
    1316        UImxConfig ( const char * filename ) { 
    1417                Config config; 
     
    1619                mxconfig = group2mxstruct ( config.getRoot() ); 
    1720        } 
     21        //! Convert existing Setting to Matlab arrays 
    1822        UImxConfig ( const Setting &setting ) { 
    1923                mxconfig = group2mxstruct ( setting ); 
     
    2125 
    2226private: 
    23  
     27        //! Convert libconfig's array to Matlab vector 
    2428        mxArray* array2mxvector ( const Setting &setting )  { 
    2529                if ( !setting.isArray() ) mexErrMsgTxt ( "Given setting is not an array" ); 
     
    4044        } 
    4145 
     46        //! Convert libconfig's array to Matlab matrix 
    4247        mxArray* list2mxmatrix ( const Setting &setting )  { 
    4348                if ( !setting.isList() || ( "matrix" != setting[0] ) ) 
     
    5863                return result; 
    5964        } 
    60  
     65         
     66        //! Convert libconfig's gourp to Matlab structure 
    6167        mxArray* group2mxstruct ( const Setting &setting ) { 
    6268                if ( !setting.isGroup() ) mexErrMsgTxt ( "Given setting is not a group." ); 
     
    102108 
    103109        } 
    104  
     110        //! Convert libconfig's list  to Matlab cell 
    105111        mxArray* list2mxcell ( const Setting &setting )  { 
    106112                if ( !setting.isList() ) mexErrMsgTxt ( "Given setting is not a list." ); 
  • library/bdm/mex/mex_logger.h

    r529 r536  
    3737 
    3838} 
     39 
     40//! Logger storing results into an mxArray 
    3941class mexlog : public memlog { 
    4042public: 
  • library/bdm/mex/mex_parser.h

    r477 r536  
    88using namespace libconfig; 
    99 
     10//! Class for writing Settings into Matlab's mxArray 
    1011class UImxArray : public Config { 
    1112public: 
     13        //! Build an instance of Config with fields filled from the given \a mxarray 
    1214        UImxArray ( const mxArray *mxarray ) : Config() { 
    1315                Setting & setting = this->getRoot(); //setting is a group 
     
    2224                setAutoConvert ( true ); 
    2325        } 
     26        //! Add libconfig's \c list to the structure 
    2427        void addList ( const mxArray *mxarray, const char* name ) { 
    2528                Setting & setting = this->getRoot(); //setting is a group 
     
    2730                fillList ( child, mxarray ); 
    2831        } 
     32        //! Add libconfig's \c group to the structure 
    2933        void addGroup ( const mxArray *mxarray, const char* name ) { 
    3034                Setting & setting = this->getRoot(); //setting is a group 
     
    3236                fillGroup ( child, mxarray ); 
    3337        } 
     38        //! Operator for more convenient access to this Confic 
    3439        operator Setting&() { 
    3540                return getRoot(); 
  • library/bdm/shared_ptr.h

    r529 r536  
    171171}; 
    172172 
     173//! Compare shared pointers  
    173174template<typename T, typename U> 
    174175bool operator== ( shared_ptr<T> const &a, shared_ptr<U> const &b ) { 
     
    176177} 
    177178 
     179//! Compare shared pointers  
    178180template<typename T, typename U> 
    179181bool operator!= ( shared_ptr<T> const &a, shared_ptr<U> const &b ) { 
     
    181183} 
    182184 
     185//! Compare shared pointers  
    183186template<typename T, typename U> 
    184187bool operator< ( shared_ptr<T> const &a, shared_ptr<U> const &b ) { 
  • library/bdm/stat/emix.h

    r529 r536  
    165165 
    166166        shared_ptr<epdf> marginal ( const RV &rv ) const; 
     167        //! Update already existing marginal density  \c target 
    167168        void marginal ( const RV &rv, emix &target ) const; 
    168169        shared_ptr<mpdf> condition ( const RV &rv ) const; 
     
    290291                set_elements ( mFacs ); 
    291292        } 
    292  
     293        //! Set internal \c mpdfs from given values 
    293294        void set_elements (const Array<shared_ptr<mpdf> > &mFacs ); 
    294295 
     
    339340                return smp; 
    340341        } 
    341         mat samplecond ( const vec &cond,  int N ) { 
    342                 mat Smp ( dimension(), N ); 
    343                 for ( int i = 0; i < N; i++ ) { 
    344                         Smp.set_col ( i, samplecond ( cond ) ); 
    345                 } 
    346                 return Smp; 
    347         } 
    348342 
    349343        //! Load from structure with elements: 
     
    372366        Array<datalink*> dls; 
    373367public: 
     368        //! Default constructor 
    374369        eprod () : epdfs ( 0 ), dls ( 0 ) {}; 
     370        //! Set internal  
    375371        void set_parameters ( const Array<const epdf*> &epdfs0, bool named = true ) { 
    376372                epdfs = epdfs0;//.set_length ( epdfs0.length() ); 
     
    470466        //! Set weights \c w and components \c R 
    471467        void set_parameters ( const vec &w0, const Array<shared_ptr<mpdf> > &Coms0 ) { 
    472                 //!\TODO check if all components are OK 
     468                //!\todo check if all components are OK 
    473469                Coms = Coms0; 
    474470                w=w0;    
  • library/bdm/stat/exp_family.h

    r535 r536  
    4444                //! logarithm of the normalizing constant, \f$\mathcal{I}\f$ 
    4545                virtual double lognc() const = 0; 
    46                 //!TODO decide if it is really needed 
    47                 virtual void dupdate (mat &v) {it_error ("Not implemented");}; 
    4846                //!Evaluate normalized log-probability 
    4947                virtual double evallog_nn (const vec &val) const{it_error ("Not implemented");return 0.0;}; 
     
    220218                ldmat est_theta_cov() const; 
    221219 
     220                //! expected values of the linear coefficient and the covariance matrix are written to \c M and \c R , respectively 
    222221                void mean_mat (mat &M, mat&R) const; 
    223222                //! In this instance, val= [theta, r]. For multivariate instances, it is stored columnwise val = [theta_1 theta_2 ... r_1 r_2 ] 
     
    340339                        if (evalll) {last_lognc = est.lognc();} 
    341340                } 
    342                 const epdf& posterior() const {return est;}; 
    343                 const eDirich* _e() const {return &est;}; 
     341                //! reimplemnetation of BM::posterior() 
     342                const eDirich& posterior() const {return est;}; 
     343                //! constructor function                 
    344344                void set_parameters (const vec &beta0) { 
    345345                        est.set_parameters (beta0); 
     
    373373 
    374374                vec sample() const; 
    375                 //! TODO: is it used anywhere? 
    376 //      mat sample ( int N ) const; 
    377375                double evallog (const vec &val) const; 
    378376                double lognc () const; 
    379                 //! Returns poiter to alpha and beta. Potentially dengerous: use with care! 
     377                //! Returns pointer to internal alpha. Potentially dengerous: use with care! 
    380378                vec& _alpha() {return alpha;} 
     379                //! Returns pointer to internal beta. Potentially dengerous: use with care! 
    381380                vec& _beta() {return beta;} 
    382381                vec mean() const {return elem_div (alpha, beta);} 
     
    482481                //!@} 
    483482 
    484                 double eval (const vec &val) const  {return nk;} 
    485483                double evallog (const vec &val) const  { 
    486484                        if (any (val < low) && any (val > high)) {return inf;} 
     
    516514 \brief Normal distributed linear function with linear function of mean value; 
    517515 
    518  Mean value \f$mu=A*rvc+mu_0\f$. 
     516 Mean value \f$ \mu=A*\mbox{rvc}+\mu_0 \f$. 
    519517*/ 
    520518template < class sq_T, template <typename> class TEpdf = enorm > 
     
    524522                //! Internal epdf that arise by conditioning on \c rvc 
    525523                mat A; 
     524                //! Constant additive term  
    526525                vec mu_const; 
    527526//                      vec& _mu; //cached epdf.mu; !!!!!! WHY NOT? 
     
    558557                mat _R() { return this->iepdf._R().to_mat(); } 
    559558 
     559                //! Debug stream 
    560560                template<typename sq_M> 
    561561                friend std::ostream &operator<< (std::ostream &os,  mlnorm<sq_M, enorm> &ml); 
     
    649649{ 
    650650        protected: 
     651                //! Variable \f$ \Lambda \f$ from theory 
    651652                ldmat Lambda; 
     653                //! Reference to variable \f$ R \f$ 
    652654                ldmat &_R; 
     655                //! Variable \f$ R_e \f$ 
    653656                ldmat Re; 
    654657        public: 
    655658                mlstudent () : mlnorm<ldmat, enorm> (), 
    656659                                Lambda (),      _R (iepdf._R()) {} 
     660                //! constructor function 
    657661                void set_parameters (const mat &A0, const vec &mu0, const ldmat &R0, const ldmat& Lambda0) { 
    658662                        it_assert_debug (A0.rows() == mu0.length(), ""); 
     
    968972                double delta; 
    969973        public: 
     974                //! Set internal structures 
    970975                void set_parameters (const mat &Y0, const double delta0) {Y = chmat (Y0);delta = delta0; p = Y.rows(); dim = p * p; } 
     976                //! Sample matrix argument 
    971977                mat sample_mat() const { 
    972978                        mat X = zeros (p, p); 
     
    9981004}; 
    9991005 
     1006//! Inverse Wishart on Choleski decomposition 
     1007/*! Being computed by conversion from `standard' Wishart 
     1008*/ 
    10001009class eiWishartCh: public epdf 
    10011010{ 
    10021011        protected: 
     1012                //! Internal instance of Wishart density 
    10031013                eWishartCh W; 
     1014                //! size of Ch 
    10041015                int p; 
     1016                //! parameter delta 
    10051017                double delta; 
    10061018        public: 
     1019                //! constructor function 
    10071020                void set_parameters (const mat &Y0, const double delta0) { 
    10081021                        delta = delta0; 
     
    10111024                } 
    10121025                vec sample() const {mat iCh; iCh = inv (W.sample_mat()); return vec (iCh._data(), dim);} 
     1026                //! access function 
    10131027                void _setY (const vec &y0) { 
    10141028                        mat Ch (p, p); 
     
    10441058}; 
    10451059 
     1060//! Random Walk on inverse Wishart 
    10461061class rwiWishartCh : public mpdf_internal<eiWishartCh> 
    10471062{ 
     
    10491064                //!square root of \f$ \nu-p-1 \f$ - needed for computation of \f$ \Psi \f$ from conditions 
    10501065                double sqd; 
    1051                 //reference point for diagonal 
     1066                //!reference point for diagonal 
    10521067                vec refl; 
     1068                //! power of the reference 
    10531069                double l; 
     1070                //! dimension 
    10541071                int p; 
    10551072 
    10561073        public: 
    10571074                rwiWishartCh() : sqd (0), l (0), p (0) {} 
    1058  
     1075                //! constructor function 
    10591076                void set_parameters (int p0, double k, vec ref0, double l0) { 
    10601077                        p = p0; 
     
    13261343void mgnorm<sq_T >::condition (const vec &cond) {this->iepdf._mu() = g->eval (cond);}; 
    13271344 
     1345//! \todo unify this stuff with to_string() 
    13281346template<class sq_T> 
    13291347std::ostream &operator<< (std::ostream &os,  mlnorm<sq_T> &ml) 
  • library/bdm/stat/merger.cpp

    r507 r536  
    122122                        if ( DBG ) { 
    123123                                cout << "Resampling =" << 1. / sum_sqr ( w ) << endl; 
    124                                 cout << Mix._e()->mean() << endl; 
     124                                cout << Mix.posterior().mean() << endl; 
    125125                                cout << sum ( Smp_ex, 2 ) / Npoints << endl; 
    126126                                cout << Smp_ex*Smp_ex.T() / Npoints << endl; 
  • library/bdm/stat/merger.h

    r529 r536  
    318318SHAREDPTR ( merger_base ); 
    319319 
     320//! Merger using importance sampling with mixture proposal density 
    320321class merger_mix : public merger_base { 
    321322protected: 
  • library/doc/tutorial/tut_arx.dox

    r290 r536  
    3636\begin{array}{c} [y_{t}',\,\psi_{t}']\\ \\\end{array} 
    3737+(1-\phi) V_0 
    38 \f]</dd> 
    39 <dt>"Degree of freedom"</dd>  <dd>which is an accumulator of number of data records \f[ 
     38\f] 
     39</dd> 
     40<dt>"Degree of freedom"</dt>  <dd>which is an accumulator of number of data records \f[ 
    4041\nu_t = \phi \nu_{t-1} + 1 + (1-\phi) \nu_0 
    41 \f]</dd> 
     42\f] 
     43</dd> 
    4244</dl> 
    4345where \f$ \phi \f$ is the forgetting factor, typically \f$ \phi \in [0,1]\f$ roughly corresponding to the effective length of the exponential window by relation:\f[ 
  • library/tests/arx_elem_test.cpp

    r477 r536  
    1212        mat mu ( 1, 1 ); 
    1313        mat R ( 1, 1 ); 
    14         Ar._e()->mean_mat ( mu, R ); 
     14        Ar.posterior().mean_mat ( mu, R ); 
    1515        cout << "Prior moments: mu=" << mu << ", R=" << R << endl; 
    1616 
     
    2424        // Ar is now filled with estimates of N(0,1); 
    2525        cout << "Empirical moments: mu=" << sum ( smp ) / ndat << ", R=" << sum_sqr ( smp ) / ndat - pow ( sum ( smp ) / ndat, 2 ) << endl; 
    26         Ar._e()->mean_mat ( mu, R ); 
     26        Ar.posterior().mean_mat ( mu, R ); 
    2727        cout << "Posterior moments: mu=" << mu << ", R=" << R << endl; 
    2828 
  • library/tests/epdf_harness.cpp

    r529 r536  
    210210        Array<vec> actual(CurrentContext::max_trial_count); 
    211211        do { 
    212                 mat smp = mep.samplecond ( vec ( 0 ), nsamples ); 
     212                mat smp = mep.samplecond_m ( vec ( 0 ), nsamples ); 
    213213                vec emu = sum ( smp, 2 ) / nsamples; 
    214214                actual( tc ) = emu; 
     
    231231        Array<mat> actual(CurrentContext::max_trial_count); 
    232232        do { 
    233                 mat smp = mep.samplecond ( vec ( 0 ), nsamples ); 
     233                mat smp = mep.samplecond_m ( vec ( 0 ), nsamples ); 
    234234                vec emu = sum ( smp, 2 ) / nsamples; 
    235235                mat er = ( smp * smp.T() ) / nsamples - outer_product ( emu, emu );