1) if not using relaxation, initial guess regime in verify step(occbin simul) is set equal to the guess regime used to updated states and shocks
2) fixed treatment of periodic solution in algo=3, now harmonized to algo=1trust-region-mex
parent
d3e5e7b8ef
commit
85e35b1654
|
@ -194,7 +194,9 @@ if any(myregime) || ~isequal(regimes_(1),regimes0(1))
|
||||||
else
|
else
|
||||||
opts_simul.endo_init = alphahat(oo_.dr.inv_order_var,1);
|
opts_simul.endo_init = alphahat(oo_.dr.inv_order_var,1);
|
||||||
end
|
end
|
||||||
% opts_simul.init_regime=regimes_(1);
|
if not(options_.occbin.filter.use_relaxation)
|
||||||
|
opts_simul.init_regime=regimes_(1);
|
||||||
|
end
|
||||||
if M_.occbin.constraint_nbr==1
|
if M_.occbin.constraint_nbr==1
|
||||||
myregimestart = [regimes_.regimestart];
|
myregimestart = [regimes_.regimestart];
|
||||||
else
|
else
|
||||||
|
|
|
@ -128,7 +128,7 @@ if M_.occbin.constraint_nbr==1
|
||||||
else
|
else
|
||||||
myregime = [regimes_.regime1 regimes_.regime2];
|
myregime = [regimes_.regime1 regimes_.regime2];
|
||||||
end
|
end
|
||||||
regime_hist = {regimes0};
|
regime_hist = {regimes0(1)};
|
||||||
if M_.occbin.constraint_nbr==1
|
if M_.occbin.constraint_nbr==1
|
||||||
regime_end = regimes0(1).regimestart(end);
|
regime_end = regimes0(1).regimestart(end);
|
||||||
end
|
end
|
||||||
|
@ -180,7 +180,7 @@ if any(myregime) || ~isequal(regimes_(1),regimes0(1))
|
||||||
CC(:,2)=ss.C(my_order_var,1);
|
CC(:,2)=ss.C(my_order_var,1);
|
||||||
end
|
end
|
||||||
newguess=0;
|
newguess=0;
|
||||||
regime_hist(niter) = {regimes_};
|
regime_hist(niter) = {regimes_(1)};
|
||||||
if M_.occbin.constraint_nbr==1
|
if M_.occbin.constraint_nbr==1
|
||||||
regime_end(niter) = regimes_(1).regimestart(end);
|
regime_end(niter) = regimes_(1).regimestart(end);
|
||||||
end
|
end
|
||||||
|
@ -199,7 +199,9 @@ if any(myregime) || ~isequal(regimes_(1),regimes0(1))
|
||||||
opts_simul.endo_init = alphahat(oo_.dr.inv_order_var,1);
|
opts_simul.endo_init = alphahat(oo_.dr.inv_order_var,1);
|
||||||
end
|
end
|
||||||
% end
|
% end
|
||||||
% opts_simul.init_regime=regimes_(1); %% why don't we use this ???
|
if not(options_.occbin.filter.use_relaxation)
|
||||||
|
opts_simul.init_regime=regimes_(1);
|
||||||
|
end
|
||||||
if M_.occbin.constraint_nbr==1
|
if M_.occbin.constraint_nbr==1
|
||||||
myregimestart = [regimes_.regimestart];
|
myregimestart = [regimes_.regimestart];
|
||||||
else
|
else
|
||||||
|
@ -212,7 +214,7 @@ if any(myregime) || ~isequal(regimes_(1),regimes0(1))
|
||||||
regimes_ = out.regime_history;
|
regimes_ = out.regime_history;
|
||||||
if niter>1
|
if niter>1
|
||||||
for kiter=1:niter-1
|
for kiter=1:niter-1
|
||||||
is_periodic(kiter) = isequal(regime_hist{kiter}, regimes_);
|
is_periodic(kiter) = isequal(regime_hist{kiter}, regimes_(1));
|
||||||
end
|
end
|
||||||
is_periodic = any(is_periodic);
|
is_periodic = any(is_periodic);
|
||||||
if is_periodic
|
if is_periodic
|
||||||
|
@ -288,7 +290,13 @@ if error_flag==0 && niter>options_.occbin.likelihood.max_number_of_iterations &&
|
||||||
CC(:,2) = CCx(:,end);
|
CC(:,2) = CCx(:,end);
|
||||||
[a, a1, P, P1, v, Fi, Ki, alphahat, etahat] = occbin_kalman_update(a,a1,P,P1,data_index,Z,v,Y,H,QQQ,TT,RR,CC,Ki,Fi,mm,kalman_tol);
|
[a, a1, P, P1, v, Fi, Ki, alphahat, etahat] = occbin_kalman_update(a,a1,P,P1,data_index,Z,v,Y,H,QQQ,TT,RR,CC,Ki,Fi,mm,kalman_tol);
|
||||||
opts_simul.SHOCKS(1,:) = etahat(:,2)';
|
opts_simul.SHOCKS(1,:) = etahat(:,2)';
|
||||||
|
if occbin_options.opts_algo.restrict_state_space
|
||||||
|
tmp=zeros(M_.endo_nbr,1);
|
||||||
|
tmp(oo_.dr.restrict_var_list,1)=alphahat(:,1);
|
||||||
|
opts_simul.endo_init = tmp(oo_.dr.inv_order_var,1);
|
||||||
|
else
|
||||||
opts_simul.endo_init = alphahat(oo_.dr.inv_order_var,1);
|
opts_simul.endo_init = alphahat(oo_.dr.inv_order_var,1);
|
||||||
|
end
|
||||||
if M_.occbin.constraint_nbr==1
|
if M_.occbin.constraint_nbr==1
|
||||||
myregimestart = [regimes_.regimestart];
|
myregimestart = [regimes_.regimestart];
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue