occbin: support occbin tags in equation tags, add occbin_likelihood and occbin_smoother as options to estimation
parent
f9a7d8ded3
commit
14be6bad00
|
@ -1247,6 +1247,20 @@ EstimationStatement::writeOutput(ostream &output, const string &basename, bool m
|
|||
{
|
||||
options_list.writeOutput(output);
|
||||
|
||||
bool occbin_option_present = false;
|
||||
if (auto it = options_list.num_options.find("occbin_likelihood");
|
||||
it != options_list.num_options.end() && it->second == "true")
|
||||
occbin_option_present = true;
|
||||
|
||||
if (auto it = options_list.num_options.find("occbin_smoother");
|
||||
it != options_list.num_options.end() && it->second == "true")
|
||||
occbin_option_present = true;
|
||||
|
||||
if (occbin_option_present)
|
||||
output << "options_ = set_default_occbin_options(options_, M_);" << endl
|
||||
<< "clear mr_runsim_occbin_fn" << endl
|
||||
<< "M_ = get_wish_list(M_);" << endl;
|
||||
|
||||
// Special treatment for order option and particle filter
|
||||
if (auto it = options_list.num_options.find("order");
|
||||
it == options_list.num_options.end())
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright © 2003-2019 Dynare Team
|
||||
* Copyright © 2003-2020 Dynare Team
|
||||
*
|
||||
* This file is part of Dynare.
|
||||
*
|
||||
|
@ -3200,6 +3200,23 @@ DynamicModel::writeOutput(ostream &output, const string &basename, bool block_de
|
|||
output << "};" << endl;
|
||||
}
|
||||
|
||||
// Write Occbin tags
|
||||
map<int, vector<pair<string, string>>> occbin_options;
|
||||
for (const auto &[eqn, tag] : equation_tags)
|
||||
if (tag.first == "pswitch"
|
||||
|| tag.first == "bind"
|
||||
|| tag.first == "relax"
|
||||
|| tag.first == "pcrit")
|
||||
occbin_options[eqn].push_back(tag);
|
||||
|
||||
int idx = 0;
|
||||
for (const auto &[eqn, tags] : occbin_options)
|
||||
{
|
||||
idx++;
|
||||
for (const auto &[tag_name, tag_value] : tags)
|
||||
output << "M_.occbin.constraint(" << idx << ")." << tag_name << " = '" << tag_value << "';" << endl;
|
||||
}
|
||||
|
||||
// Write mapping for variables and equations they are present in
|
||||
for (const auto &variable : variableMapping)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// -*- C++ -*-
|
||||
/*
|
||||
* Copyright © 2003-2019 Dynare Team
|
||||
* Copyright © 2003-2020 Dynare Team
|
||||
*
|
||||
* This file is part of Dynare.
|
||||
*
|
||||
|
@ -128,7 +128,7 @@ class ParsingDriver;
|
|||
%precedence UNARY
|
||||
%nonassoc POWER
|
||||
%token EXP LOG LN LOG10 SIN COS TAN ASIN ACOS ATAN ERF DIFF ADL AUXILIARY_MODEL_NAME
|
||||
%token SQRT CBRT NORMCDF NORMPDF STEADY_STATE EXPECTATION VAR_ESTIMATION
|
||||
%token SQRT CBRT NORMCDF NORMPDF STEADY_STATE EXPECTATION VAR_ESTIMATION OCCBIN_LIKELIHOOD OCCBIN_SMOOTHER
|
||||
/* 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
|
||||
|
@ -2100,6 +2100,8 @@ estimation_options : o_datafile
|
|||
| o_emas_max_iter
|
||||
| o_stderr_multiples
|
||||
| o_diagonal_only
|
||||
| o_occbin_likelihood
|
||||
| o_occbin_smoother
|
||||
;
|
||||
|
||||
list_optim_option : QUOTED_STRING COMMA QUOTED_STRING
|
||||
|
@ -3484,8 +3486,8 @@ o_proposal_approximation : PROPOSAL_APPROXIMATION EQUAL CUBATURE {driver.option_
|
|||
o_distribution_approximation : DISTRIBUTION_APPROXIMATION EQUAL CUBATURE {driver.option_num("particle.distribution_approximation.cubature", "true"); driver.option_num("particle.distribution_approximation.unscented", "false"); driver.option_num("particle.distribution_approximation.montecarlo", "false");}
|
||||
| DISTRIBUTION_APPROXIMATION EQUAL UNSCENTED {driver.option_num("particle.distribution_approximation.cubature", "false"); driver.option_num("particle.distribution_approximation.unscented", "true"); driver.option_num("particle.distribution_approximation.montecarlo", "false");}
|
||||
| DISTRIBUTION_APPROXIMATION EQUAL MONTECARLO {driver.option_num("particle.distribution_approximation.cubature", "false"); driver.option_num("particle.distribution_approximation.unscented", "false"); driver.option_num("particle.distribution_approximation.montecarlo", "true");} ;
|
||||
|
||||
|
||||
o_occbin_likelihood : OCCBIN_LIKELIHOOD { driver.option_num("occbin_likelihood", "true"); };
|
||||
o_occbin_smoother : OCCBIN_SMOOTHER { driver.option_num("occbin_smoother", "true"); };
|
||||
o_gsa_identification : IDENTIFICATION EQUAL INT_NUMBER { driver.option_num("identification", $3); }; /*not in doc */
|
||||
o_gsa_morris : MORRIS EQUAL INT_NUMBER { driver.option_num("morris", $3); };
|
||||
o_gsa_stab : STAB EQUAL INT_NUMBER { driver.option_num("stab", $3); };
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* -*- C++ -*- */
|
||||
/*
|
||||
* Copyright © 2003-2019 Dynare Team
|
||||
* Copyright © 2003-2020 Dynare Team
|
||||
*
|
||||
* This file is part of Dynare.
|
||||
*
|
||||
|
@ -434,6 +434,8 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4]|w([1-9]{1}|[1-4][0-9]|5[0-2]))
|
|||
<DYNARE_STATEMENT>rescale_prediction_error_covariance {return token::RESCALE_PREDICTION_ERROR_COVARIANCE;}
|
||||
<DYNARE_STATEMENT>use_penalized_objective_for_hessian {return token::USE_PENALIZED_OBJECTIVE_FOR_HESSIAN;}
|
||||
<DYNARE_STATEMENT>expression {return token::EXPRESSION;}
|
||||
<DYNARE_STATEMENT>occbin_likelihood {return token::OCCBIN_LIKELIHOOD;}
|
||||
<DYNARE_STATEMENT>occbin_smoother {return token::OCCBIN_SMOOTHER;}
|
||||
|
||||
<DYNARE_STATEMENT>alpha {
|
||||
yylval->build<string>(yytext);
|
||||
|
|
Loading…
Reference in New Issue