diff --git a/matlab/dsge_likelihood.m b/matlab/dsge_likelihood.m index 7ac8114169c4e7315b1387ceb8ca5e55b9e7087f..aae1224e4e41a4b2b97e85983371011432794f5b 100644 --- a/matlab/dsge_likelihood.m +++ b/matlab/dsge_likelihood.m @@ -631,7 +631,7 @@ if analytic_derivation, analytic_deriv_info={analytic_derivation,DT,DYss,DOm,DH,DP,asy_Hess}; else analytic_deriv_info={analytic_derivation,DT,DYss,DOm,DH,DP,D2T,D2Yss,D2Om,D2H,D2P}; - clear DT DYss DOm DH DP D2T D2Yss D2Om D2H D2P, + clear DT DYss DOm DP D2T D2Yss D2Om D2H D2P, end else analytic_deriv_info={0}; diff --git a/matlab/dynare_estimation_init.m b/matlab/dynare_estimation_init.m index e54618a7bada57818daef313c9c960d92cb81d9c..eab7b8b7e1c2abfcba31630ef90b0cc0447fc9f9 100644 --- a/matlab/dynare_estimation_init.m +++ b/matlab/dynare_estimation_init.m @@ -442,6 +442,9 @@ else end; if options_.analytic_derivation, + if options_.lik_init == 3, + error('analytic derivation is incompatible with diffuse filter') + end options_.analytic_derivation = 1; if ~(exist('sylvester3','file')==2), dynareroot = strrep(which('dynare'),'dynare.m',''); diff --git a/matlab/optimization/dynare_minimize_objective.m b/matlab/optimization/dynare_minimize_objective.m index b345b8d552fdf77566c29f1d01fe9442ab6fe9dc..4113bf119997c64623493255e48f9f80557b7aa1 100644 --- a/matlab/optimization/dynare_minimize_objective.m +++ b/matlab/optimization/dynare_minimize_objective.m @@ -178,9 +178,6 @@ switch minimizer_algorithm end [opt_par_values,hessian_mat,gg,fval,invhess] = newrat(objective_function,start_par_value,analytic_grad,crit,nit,0,varargin{:}); %hessian_mat is the plain outer product gradient Hessian - if options_.analytic_derivation %Hessian is already analytic one, reset option - options_.analytic_derivation = ana_deriv; - end case 6 [opt_par_values, hessian_mat, Scale, fval] = gmhmaxlik(objective_function, start_par_value, ... Initial_Hessian, options_.mh_jscale, bounds, prior_information.p2, options_.gmhmaxlik, options_.optim_opt, varargin{:}); diff --git a/tests/analytic_derivatives/fs2000_analytic_derivation.mod b/tests/analytic_derivatives/fs2000_analytic_derivation.mod index c4f2a74799d11ba1d1c8a36353c9582d61f6c300..3dc8b7ad04c429b1c54f9a878de77d3d6540673e 100644 --- a/tests/analytic_derivatives/fs2000_analytic_derivation.mod +++ b/tests/analytic_derivatives/fs2000_analytic_derivation.mod @@ -61,7 +61,7 @@ alp, beta_pdf, 0.356, 0.02; bet, beta_pdf, 0.993, 0.002; gam, normal_pdf, 0.0085, 0.003; mst, normal_pdf, 1.0002, 0.007; -rho, beta_pdf, 0.129, 0.223; +rho, beta_pdf, 0.129, 0.1; psi, beta_pdf, 0.65, 0.05; del, beta_pdf, 0.01, 0.005; stderr e_a, inv_gamma_pdf, 0.035449, inf; @@ -74,5 +74,7 @@ options_.solve_tolf = 1e-12; estimation(order=1,mode_compute=5,analytic_derivation,kalman_algo=1,datafile=fsdat_simul,nobs=192,mh_replic=0,mh_nblocks=2,mh_jscale=0.8); estimation(order=1,mode_compute=5,analytic_derivation,kalman_algo=2,datafile=fsdat_simul,nobs=192,mh_replic=0,mh_nblocks=2,mh_jscale=0.8); -estimation(order=1,mode_compute=5,analytic_derivation,kalman_algo=3,datafile=fsdat_simul,nobs=192,mh_replic=0,mh_nblocks=2,mh_jscale=0.8); -estimation(order=1,mode_compute=5,analytic_derivation,kalman_algo=4,datafile=fsdat_simul,nobs=192,mh_replic=0,mh_nblocks=2,mh_jscale=0.8); \ No newline at end of file +estimation(order=1,mode_compute=4,analytic_derivation,kalman_algo=1,datafile=fsdat_simul,nobs=192,mh_replic=0,mh_nblocks=2,mh_jscale=0.8); +estimation(order=1,mode_compute=4,analytic_derivation,kalman_algo=2,datafile=fsdat_simul,nobs=192,mh_replic=0,mh_nblocks=2,mh_jscale=0.8); +//estimation(order=1,mode_compute=5,analytic_derivation,kalman_algo=3,datafile=fsdat_simul,nobs=192,mh_replic=0,mh_nblocks=2,mh_jscale=0.8); +//estimation(order=1,mode_compute=5,analytic_derivation,kalman_algo=4,datafile=fsdat_simul,nobs=192,mh_replic=0,mh_nblocks=2,mh_jscale=0.8); \ No newline at end of file