diff --git a/matlab/gsa/mc_moments.m b/matlab/gsa/mc_moments.m index 5c2cd034a..b2ea93538 100644 --- a/matlab/gsa/mc_moments.m +++ b/matlab/gsa/mc_moments.m @@ -20,7 +20,7 @@ function [vdec, cc, ac] = mc_moments(mm, ss, dr) global options_ M_ estim_params_ oo_ [nr1, nc1, nsam] = size(mm); - nobs=size(options_.varobs,1); + nobs=size(options_.varobs,2); disp('Computing theoretical moments ...') h = dyn_waitbar(0,'Theoretical moments ...'); vdec = zeros(nobs,M_.exo_nbr,nsam); @@ -37,7 +37,7 @@ global options_ M_ estim_params_ oo_ cc(:,:,j)=triu(corr); dum=[]; for i=1:options_.ar - dum=[dum, autocorr{i}]; + dum=[dum, autocorr{i}]; end ac(:,:,j)=dum; dyn_waitbar(j/nsam,h) diff --git a/matlab/gsa/th_moments.m b/matlab/gsa/th_moments.m index 9dbe7f8f6..519d53bed 100644 --- a/matlab/gsa/th_moments.m +++ b/matlab/gsa/th_moments.m @@ -1,6 +1,7 @@ function [vdec, corr, autocorr, z, zz] = th_moments(dr,var_list) +% [vdec, corr, autocorr, z, zz] = th_moments(dr,var_list) -% Copyright (C) 2012 Dynare Team +% Copyright (C) 2012-2015 Dynare Team % % This file is part of Dynare. % @@ -17,38 +18,38 @@ function [vdec, corr, autocorr, z, zz] = th_moments(dr,var_list) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . - global M_ oo_ options_ - - nvar = size(var_list,1); - if nvar == 0 +global M_ oo_ options_ + +nvar = size(var_list,2); +if nvar == 0 nvar = length(dr.order_var); ivar = [1:nvar]'; - else +else ivar=zeros(nvar,1); for i=1:nvar - i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact'); - if isempty(i_tmp) - error (['One of the variable specified does not exist']) ; - else - ivar(i) = i_tmp; - end + i_tmp = strmatch(var_list(:,i),M_.endo_names,'exact'); + if isempty(i_tmp) + error(['One of the variables specified does not exist']) ; + else + ivar(i) = i_tmp; + end end - end - - [gamma_y,stationary_vars] = th_autocovariances(dr,ivar,M_, options_); - m = dr.ys(ivar(stationary_vars)); +end + +[gamma_y,stationary_vars] = th_autocovariances(dr,ivar,M_, options_); +m = dr.ys(ivar(stationary_vars)); + - % i1 = find(abs(diag(gamma_y{1})) > 1e-12); - i1 = [1:length(ivar)]; - s2 = diag(gamma_y{1}); - sd = sqrt(s2); +i1 = [1:length(ivar)]; +s2 = diag(gamma_y{1}); +sd = sqrt(s2); + + +z = [ m sd s2 ]; +mean = m; +var = gamma_y{1}; - - z = [ m sd s2 ]; - mean = m; - var = gamma_y{1}; - %'THEORETICAL MOMENTS'; %'MEAN','STD. DEV.','VARIANCE'); @@ -56,28 +57,27 @@ z; %'VARIANCE DECOMPOSITION (in percent)'; if M_.exo_nbr>1, -vdec = 100*gamma_y{options_.ar+2}(i1,:); + vdec = 100*gamma_y{options_.ar+2}(i1,:); else -vdec = 100*ones(size(gamma_y{1}(i1,1))); -end + vdec = 100*ones(size(gamma_y{1}(i1,1))); +end %'MATRIX OF CORRELATIONS'; if options_.opt_gsa.useautocorr, corr = gamma_y{1}(i1,i1)./(sd(i1)*sd(i1)'); corr = corr-diag(diag(corr))+diag(diag(gamma_y{1}(i1,i1))); else - corr = gamma_y{1}(i1,i1); + corr = gamma_y{1}(i1,i1); end - if options_.ar > 0 -%'COEFFICIENTS OF AUTOCORRELATION'; +if options_.ar > 0 + %'COEFFICIENTS OF AUTOCORRELATION'; for i=1:options_.ar - if options_.opt_gsa.useautocorr, - autocorr{i} = gamma_y{i+1}(i1,i1); - else - autocorr{i} = gamma_y{i+1}(i1,i1).*(sd(i1)*sd(i1)'); - end - zz(:,i) = diag(gamma_y{i+1}(i1,i1)); + if options_.opt_gsa.useautocorr, + autocorr{i} = gamma_y{i+1}(i1,i1); + else + autocorr{i} = gamma_y{i+1}(i1,i1).*(sd(i1)*sd(i1)'); + end + zz(:,i) = diag(gamma_y{i+1}(i1,i1)); end - end - +end + - \ No newline at end of file