Make shock_decomposition.m rely on smoothed deviations from mean

Necessary after adding trend and mean to smoothed variables
time-shift
Johannes Pfeifer 2016-04-01 15:25:17 +02:00
parent d737c7d1d8
commit f85d2ef970
2 changed files with 23 additions and 15 deletions

View File

@ -1,4 +1,4 @@
function oo_=evaluate_smoother(parameters,var_list)
function [oo_, Smoothed_variables_declaration_order_deviation_form]=evaluate_smoother(parameters,var_list)
% Evaluate the smoother at parameters.
%
% INPUTS
@ -11,12 +11,17 @@ function oo_=evaluate_smoother(parameters,var_list)
% o oo [structure] results:
% - SmoothedVariables
% - SmoothedShocks
% - SmoothedVariables
% - SmoothedVariables
% - SmoothedVariables
% - SmoothedVariables
% - SmoothedVariables
% - SmoothedVariables
% - FilteredVariablesShockDecomposition
% - UpdatedVariables
% - FilteredVariables
% - SmoothedMeasurementErrors
% - FilteredVariablesKStepAhead
% - FilteredVariablesKStepAheadVariances
% o Smoothed_variables_declaration_order_deviation_form
% Smoothed variables from the Kalman smoother in
% order of declaration of variables (M_.endo_names)
% in deviations from their respective mean, i.e.
% without trend and constant part (used for shock_decomposition)
%
% SPECIAL REQUIREMENTS
% None
@ -89,4 +94,8 @@ end
[atT,innov,measurement_error,updated_variables,ys,trend_coeff,aK,T,R,P,PK,decomp,Trend] = ...
DsgeSmoother(parameters,dataset_.nobs,transpose(dataset_.data),dataset_info.missing.aindex,dataset_info.missing.state);
[oo_]=write_smoother_results(M_,oo_,options_,bayestopt_,dataset_,dataset_info,atT,innov,measurement_error,updated_variables,ys,trend_coeff,aK,P,PK,decomp,Trend);
[oo_]=write_smoother_results(M_,oo_,options_,bayestopt_,dataset_,dataset_info,atT,innov,measurement_error,updated_variables,ys,trend_coeff,aK,P,PK,decomp,Trend);
if nargout==2
Smoothed_variables_declaration_order_deviation_form=atT(oo_.dr.inv_order_var(bayestopt_.smoother_var_list),:);
end

View File

@ -19,7 +19,7 @@ function oo_ = shock_decomposition(M_,oo_,options_,varlist)
% SPECIAL REQUIREMENTS
% none
% Copyright (C) 2009-2013 Dynare Team
% Copyright (C) 2009-2016 Dynare Team
%
% This file is part of Dynare.
%
@ -62,7 +62,7 @@ if isempty(parameter_set)
end
end
oo = evaluate_smoother(parameter_set,varlist);
[oo,Smoothed_Variables_deviation_from_mean] = evaluate_smoother(parameter_set,varlist);
% reduced form
dr = oo.dr;
@ -77,16 +77,15 @@ A = dr.ghx;
B = dr.ghu;
% initialization
gend = eval(['size(oo.SmoothedShocks.' M_.exo_names(1,:),',1)']);
gend = size(oo.SmoothedShocks.(M_.exo_names(1,:)),1);
epsilon=NaN(nshocks,gend);
for i=1:nshocks
epsilon(i,:) = eval(['oo.SmoothedShocks.' M_.exo_names(i,:)]);
epsilon(i,:) = oo.SmoothedShocks.(M_.exo_names(i,:));
end
z = zeros(endo_nbr,nshocks+2,gend);
for i=1:endo_nbr
z(i,end,:) = eval(['oo.SmoothedVariables.' M_.endo_names(i,:)]);
end
z(:,end,:) = Smoothed_Variables_deviation_from_mean;
maximum_lag = M_.maximum_lag;
lead_lag_incidence = M_.lead_lag_incidence;