Merge branch 'irf_matching_preprocessor' into 'master'
Options for Bayesian IRF Matching in method_of_moments command See merge request Dynare/preprocessor!85master
commit
3d225c8df6
|
@ -5109,18 +5109,19 @@ MethodOfMomentsStatement::checkPass(ModFileStructure &mod_file_struct,
|
|||
mod_file_struct.order_option = max(mod_file_struct.order_option, order);
|
||||
}
|
||||
|
||||
if (!options_list.contains("datafile"))
|
||||
if (!options_list.contains("mom.mom_method"))
|
||||
{
|
||||
cerr << "ERROR: The method_of_moments statement requires a data file to be supplied via the datafile option." << endl;
|
||||
cerr << "ERROR: The 'method_of_moments' statement requires a method to be supplied via the 'mom_method' option. Possible values are 'GMM', 'SMM', or 'IRF_MATCHING'." << endl;
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (!options_list.contains("mom.mom_method"))
|
||||
auto mom_method_value = options_list.get_if<OptionsList::StringVal>("mom.mom_method");
|
||||
if ((mom_method_value == "GMM" || mom_method_value == "SMM") && !options_list.contains("datafile"))
|
||||
{
|
||||
cerr << "ERROR: The method_of_moments statement requires a method to be supplied via the mom_method option. Possible values are GMM or SMM." << endl;
|
||||
cerr << "ERROR: The 'method_of_moments' statement requires a data file to be supplied via the 'datafile' option." << endl;
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
||||
if (auto opt = options_list.get_if<OptionsList::StringVal>("mom.mom_method");
|
||||
opt && *opt == "GMM")
|
||||
mod_file_struct.GMM_present = true;
|
||||
|
|
|
@ -152,7 +152,7 @@ class ParsingDriver;
|
|||
%token RESTRICTION RESTRICTION_FNAME CROSS_RESTRICTIONS NLAGS CONTEMP_REDUCED_FORM REAL_PSEUDO_FORECAST
|
||||
%token DUMMY_OBS NSTATES INDXSCALESSTATES NO_BAYESIAN_PRIOR SPECIFICATION SIMS_ZHA
|
||||
%token <string> ALPHA BETA ABAND NINV CMS NCMS CNUM GAMMA INV_GAMMA INV_GAMMA1 INV_GAMMA2 NORMAL UNIFORM EPS PDF FIG DR NONE PRIOR PRIOR_VARIANCE HESSIAN IDENTITY_MATRIX DIRICHLET DIAGONAL OPTIMAL
|
||||
%token GSIG2_LMDM Q_DIAG FLAT_PRIOR NCSK NSTD WEIBULL WEIBULL_PDF GMM SMM
|
||||
%token GSIG2_LMDM Q_DIAG FLAT_PRIOR NCSK NSTD WEIBULL WEIBULL_PDF
|
||||
%token INDXPARR INDXOVR INDXAP APBAND INDXIMF INDXFORE FOREBAND INDXGFOREHAT INDXGIMFHAT
|
||||
%token INDXESTIMA INDXGDLS EQ_MS FILTER_COVARIANCE UPDATED_COVARIANCE FILTER_DECOMPOSITION SMOOTHED_STATE_UNCERTAINTY SMOOTHER_REDUX
|
||||
%token EQ_CMS TLINDX TLNUMBER RESTRICTIONS POSTERIOR_SAMPLER_OPTIONS
|
||||
|
@ -180,14 +180,16 @@ class ParsingDriver;
|
|||
%token PAC_TARGET_INFO COMPONENT TARGET AUXNAME AUXNAME_TARGET_NONSTATIONARY PAC_TARGET_NONSTATIONARY
|
||||
%token <string> KIND LL DL DD ADD MULTIPLY
|
||||
/* Method of Moments */
|
||||
%token METHOD_OF_MOMENTS MOM_METHOD
|
||||
%token GMM SMM IRF_MATCHING
|
||||
%token METHOD_OF_MOMENTS MOM_METHOD SIMULATION_METHOD
|
||||
%token BARTLETT_KERNEL_LAG WEIGHTING_MATRIX WEIGHTING_MATRIX_SCALING_FACTOR ANALYTIC_STANDARD_ERRORS ANALYTIC_JACOBIAN PENALIZED_ESTIMATOR VERBOSE
|
||||
%token SIMULATION_MULTIPLE MOM_SEED SEED BOUNDED_SHOCK_SUPPORT ADDITIONAL_OPTIMIZER_STEPS MOM_SE_TOLX SE_TOLX MOM_BURNIN BURNIN
|
||||
%token IRF_MATCHING_FILE ADD_TINY_NUMBER_TO_CHOLESKY
|
||||
%token EQTAGS
|
||||
%token ANALYTICAL_GIRF IRF_IN_PERCENT EMAS_GIRF EMAS_DROP EMAS_TOLF EMAS_MAX_ITER
|
||||
%token NO_IDENTIFICATION_STRENGTH NO_IDENTIFICATION_REDUCEDFORM NO_IDENTIFICATION_MOMENTS
|
||||
%token NO_IDENTIFICATION_MINIMAL NO_IDENTIFICATION_SPECTRUM NORMALIZE_JACOBIANS GRID_NBR
|
||||
%token TOL_RANK TOL_DERIV TOL_SV CHECKS_VIA_SUBSETS MAX_DIM_SUBSETS_GROUPS ZERO_MOMENTS_TOLERANCE
|
||||
%token TOL_RANK TOL_DERIV TOL_SV CHECKS_VIA_SUBSETS MAX_DIM_SUBSETS_GROUPS
|
||||
%token MAX_NROWS SQUEEZE_SHOCK_DECOMPOSITION WITH_EPILOGUE MODEL_REMOVE MODEL_REPLACE MODEL_OPTIONS
|
||||
%token VAR_REMOVE ESTIMATED_PARAMS_REMOVE BLOCK_STATIC BLOCK_DYNAMIC INCIDENCE RESID NON_ZERO LEARNT_IN PLUS_EQUAL TIMES_EQUAL
|
||||
%token FSOLVE_OPTIONS
|
||||
|
@ -1501,61 +1503,97 @@ method_of_moments_options_list : method_of_moments_option COMMA method_of_moment
|
|||
| method_of_moments_option
|
||||
;
|
||||
|
||||
method_of_moments_option : o_mom_method
|
||||
| o_datafile
|
||||
| o_bartlett_kernel_lag
|
||||
| o_order
|
||||
| o_penalized_estimator
|
||||
| o_pruning
|
||||
| o_verbose
|
||||
| o_weighting_matrix
|
||||
| o_weighting_matrix_scaling_factor
|
||||
| o_mom_se_tolx
|
||||
| o_mom_burnin
|
||||
| o_bounded_shock_support
|
||||
| o_mom_seed
|
||||
| o_simulation_multiple
|
||||
method_of_moments_option : o_add_tiny_number_to_cholesky
|
||||
| o_additional_optimizer_steps
|
||||
| o_aim_solver
|
||||
| o_analytic_jacobian
|
||||
| o_analytic_standard_errors
|
||||
| o_bartlett_kernel_lag
|
||||
| o_bounded_shock_support
|
||||
| o_brooks_gelman_plotrows
|
||||
| o_cova_compute
|
||||
| o_datafile
|
||||
| o_dirname
|
||||
| o_dr
|
||||
| o_dr_cycle_reduction_tol
|
||||
| o_dr_logarithmic_reduction_maxiter
|
||||
| o_dr_logarithmic_reduction_tol
|
||||
| o_drop
|
||||
| o_first_obs
|
||||
| o_geweke_interval
|
||||
| o_graph_format
|
||||
| o_huge_number
|
||||
| o_irf_matching_file
|
||||
| o_k_order_solver
|
||||
| o_load_mh_file
|
||||
| o_load_results_after_load_mh
|
||||
| o_logdata
|
||||
| o_lyapunov
|
||||
| o_lyapunov_complex_threshold
|
||||
| o_lyapunov_doubling_tol
|
||||
| o_lyapunov_fixed_point_tol
|
||||
| o_mcmc_jumping_covariance
|
||||
| o_mh_conf_sig
|
||||
| o_mh_drop
|
||||
| o_mh_init_scale_factor
|
||||
| o_mh_initialize_from_previous_mcmc
|
||||
| o_mh_initialize_from_previous_mcmc_directory
|
||||
| o_mh_initialize_from_previous_mcmc_prior
|
||||
| o_mh_initialize_from_previous_mcmc_record
|
||||
| o_mh_jscale
|
||||
| o_mh_nblocks
|
||||
| o_mh_posterior_mode_estimation
|
||||
| o_mh_recover
|
||||
| o_mh_replic
|
||||
| o_mh_tune_guess
|
||||
| o_mh_tune_jscale
|
||||
| o_mom_burnin
|
||||
| o_mom_method
|
||||
| o_mom_seed
|
||||
| o_mom_se_tolx
|
||||
| o_mode_check
|
||||
| o_mode_check_neighbourhood_size
|
||||
| o_mode_check_number_of_points
|
||||
| o_mode_check_symmetric_plots
|
||||
| o_mode_compute
|
||||
| o_mode_file
|
||||
| o_nobs
|
||||
| o_no_posterior_kernel_density
|
||||
| o_nodiagnostic
|
||||
| o_nodisplay
|
||||
| o_nograph
|
||||
| o_noprint
|
||||
| o_plot_priors
|
||||
| o_prior_trunc
|
||||
| o_tex
|
||||
| o_first_obs
|
||||
| o_logdata
|
||||
| o_nobs
|
||||
| o_prefilter
|
||||
| o_xls_sheet
|
||||
| o_xls_range
|
||||
| o_mode_compute
|
||||
| o_additional_optimizer_steps
|
||||
| o_optim
|
||||
| o_silent_optimizer
|
||||
| o_huge_number
|
||||
| o_analytic_jacobian
|
||||
| o_aim_solver
|
||||
| o_dr
|
||||
| o_dr_cycle_reduction_tol
|
||||
| o_dr_logarithmic_reduction_tol
|
||||
| o_dr_logarithmic_reduction_maxiter
|
||||
| o_k_order_solver
|
||||
| o_lyapunov
|
||||
| o_lyapunov_complex_threshold
|
||||
| o_lyapunov_fixed_point_tol
|
||||
| o_lyapunov_doubling_tol
|
||||
| o_sylvester
|
||||
| o_sylvester_fixed_point_tol
|
||||
| o_order
|
||||
| o_penalized_estimator
|
||||
| o_plot_priors
|
||||
| o_posterior_max_subsample_draws
|
||||
| o_posterior_sampler_options
|
||||
| o_posterior_sampling_method
|
||||
| o_prefilter
|
||||
| o_prior_trunc
|
||||
| o_pruning
|
||||
| o_qz_criterium
|
||||
| o_qz_zero_threshold
|
||||
| o_raftery_lewis_diagnostics
|
||||
| o_raftery_lewis_qrs
|
||||
| o_relative_irf
|
||||
| o_replic
|
||||
| o_schur_vec_tol
|
||||
| o_zero_moments_tolerance
|
||||
| o_mode_check
|
||||
| o_mode_check_neighbourhood_size
|
||||
| o_mode_check_symmetric_plots
|
||||
| o_mode_check_number_of_points
|
||||
| o_silent_optimizer
|
||||
| o_simulation_method
|
||||
| o_simulation_multiple
|
||||
| o_sub_draws
|
||||
| o_sylvester
|
||||
| o_sylvester_fixed_point_tol
|
||||
| o_taper_steps
|
||||
| o_tex
|
||||
| o_use_penalized_objective_for_hessian
|
||||
| o_verbose
|
||||
| o_weighting_matrix
|
||||
| o_weighting_matrix_scaling_factor
|
||||
| o_xls_range
|
||||
| o_xls_sheet
|
||||
;
|
||||
|
||||
prior_function : PRIOR_FUNCTION '(' prior_posterior_function_options_list ')' ';'
|
||||
|
@ -2436,7 +2474,6 @@ identification_option : o_ar
|
|||
| o_max_dim_subsets_groups
|
||||
| o_order
|
||||
| o_schur_vec_tol
|
||||
| o_zero_moments_tolerance
|
||||
;
|
||||
|
||||
model_comparison : MODEL_COMPARISON mc_filename_list ';'
|
||||
|
@ -4101,30 +4138,28 @@ o_fsolve_options : FSOLVE_OPTIONS EQUAL '(' name_value_pair_with_boolean_list ')
|
|||
|
||||
// Some options to "method_of_moments"
|
||||
o_bartlett_kernel_lag : BARTLETT_KERNEL_LAG EQUAL INT_NUMBER { driver.option_num("mom.bartlett_kernel_lag", $3); };
|
||||
|
||||
o_weighting_matrix : WEIGHTING_MATRIX EQUAL vec_str { driver.option_vec_cellstr("mom.weighting_matrix", $3); }
|
||||
|
||||
o_weighting_matrix_scaling_factor : WEIGHTING_MATRIX_SCALING_FACTOR EQUAL non_negative_number { driver.option_num("mom.weighting_matrix_scaling_factor", $3); };
|
||||
|
||||
o_analytic_standard_errors : ANALYTIC_STANDARD_ERRORS { driver.option_num("mom.analytic_standard_errors", "true"); };
|
||||
|
||||
o_analytic_jacobian : ANALYTIC_JACOBIAN { driver.option_num("mom.analytic_jacobian", "true"); };
|
||||
|
||||
o_mom_method : MOM_METHOD EQUAL GMM
|
||||
{ driver.option_str("mom.mom_method", "GMM"); }
|
||||
| MOM_METHOD EQUAL SMM
|
||||
{ driver.option_str("mom.mom_method", "SMM"); }
|
||||
;
|
||||
| MOM_METHOD EQUAL IRF_MATCHING
|
||||
{ driver.option_str("mom.mom_method", "IRF_MATCHING"); };
|
||||
o_simulation_method : SIMULATION_METHOD EQUAL STOCH_SIMUL
|
||||
{ driver.option_str("mom.simulation_method", "STOCH_SIMUL"); };
|
||||
o_penalized_estimator : PENALIZED_ESTIMATOR { driver.option_num("mom.penalized_estimator", "true"); };
|
||||
o_verbose : VERBOSE { driver.option_num("mom.verbose", "true"); };
|
||||
|
||||
o_simulation_multiple : SIMULATION_MULTIPLE EQUAL INT_NUMBER { driver.option_num("mom.simulation_multiple", $3); };
|
||||
o_mom_burnin : BURNIN EQUAL INT_NUMBER { driver.option_num("mom.burnin", $3); };
|
||||
o_bounded_shock_support : BOUNDED_SHOCK_SUPPORT { driver.option_num("mom.bounded_shock_support", "true"); };
|
||||
o_mom_seed : SEED EQUAL INT_NUMBER { driver.option_num("mom.seed", $3); };
|
||||
o_additional_optimizer_steps : ADDITIONAL_OPTIMIZER_STEPS EQUAL vec_int { driver.option_vec_int("additional_optimizer_steps", $3); };
|
||||
|
||||
o_mom_se_tolx : SE_TOLX EQUAL non_negative_number { driver.option_num("mom.se_tolx", $3); };
|
||||
o_irf_matching_file : IRF_MATCHING_FILE EQUAL filename { driver.option_str("mom.irf_matching_file.name", $3); };
|
||||
o_add_tiny_number_to_cholesky : ADD_TINY_NUMBER_TO_CHOLESKY EQUAL non_negative_number { driver.option_num("add_tiny_number_to_cholesky", $3); };
|
||||
|
||||
o_analytical_girf : ANALYTICAL_GIRF { driver.option_num("irf_opt.analytical_GIRF", "true"); };
|
||||
o_irf_in_percent : IRF_IN_PERCENT { driver.option_num("irf_opt.percent", "true"); };
|
||||
|
@ -4147,7 +4182,6 @@ o_tol_deriv : TOL_DERIV EQUAL non_negative_number { driver.option_num("tol_deriv
|
|||
o_tol_sv : TOL_SV EQUAL non_negative_number { driver.option_num("tol_sv", $3); };
|
||||
o_checks_via_subsets : CHECKS_VIA_SUBSETS EQUAL INT_NUMBER { driver.option_num("checks_via_subsets", $3); };
|
||||
o_max_dim_subsets_groups : MAX_DIM_SUBSETS_GROUPS EQUAL INT_NUMBER { driver.option_num("max_dim_subsets_groups", $3); };
|
||||
o_zero_moments_tolerance : ZERO_MOMENTS_TOLERANCE EQUAL non_negative_number { driver.option_num("zero_moments_tolerance", $3); };
|
||||
o_block_static : BLOCK_STATIC { driver.option_num("block_static","true"); };
|
||||
o_block_dynamic : BLOCK_DYNAMIC { driver.option_num("block_dynamic","true"); };
|
||||
o_incidence : INCIDENCE { driver.option_num("incidence","true"); };
|
||||
|
|
|
@ -734,11 +734,14 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4])
|
|||
}
|
||||
<DYNARE_STATEMENT>gmm {return token::GMM;}
|
||||
<DYNARE_STATEMENT>smm {return token::SMM;}
|
||||
<DYNARE_STATEMENT>irf_matching {return token::IRF_MATCHING;}
|
||||
<DYNARE_STATEMENT>stoch_simul {return token::STOCH_SIMUL;}
|
||||
<DYNARE_STATEMENT>weighting_matrix {return token::WEIGHTING_MATRIX; }
|
||||
<DYNARE_STATEMENT>weighting_matrix_scaling_factor {return token::WEIGHTING_MATRIX_SCALING_FACTOR; }
|
||||
<DYNARE_STATEMENT>analytic_standard_errors {return token::ANALYTIC_STANDARD_ERRORS; }
|
||||
<DYNARE_STATEMENT>analytic_jacobian {return token::ANALYTIC_JACOBIAN; }
|
||||
<DYNARE_STATEMENT>mom_method {return token::MOM_METHOD; }
|
||||
<DYNARE_STATEMENT>simulation_method {return token::SIMULATION_METHOD; }
|
||||
<DYNARE_STATEMENT>penalized_estimator {return token::PENALIZED_ESTIMATOR; }
|
||||
<DYNARE_STATEMENT>verbose {return token::VERBOSE; }
|
||||
<DYNARE_STATEMENT>simulation_multiple {return token::SIMULATION_MULTIPLE; }
|
||||
|
@ -746,6 +749,9 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4])
|
|||
<DYNARE_STATEMENT>seed {return token::SEED; }
|
||||
<DYNARE_STATEMENT>se_tolx {return token::SE_TOLX;}
|
||||
<DYNARE_STATEMENT>bounded_shock_support {return token::BOUNDED_SHOCK_SUPPORT; }
|
||||
<DYNARE_STATEMENT>irf_matching_file {return token::IRF_MATCHING_FILE;}
|
||||
<DYNARE_STATEMENT>add_tiny_number_to_cholesky {return token::ADD_TINY_NUMBER_TO_CHOLESKY; }
|
||||
|
||||
<DYNARE_STATEMENT>analytical_girf {return token::ANALYTICAL_GIRF; }
|
||||
<DYNARE_STATEMENT>irf_in_percent {return token::IRF_IN_PERCENT; }
|
||||
<DYNARE_STATEMENT>emas_girf {return token::EMAS_GIRF; }
|
||||
|
@ -765,7 +771,6 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4])
|
|||
<DYNARE_STATEMENT>tol_sv {return token::TOL_SV;}
|
||||
<DYNARE_STATEMENT>checks_via_subsets {return token::CHECKS_VIA_SUBSETS;}
|
||||
<DYNARE_STATEMENT>max_dim_subsets_groups {return token::MAX_DIM_SUBSETS_GROUPS;}
|
||||
<DYNARE_STATEMENT>zero_moments_tolerance {return token::ZERO_MOMENTS_TOLERANCE;}
|
||||
<DYNARE_STATEMENT>max_nrows {return token::MAX_NROWS;}
|
||||
<DYNARE_STATEMENT>with_epilogue {return token::WITH_EPILOGUE;}
|
||||
<DYNARE_STATEMENT>heteroskedastic_filter {return token::HETEROSKEDASTIC_FILTER;}
|
||||
|
|
|
@ -1036,7 +1036,9 @@ ModFile::writeMOutput(const string &basename, bool clear_all, bool clear_global,
|
|||
<< "if exist('dataset_info', 'var') == 1" << endl
|
||||
<< " save([M_.dname filesep 'Output' filesep '" << basename << "_results.mat'], 'dataset_info', '-append');" << endl << "end" << endl
|
||||
<< "if exist('oo_recursive_', 'var') == 1" << endl
|
||||
<< " save([M_.dname filesep 'Output' filesep '" << basename << "_results.mat'], 'oo_recursive_', '-append');" << endl << "end" << endl;
|
||||
<< " save([M_.dname filesep 'Output' filesep '" << basename << "_results.mat'], 'oo_recursive_', '-append');" << endl << "end" << endl
|
||||
<< "if exist('options_mom_', 'var') == 1" << endl
|
||||
<< " save([M_.dname filesep 'Output' filesep '" << basename << "_results.mat'], 'options_mom_', '-append');" << endl << "end" << endl;
|
||||
|
||||
config_file.writeEndParallel(mOutputFile);
|
||||
|
||||
|
|
Loading…
Reference in New Issue