00001
00013 #ifndef AR_H
00014 #define AR_H
00015
00016 #include "../stat/libFN.h"
00017 #include "../stat/libEF.h"
00018
00019 namespace bdm{
00020
00035 class ARX: public BMEF {
00036 protected:
00038 egiw est;
00040 ldmat &V;
00042 double ν
00043 public:
00045 ARX ( const double frg0=1.0 ) : BMEF ( frg0 ),est (), V ( est._V() ), nu ( est._nu() )
00046 {last_lognc=est.lognc();};
00047
00049 ARX ( const ARX &A0 ) : BMEF (),est ( A0.est ), V ( est._V() ), nu ( est._nu() ) {};
00050
00052 ARX* _copy_();
00053
00054
00055
00057 void set_parameters ( const ldmat &V0, const double &nu0 )
00058 {est._V() =V0;est._nu() =nu0;last_lognc=est.lognc();}
00059 void set_statistics ( const BMEF* BM0 );
00061 void get_parameters ( mat &V0, double &nu0 ) {V0=est._V().to_mat(); nu0=est._nu();}
00063 void bayes ( const vec &dt, const double w );
00064 void bayes ( const vec &dt ) {bayes ( dt,1.0 );};
00065 const epdf& _epdf() const {return est;}
00066 double logpred ( const vec &dt ) const;
00067 void flatten (const BMEF* B ) {
00068 const ARX* A=dynamic_cast<const ARX*>(B);
00069
00070 est.pow ( A->nu/nu);
00071 if(evalll){last_lognc=est.lognc();}
00072 }
00074 enorm<ldmat>* epredictor( const vec &rgr) const;
00075 enorm<ldmat>* epredictor() const {it_assert_debug(rv0.count()==V.rows()-1,"Regressor is not only 1");return epredictor(vec_1(1.0));}
00077 mlnorm<ldmat>* predictor() const;
00078 mlstudent* predictor_student() const;
00080 ivec structure_est ( egiw Eg0 );
00081 const egiw* _e() const {return &est ;};
00082 };
00083
00084 }
00085
00086 #endif // AR_H
00087
00088