diff --git a/matlab/disp_th_moments.m b/matlab/disp_th_moments.m index d1a4876a296cd575dbf51016093277acdcb45767..0c1a245a6db5874bd0d500ef703aa1fa72a2993f 100644 --- a/matlab/disp_th_moments.m +++ b/matlab/disp_th_moments.m @@ -50,43 +50,54 @@ z = [ m sd s2 ]; oo_.mean = m; oo_.var = oo_.gamma_y{1}; -if ~options_.noprint %options_.nomoments == 0 - if options_.order == 2 - title='APROXIMATED THEORETICAL MOMENTS'; - else - title='THEORETICAL MOMENTS'; - end - if options_.hp_filter - title = [title ' (HP filter, lambda = ' num2str(options_.hp_filter) ')']; - end - headers=char('VARIABLE','MEAN','STD. DEV.','VARIANCE'); - labels = deblank(M_.endo_names(ivar,:)); - lh = size(labels,2)+2; - dyntable(title,headers,labels,z,lh,11,4); - if M_.exo_nbr > 1 && size(stationary_vars, 1) > 0 - skipline() +if M_.exo_nbr > 1 && size(stationary_vars, 1) > 0 + oo_.variance_decomposition=100*oo_.gamma_y{options_.ar+2}; + if ~options_.noprint %options_.nomoments == 0 if options_.order == 2 - title='APPROXIMATED VARIANCE DECOMPOSITION (in percent)'; + title='APROXIMATED THEORETICAL MOMENTS'; else - title='VARIANCE DECOMPOSITION (in percent)'; + title='THEORETICAL MOMENTS'; end if options_.hp_filter - title = [title ' (HP filter, lambda = ' ... - num2str(options_.hp_filter) ')']; + title = [title ' (HP filter, lambda = ' num2str(options_.hp_filter) ')']; end - headers = M_.exo_names; - headers(M_.exo_names_orig_ord,:) = headers; - headers = char(' ',headers); - lh = size(deblank(M_.endo_names(ivar(stationary_vars),:)),2)+2; - dyntable(title,headers,deblank(M_.endo_names(ivar(stationary_vars), ... - :)),100*oo_.gamma_y{options_.ar+2}(stationary_vars,:),lh,8,2); + headers=char('VARIABLE','MEAN','STD. DEV.','VARIANCE'); + labels = deblank(M_.endo_names(ivar,:)); + lh = size(labels,2)+2; + dyntable(title,headers,labels,z,lh,11,4); + + skipline() + if options_.order == 2 + title='APPROXIMATED VARIANCE DECOMPOSITION (in percent)'; + else + title='VARIANCE DECOMPOSITION (in percent)'; + end + if options_.hp_filter + title = [title ' (HP filter, lambda = ' ... + num2str(options_.hp_filter) ')']; + end + headers = M_.exo_names; + headers(M_.exo_names_orig_ord,:) = headers; + headers = char(' ',headers); + lh = size(deblank(M_.endo_names(ivar(stationary_vars),:)),2)+2; + dyntable(title,headers,deblank(M_.endo_names(ivar(stationary_vars), ... + :)),100*oo_.gamma_y{options_.ar+2}(stationary_vars,:),lh,8,2); end conditional_variance_steps = options_.conditional_variance_decomposition; if length(conditional_variance_steps) - oo_ = display_conditional_variance_decomposition(conditional_variance_steps,... - ivar,dr,M_, ... - options_,oo_); + StateSpaceModel.number_of_state_equations = M_.endo_nbr; + StateSpaceModel.number_of_state_innovations = M_.exo_nbr; + StateSpaceModel.sigma_e_is_diagonal = M_.sigma_e_is_diagonal; + [StateSpaceModel.transition_matrix,StateSpaceModel.impulse_matrix] = kalman_transition_matrix(dr,(1:M_.endo_nbr)',M_.nstatic+(1:M_.nspred)',M_.exo_nbr); + StateSpaceModel.state_innovations_covariance_matrix = M_.Sigma_e; + StateSpaceModel.order_var = dr.order_var; + oo_.conditional_variance_decomposition = conditional_variance_decomposition(StateSpaceModel,conditional_variance_steps,ivar); + + if options_.noprint == 0 + display_conditional_variance_decomposition(oo_.conditional_variance_decomposition,conditional_variance_steps,... + ivar,M_,options_); + end end end diff --git a/matlab/display_conditional_variance_decomposition.m b/matlab/display_conditional_variance_decomposition.m index 7ce71478c2fceb1a342e3fd41c84c1b860d1fdd6..2e15a1d9e08021fd14759b8586ea5193097c2220 100644 --- a/matlab/display_conditional_variance_decomposition.m +++ b/matlab/display_conditional_variance_decomposition.m @@ -1,22 +1,19 @@ -function oo_ = display_conditional_variance_decomposition(Steps, SubsetOfVariables, dr,M_,options_,oo_) -% This function computes the conditional variance decomposition of a given state space model +function display_conditional_variance_decomposition(conditional_decomposition_array,Steps,SubsetOfVariables,M_,options_) +% This function displays the conditional variance decomposition of a given state space model % for a subset of endogenous variables. % % INPUTS -% StateSpaceModel [structure] Specification of the state space model. +% conditional_decomposition_array [matrix] Output matrix from compute_conditional_variance_decomposition % Steps [integer] 1*h vector of dates. % SubsetOfVariables [integer] 1*q vector of indices. -% +% M_ [structure] Dynare structure containing the +% Model description +% options_ [structure] Dynare structure containing the +% options % OUTPUTS -% PackedConditionalVarianceDecomposition [double] n(n+1)/2*p matrix, where p is the number of state innovations and -% n is equal to length(SubsetOfVariables). +% none % -% SPECIAL REQUIREMENTS -% -% [1] The covariance matrix of the state innovations needs to be diagonal. -% [2] In this version, absence of measurement errors is assumed... - -% Copyright (C) 2010-2013 Dynare Team +% Copyright (C) 2010-2014 Dynare Team % % This file is part of Dynare. % @@ -33,49 +30,28 @@ function oo_ = display_conditional_variance_decomposition(Steps, SubsetOfVariabl % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -endo_nbr = M_.endo_nbr; -exo_nbr = M_.exo_nbr; -StateSpaceModel.number_of_state_equations = M_.endo_nbr; -StateSpaceModel.number_of_state_innovations = exo_nbr; -StateSpaceModel.sigma_e_is_diagonal = M_.sigma_e_is_diagonal; - -iv = (1:endo_nbr)'; -ic = M_.nstatic+(1:M_.nspred)'; - -[StateSpaceModel.transition_matrix,StateSpaceModel.impulse_matrix] = kalman_transition_matrix(dr,iv,ic,exo_nbr); -StateSpaceModel.state_innovations_covariance_matrix = M_.Sigma_e; -StateSpaceModel.order_var = dr.order_var; - -conditional_decomposition_array = conditional_variance_decomposition(StateSpaceModel,Steps,SubsetOfVariables ); - -if options_.noprint == 0 - if options_.order == 2 - skipline() - disp('APPROXIMATED CONDITIONAL VARIANCE DECOMPOSITION (in percent)') - else - skipline() - disp('CONDITIONAL VARIANCE DECOMPOSITION (in percent)') - end +if options_.order == 2 +skipline() +disp('APPROXIMATED CONDITIONAL VARIANCE DECOMPOSITION (in percent)') +else +skipline() +disp('CONDITIONAL VARIANCE DECOMPOSITION (in percent)') end -vardec_i = zeros(length(SubsetOfVariables),exo_nbr); +vardec_i = zeros(length(SubsetOfVariables),M_.exo_nbr); for i=1:length(Steps) disp(['Period ' int2str(Steps(i)) ':']) - - for j=1:exo_nbr + + for j=1:M_.exo_nbr vardec_i(:,j) = 100*conditional_decomposition_array(:, ... i,j); end - if options_.noprint == 0 - headers = M_.exo_names; - headers(M_.exo_names_orig_ord,:) = headers; - headers = char(' ',headers); - lh = size(deblank(M_.endo_names(SubsetOfVariables,:)),2)+2; - dyntable('',headers,... - deblank(M_.endo_names(SubsetOfVariables,:)),... - vardec_i,lh,8,2); - end -end - -oo_.conditional_variance_decomposition = conditional_decomposition_array; + headers = M_.exo_names; + headers(M_.exo_names_orig_ord,:) = headers; + headers = char(' ',headers); + lh = size(deblank(M_.endo_names(SubsetOfVariables,:)),2)+2; + dyntable('',headers,... + deblank(M_.endo_names(SubsetOfVariables,:)),... + vardec_i,lh,8,2); +end \ No newline at end of file