From 4cf1a358eebc059fb2d0f0a3d5436739cfa50254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Ry=C3=BBk=29?= Date: Wed, 1 Sep 2021 11:27:42 +0200 Subject: [PATCH] Fix growth neutrality correction in PAC/MCE equation. --- matlab/+pac/+mce/parameters.m | 20 +++++++++++++++----- preprocessor | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/matlab/+pac/+mce/parameters.m b/matlab/+pac/+mce/parameters.m index 9817aca66..9c51cbfc7 100644 --- a/matlab/+pac/+mce/parameters.m +++ b/matlab/+pac/+mce/parameters.m @@ -11,7 +11,7 @@ function parameters(pacname) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2019 Dynare Team +% Copyright © 2019-2021 Dynare Team % % This file is part of Dynare. % @@ -69,8 +69,18 @@ for e=1:number_of_pac_eq % Get PAC equation pac_equation = equations.(eqtag); % Get Error correction and autoregressive parameters in PAC equation - a = NaN(1+pac_equation.max_lag, 1); - a(1) = M_.params(pac_equation.ec.params); - a(1+(1:pac_equation.max_lag)) = M_.params(pac_equation.ar.params); - M_.params(pac_equation.mce.alpha) = a2alpha(a); + params = NaN(2+pac_equation.max_lag, 1); + params(1) = M_.params(pac_equation.ec.params); + params(1+(1:pac_equation.max_lag)) = M_.params(pac_equation.ar.params); + params(end) = M_.params(pacmodel.discount_index); + [G, alpha, beta] = buildGmatrixWithAlphaAndBeta(params); + M_.params(pac_equation.mce.alpha) = alpha; + if isfield(pacmodel, 'growth_neutrality_param_index') + A = [alpha; 1]; + A_1 = polyval(A, 1.0); + A_b = polyval(A, beta); + m = length(alpha); + d = A_1*A_b*(iota(m, m)'*inv((eye(m)-G)*(eye(m)-G))*iota(m, m)); + M_.params(pacmodel.growth_neutrality_param_index) = 1-sum(params(2:end-1))-d; + end end \ No newline at end of file diff --git a/preprocessor b/preprocessor index 6863494db..784dd4122 160000 --- a/preprocessor +++ b/preprocessor @@ -1 +1 @@ -Subproject commit 6863494db2fe509ccb5a0f665167eca0054cc298 +Subproject commit 784dd4122afe0f68ac2d0f903c0625b9c7e50b4f