From 8ba344b786f7ff4eab479b88f29369ed8295eb7e Mon Sep 17 00:00:00 2001 From: adjemian Date: Tue, 17 Jun 2008 21:44:00 +0000 Subject: [PATCH] Cosmetic change in var_sample_moments + Removed one global. git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@1880 ac1d8469-bf42-47a9-8791-bf33cf982152 --- matlab/PosteriorIRF.m | 3 ++- matlab/dynare_estimation.m | 11 ++++++++--- matlab/var_sample_moments.m | 36 ++++++++++++++++-------------------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/matlab/PosteriorIRF.m b/matlab/PosteriorIRF.m index 1fc2380bc..12c074a70 100644 --- a/matlab/PosteriorIRF.m +++ b/matlab/PosteriorIRF.m @@ -116,7 +116,8 @@ if MAX_nirfs_dsgevar stock_irf_bvardsge = zeros(options_.irf,nvobs,M_.exo_nbr,B); end [mYY,mXY,mYX,mXX,Ydata,Xdata] = ... - var_sample_moments(options_.first_obs,options_.first_obs+options_.nobs-1,options_.varlag,-1); + var_sample_moments(options_.first_obs,options_.first_obs+options_.nobs-1,... + options_.varlag,-1,options_.datafile,options_.varobs); NumberOfLags = options_.varlag; NumberOfLagsTimesNvobs = NumberOfLags*nvobs; if options_.noconstant diff --git a/matlab/dynare_estimation.m b/matlab/dynare_estimation.m index 9fc4d5b3d..47a35e371 100644 --- a/matlab/dynare_estimation.m +++ b/matlab/dynare_estimation.m @@ -257,11 +257,16 @@ end %% compute sample moments if needed (bvar-dsge) if options_.bvar_dsge~isempty(strmatch('dsge_prior_weight',M_.param_names)) if options_.noconstant - evalin('base',['[mYY,mXY,mYX,mXX,Ydata,Xdata] = ' ... - 'var_sample_moments(options_.first_obs,options_.first_obs+options_.nobs-1,options_.varlag,-1);']) + evalin('base',... + ['[mYY,mXY,mYX,mXX,Ydata,Xdata] = ' ... + 'var_sample_moments(options_.first_obs,' ... + 'options_.first_obs+options_.nobs-1,options_.varlag,-1,' ... + 'options_.datafile, options_.varobs);']) else% The steady state is non zero ==> a constant in the VAR is needed! evalin('base',['[mYY,mXY,mYX,mXX,Ydata,Xdata] = ' ... - 'var_sample_moments(options_.first_obs,options_.first_obs+options_.nobs-1,options_.varlag,0);']) + 'var_sample_moments(options_.first_obs,' ... + 'options_.first_obs+options_.nobs-1,options_.varlag,0,' ... + 'options_.datafile, options_.varobs);']) end end diff --git a/matlab/var_sample_moments.m b/matlab/var_sample_moments.m index e91d9aced..e5abe6ab6 100644 --- a/matlab/var_sample_moments.m +++ b/matlab/var_sample_moments.m @@ -1,7 +1,6 @@ -function [YtY,XtY,YtX,XtX,Y,X] = var_sample_moments(FirstObservation,LastObservation,qlag,var_trend_order) - -% function [YtY,XtY,YtX,XtX,Y,X] = var_sample_moments(FirstObservation,LastObservation,qlag,var_trend_order) -% Computes the sample moments of a VAR model. +function [YtY,XtY,YtX,XtX,Y,X] = ... + var_sample_moments(FirstObservation,LastObservation,qlag,var_trend_order,datafile,varobs) +% Computes the sample moments of a VAR model. % % The VAR(p) model is defined by: % @@ -49,15 +48,12 @@ function [YtY,XtY,YtX,XtX,Y,X] = var_sample_moments(FirstObservation,LastObserva % o Y [double] Y a T*m matrix. % o X [double] X a T*(mp+q) matrix. % - % SPECIAL REQUIREMENTS % None. % % part of DYNARE, copyright Dynare Team (2007) % Gnu Public License. -global options_ - X = []; Y = []; YtY = []; @@ -65,15 +61,15 @@ YtX = []; XtY = []; XtX = []; -if exist(options_.datafile) - eval(options_.datafile); +if exist(datafile) + eval(datafile); else - eval(['load ' options_.datafile]); + eval(['load ' datafile]); end data = [ ]; -for i=1:size(options_.varobs,1)% m is equal to options_.varobs - data = [data eval(deblank(options_.varobs(i,:)))]; +for i=1:size(varobs,1)% m is equal to options_.varobs + data = [data eval(deblank(varobs(i,:)))]; end if qlag > FirstObservation @@ -82,14 +78,14 @@ if qlag > FirstObservation end NumberOfObservations = LastObservation-FirstObservation+1;% This is T. -NumberOfVariables = size(options_.varobs,1);% This is m. +NumberOfVariables = size(varobs,1);% This is m. if var_trend_order == -1% No constant no linear trend case. X = zeros(NumberOfObservations,NumberOfVariables*qlag); elseif var_trend_order == 0% Constant and no linear trend case. - X = zeros(NumberOfObservations,NumberOfVariables*qlag+1); + X = ones(NumberOfObservations,NumberOfVariables*qlag+1); indx = NumberOfVariables*qlag+1; elseif var_trend_order == 1;% Constant and linear trend case. - X = zeros(NumberOfObservations,NumberOfVariables*qlag+2); + X = ones(NumberOfObservations,NumberOfVariables*qlag+2); indx = NumberOfVariables*qlag+1:NumberOfVariables*qlag+2; else disp('var_sample_moments :: trend must be equal to -1,0 or 1!') @@ -98,16 +94,16 @@ end % I build matrices Y and X Y = data(FirstObservation:LastObservation,:); + for t=1:NumberOfObservations line = t + FirstObservation-1; for lag = 1:qlag X(t,(lag-1)*NumberOfVariables+1:lag*NumberOfVariables) = data(line-lag,:); end - if var_trend_order == 0 - X(t,indx) = 1; - elseif var_trend_order == 1 - X(t,indx) = [ 1 , t ]; - end +end + +if (var_trend_order == 1) + X(:,end) = transpose(1:NumberOfObservations) end YtY = Y'*Y;