diff --git a/ComputingTasks.cc b/ComputingTasks.cc index a4084a52d703ae450f7f2c337e7c955473c99532..40e7a86fa5cc62bfe69aa4f692258e568e69c744 100644 --- a/ComputingTasks.cc +++ b/ComputingTasks.cc @@ -236,6 +236,17 @@ VarModelStatement::createVarModelMFunction(ostream &output, const map<string, se output << ");" << endl; } +VarEstimationStatement::VarEstimationStatement(const string &var_model_name_arg) : + var_model_name(var_model_name_arg) +{ +} + +void +VarEstimationStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const +{ + output << "oo_ = var_estimation('" << var_model_name << "', M_, options_, oo_);" << endl; +} + VarRestrictionsStatement::VarRestrictionsStatement(const string &var_model_name_arg, const map<int, map<int, SymbolList> > &exclusion_restrictions_arg, const equation_restrictions_t &equation_restrictions_arg, diff --git a/ComputingTasks.hh b/ComputingTasks.hh index 5175d7cd5d8e2dd3cd710ec66b9b1973575707cd..ea4228b73d8d7f313d605080e1a9eb3efdda7752 100644 --- a/ComputingTasks.hh +++ b/ComputingTasks.hh @@ -148,6 +148,15 @@ public: virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; }; +class VarEstimationStatement : public Statement +{ +private: + const string &var_model_name; +public: + VarEstimationStatement(const string &var_model_name_arg); + virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; +}; + class ForecastStatement : public Statement { private: diff --git a/DynareBison.yy b/DynareBison.yy index e8c3d87155b2ac77e12d8b489465b29ddeee961b..298764f9caf5dc7cbe6d8dec43b573939a665255 100644 --- a/DynareBison.yy +++ b/DynareBison.yy @@ -140,7 +140,7 @@ class ParsingDriver; %left UMINUS UPLUS %nonassoc POWER %token EXP LOG LN LOG10 SIN COS TAN ASIN ACOS ATAN SINH COSH TANH ERF -%token ASINH ACOSH ATANH SQRT NORMCDF NORMPDF STEADY_STATE EXPECTATION +%token ASINH ACOSH ATANH SQRT NORMCDF NORMPDF STEADY_STATE EXPECTATION VAR_ESTIMATION /* GSA analysis */ %token DYNARE_SENSITIVITY MORRIS STAB REDFORM PPRIOR PRIOR_RANGE PPOST ILPTAU MORRIS_NLIV %token MORRIS_NTRA NSAM LOAD_REDFORM LOAD_RMSE LOAD_STAB ALPHA2_STAB LOGTRANS_REDFORM THRESHOLD_REDFORM @@ -219,6 +219,7 @@ statement : parameters | simul | stoch_simul | estimation + | var_estimation | estimated_params | estimated_params_bounds | estimated_params_init @@ -451,6 +452,11 @@ restriction_exclusion_equation : EQUATION '(' symbol ')' symbol_list ';' { driver.add_VAR_restriction_exclusion_equation($3); } ; +var_estimation : VAR_ESTIMATION '(' symbol ')' ';' + { driver.run_var_estimation($3); } + ; + + nonstationary_var_list : nonstationary_var_list symbol { driver.declare_nonstationary_var($2); } | nonstationary_var_list COMMA symbol diff --git a/DynareFlex.ll b/DynareFlex.ll index 46b24dea9729528541e41ef2789ca7a6cf0e177c..462e689364c353aafb945321323919832846ee2a 100644 --- a/DynareFlex.ll +++ b/DynareFlex.ll @@ -114,6 +114,7 @@ DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2 <INITIAL>periods {BEGIN DYNARE_STATEMENT; return token::PERIODS;} <INITIAL>model_info {BEGIN DYNARE_STATEMENT; return token::MODEL_INFO;} <INITIAL>estimation {BEGIN DYNARE_STATEMENT; return token::ESTIMATION;} +<INITIAL>var_estimation {BEGIN DYNARE_STATEMENT; return token::VAR_ESTIMATION;} <INITIAL>set_time {BEGIN DYNARE_STATEMENT; return token::SET_TIME;} <INITIAL>data {BEGIN DYNARE_STATEMENT; return token::DATA;} <INITIAL>varobs {BEGIN DYNARE_STATEMENT; return token::VAROBS;} diff --git a/ParsingDriver.cc b/ParsingDriver.cc index e3e7e4ba94d5f446db3d2439e5f27957674c3983..49a6bd3984bee92d1ff6bf4696b3f751aac03995 100644 --- a/ParsingDriver.cc +++ b/ParsingDriver.cc @@ -624,6 +624,12 @@ ParsingDriver::add_VAR_covariance_pair_restriction(string *name11, string *name1 delete name22; } +void +ParsingDriver::run_var_estimation(string *model_name) +{ + mod_file->addStatement(new VarEstimationStatement(*model_name)); +} + void ParsingDriver::periods(string *periods) { diff --git a/ParsingDriver.hh b/ParsingDriver.hh index af6a6865606db21846785ebde1f541af2fd23721..16193c743330b91b58a9239c69ba9948e80f9283 100644 --- a/ParsingDriver.hh +++ b/ParsingDriver.hh @@ -792,6 +792,8 @@ public: void add_VAR_restriction_equation_or_crossequation_final(string *name1, string *name2); void add_VAR_covariance_number_restriction(string *name1, string *name2, string *valuestr); void add_VAR_covariance_pair_restriction(string *name11, string *name12, string *name21, string *name22); + //! Runs VAR estimation process + void run_var_estimation(string *model_name); }; #endif // ! PARSING_DRIVER_HH