diff --git a/doc/dynare.texi b/doc/dynare.texi index 7f44ffbcd..bf1cdeec5 100644 --- a/doc/dynare.texi +++ b/doc/dynare.texi @@ -6033,6 +6033,8 @@ Sets the method for approximating the proposal distribution. Possible values for @anchor{distribution_approximation} Sets the method for approximating the particle distribution. Possible values for @var{OPTION} are: @code{cubature}, @code{montecarlo} and @code{unscented}. Default value is @code{unscented}. +@item cpf_weights = @var{OPTION} +@anchor{cpf_weights} Controls the method used to update the weights in conditional particle filter, possible values are @code{amisanotristani} (@cite{Amisano et al (2010)}) or @code{murrayjonesparslow} (@cite{Murray et al. (2013)}). Default value is @code{amisanotristani}. @end table @@ -13551,6 +13553,9 @@ Adjemian, Stéphane, Matthieu Darracq Parriès and Stéphane Moyen (2008): ``Tow Aguiar, Mark and Gopinath, Gita (2004): ``Emerging Market Business Cycles: The Cycle is the Trend,'' @i{NBER Working Paper}, 10734 +@item +Amisano, Gianni and Tristani, Oreste (2010): ``Euro area inflation persistence in an estimated nonlinear DSGE model'', @i{Journal of Economic Dynamics and Control}, 34(10), 1837--1858 + @item Andreasen, Martin M., Jesús Fernández-Villaverde, and Juan Rubio-Ramírez (2013): ``The Pruned State-Space System for Non-Linear DSGE Models: Theory and Empirical Applications,'' @i{NBER Working Paper}, 18983 @@ -13742,6 +13747,10 @@ of Monetary Economics}, 54(4), 1069--1087 Mancini-Griffoli, Tommaso (2007): ``Dynare User Guide: An introduction to the solution and estimation of DSGE models'' +@item +Murray, Lawrence M., Emlyn M. Jones and John Parslow (2013): ``On Disturbance State-Space Models and the Particle Marginal +Metropolis-Hastings Sampler'', @i{SIAM/ASA Journal on Uncertainty Quantification}, 1, 494–521. + @item Pearlman, Joseph, David Currie, and Paul Levine (1986): ``Rational expectations models with partial information,'' @i{Economic diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m index 9063a3065..9b168472a 100644 --- a/matlab/global_initialization.m +++ b/matlab/global_initialization.m @@ -282,6 +282,9 @@ particle.mixture_measurement_shocks = 1 ; % Online approach particle.liu_west_delta = 0.99 ; particle.liu_west_chol_sigma_bar = .01 ; +% Options for setting the weights in conditional particle filters. +particle.cpf_weights_method.amisanotristani = 1; +particle.cpf_weights_method.murrayjonesparslow = 0; % Copy ep structure in options_ global structure options_.particle = particle; options_.rwgmh.init_scale = 1e-4 ; diff --git a/matlab/particles b/matlab/particles index a73e4d94c..af66ea9c2 160000 --- a/matlab/particles +++ b/matlab/particles @@ -1 +1 @@ -Subproject commit a73e4d94cb792f439a449b54cd5493a386c7bb9e +Subproject commit af66ea9c287d84302783d464f348f787d08d3f08 diff --git a/preprocessor/DynareBison.yy b/preprocessor/DynareBison.yy index a19e750ea..f31497667 100644 --- a/preprocessor/DynareBison.yy +++ b/preprocessor/DynareBison.yy @@ -109,6 +109,7 @@ class ParsingDriver; %token MODE_CHECK MODE_CHECK_NEIGHBOURHOOD_SIZE MODE_CHECK_SYMMETRIC_PLOTS MODE_CHECK_NUMBER_OF_POINTS MODE_COMPUTE MODE_FILE MODEL MODEL_COMPARISON MODEL_INFO MSHOCKS ABS SIGN %token MODEL_DIAGNOSTICS MODIFIEDHARMONICMEAN MOMENTS_VARENDO CONTEMPORANEOUS_CORRELATION DIFFUSE_FILTER SUB_DRAWS TAPER_STEPS GEWEKE_INTERVAL MCMC_JUMPING_COVARIANCE MOMENT_CALIBRATION %token NUMBER_OF_PARTICLES RESAMPLING SYSTEMATIC GENERIC RESAMPLING_THRESHOLD RESAMPLING_METHOD KITAGAWA STRATIFIED SMOOTH +%token CPF_WEIGHTS AMISANOTRISTANI MURRAYJONESPARSLOW %token FILTER_ALGORITHM PROPOSAL_APPROXIMATION CUBATURE UNSCENTED MONTECARLO DISTRIBUTION_APPROXIMATION %token NAME %token NAN_CONSTANT NO_STATIC NOBS NOCONSTANT NODISPLAY NOCORR NODIAGNOSTIC NOFUNCTIONS NO_HOMOTOPY @@ -1773,6 +1774,7 @@ estimation_options : o_datafile | o_resampling_threshold | o_resampling_method | o_filter_algorithm + | o_cpf_weights | o_proposal_approximation | o_distribution_approximation | o_dirname @@ -2886,6 +2888,8 @@ o_resampling_threshold : RESAMPLING_THRESHOLD EQUAL non_negative_number { driver o_resampling_method : RESAMPLING_METHOD EQUAL KITAGAWA {driver.option_num("particle.resampling.method.kitagawa", "1"); driver.option_num("particle.resampling.method.smooth", "0"); driver.option_num("particle.resampling.smethod.stratified", "0"); } | RESAMPLING_METHOD EQUAL SMOOTH {driver.option_num("particle.resampling.method.kitagawa", "0"); driver.option_num("particle.resampling.method.smooth", "1"); driver.option_num("particle.resampling.smethod.stratified", "0"); } | RESAMPLING_METHOD EQUAL STRATIFIED {driver.option_num("particle.resampling.method.kitagawa", "0"); driver.option_num("particle.resampling.method.smooth", "0"); driver.option_num("particle.resampling.method.stratified", "1"); }; +o_cpf_weights : CPF_WEIGHTS EQUAL AMISANOTRISTANI {driver.option_num("particle.cpf_weights_method.amisanotristani", "1"); driver.option_num("particle.cpf_weights_method.murrayjonesparslow", "0"); } + | CPF_WEIGHTS EQUAL MURRAYJONESPARSLOW {driver.option_num("particle.cpf_weights_method.amisanotristani", "0"); driver.option_num("particle.cpf_weights_method.murrayjonesparslow", "1"); }; o_filter_algorithm : FILTER_ALGORITHM EQUAL symbol { driver.option_str("particle.filter_algorithm", $3); }; o_proposal_approximation : PROPOSAL_APPROXIMATION EQUAL CUBATURE {driver.option_num("particle.proposal_approximation.cubature", "1"); driver.option_num("particle.proposal_approximation.unscented", "0"); driver.option_num("particle.proposal_approximation.montecarlo", "0");} | PROPOSAL_APPROXIMATION EQUAL UNSCENTED {driver.option_num("particle.proposal_approximation.cubature", "0"); driver.option_num("particle.proposal_approximation.unscented", "1"); driver.option_num("particle.proposal_approximation.montecarlo", "0");} diff --git a/preprocessor/DynareFlex.ll b/preprocessor/DynareFlex.ll index e5775ca8b..54b08abe6 100644 --- a/preprocessor/DynareFlex.ll +++ b/preprocessor/DynareFlex.ll @@ -383,6 +383,9 @@ DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2 kitagawa {return token::KITAGAWA;} smooth {return token::SMOOTH;} stratified {return token::STRATIFIED;} +cpf_weights {return token::CPF_WEIGHTS;} +amisanotristani {return token::AMISANOTRISTANI;} +murrayjonesparslow {return token::MURRAYJONESPARSLOW;} filter_algorithm {return token::FILTER_ALGORITHM;} proposal_approximation {return token::PROPOSAL_APPROXIMATION;} cubature {return token::CUBATURE;}