From 944bf2b68eb616a2f1af32e46103449c1fd3859d Mon Sep 17 00:00:00 2001 From: Johannes Pfeifer Date: Wed, 21 Jul 2021 13:42:38 +0200 Subject: [PATCH] occbin: work with non-demeaned data and in constraints --- matlab/+occbin/solve_one_constraint.m | 2 +- matlab/+occbin/solve_two_constraints.m | 4 ++-- tests/occbin/filter/NKM.mod | 2 +- tests/occbin/filter/NKM_0_std_shocks.mod | 2 +- tests/occbin/model_borrcon/borrcon.mod | 2 +- tests/occbin/model_borrcon/borrcon_0_std_shocks.mod | 2 +- tests/occbin/model_irrcap_twoconstraints/dynrbc.mod | 4 ++-- .../model_irrcap_twoconstraints/dynrbc_0_std_shocks.mod | 4 ++-- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/matlab/+occbin/solve_one_constraint.m b/matlab/+occbin/solve_one_constraint.m index 57e799dfd..34b2e25ba 100644 --- a/matlab/+occbin/solve_one_constraint.m +++ b/matlab/+occbin/solve_one_constraint.m @@ -167,7 +167,7 @@ for shock_period = 1:n_shocks_periods regime_start(end)-1,binding_indicator,... data.exo_pos,data.shocks_sequence(shock_period,:),endo_init,update_flag); - [binding, relax, err]=feval([M_.fname,'.occbin_difference'],zdatalinear_,M_.params,dr_base.ys); + [binding, relax, err]=feval([M_.fname,'.occbin_difference'],zdatalinear_+repmat(dr_base.ys',size(zdatalinear_,1),1),M_.params,dr_base.ys); % check if changes to the hypothesis of the duration for each % regime diff --git a/matlab/+occbin/solve_two_constraints.m b/matlab/+occbin/solve_two_constraints.m index ec81178a9..5365347bf 100644 --- a/matlab/+occbin/solve_two_constraints.m +++ b/matlab/+occbin/solve_two_constraints.m @@ -145,7 +145,7 @@ for shock_period = 1:n_shocks_periods while (regime_change_this_iteration && iter inomlb; +name 'zlb'; bind inom <= inomlb; relax inom > inomlb; end; // ---------------- Steady state -----------------------------------------// diff --git a/tests/occbin/filter/NKM_0_std_shocks.mod b/tests/occbin/filter/NKM_0_std_shocks.mod index 4a592c84d..5dbf0e1f2 100644 --- a/tests/occbin/filter/NKM_0_std_shocks.mod +++ b/tests/occbin/filter/NKM_0_std_shocks.mod @@ -209,7 +209,7 @@ model; end; occbin_constraints; -name 'zlb'; bind inom+inombar <= inomlb; relax inom+inombar > inomlb; +name 'zlb'; bind inom <= inomlb; relax inom > inomlb; end; // ---------------- Steady state -----------------------------------------// diff --git a/tests/occbin/model_borrcon/borrcon.mod b/tests/occbin/model_borrcon/borrcon.mod index 78661e16f..4c0fb004b 100644 --- a/tests/occbin/model_borrcon/borrcon.mod +++ b/tests/occbin/model_borrcon/borrcon.mod @@ -29,7 +29,7 @@ y_hat = log(y) - log(steady_state(y)); end; occbin_constraints; - name 'borrcon'; bind lb<-STEADY_STATE(lb); relax b>M*y; error_bind abs(lb+STEADY_STATE(lb)); error_relax abs(b-M*y); + name 'borrcon'; bind lb<0; relax b>M*y; error_bind abs(lb); error_relax abs(b-M*y); %name 'borrcon'; bind lb<-STEADY_STATE(lb); relax b>M*y; end; diff --git a/tests/occbin/model_borrcon/borrcon_0_std_shocks.mod b/tests/occbin/model_borrcon/borrcon_0_std_shocks.mod index b79a18d6b..adb7bf4d3 100644 --- a/tests/occbin/model_borrcon/borrcon_0_std_shocks.mod +++ b/tests/occbin/model_borrcon/borrcon_0_std_shocks.mod @@ -30,7 +30,7 @@ y_hat = log(y) - log(steady_state(y)); end; occbin_constraints; -name 'borrcon'; bind lb<-STEADY_STATE(lb); relax b>M*y; error_bind abs(lb+STEADY_STATE(lb)); error_relax abs(b-M*y); +name 'borrcon'; bind lb<0; relax b>M*y; error_bind abs(lb); error_relax abs(b-M*y); end; steady_state_model; diff --git a/tests/occbin/model_irrcap_twoconstraints/dynrbc.mod b/tests/occbin/model_irrcap_twoconstraints/dynrbc.mod index 1d2397ab5..35a936cff 100644 --- a/tests/occbin/model_irrcap_twoconstraints/dynrbc.mod +++ b/tests/occbin/model_irrcap_twoconstraints/dynrbc.mod @@ -53,8 +53,8 @@ a = RHOA*a(-1)+erra; end; occbin_constraints; -name 'IRR'; bind i-0.000001; error_bind abs(i-0.000001); error_relax abs(i-0.000001); +name 'IRR'; bind i-steady_state(i)-0.000001; error_bind abs(i-steady_state(i)-0.000001); error_relax abs(i-steady_state(i)-0.000001); end; @#include "dynrbc_common.inc"