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
time-shift
adjemian 2008-06-17 21:44:00 +00:00
parent 2a632d2efc
commit 8ba344b786
3 changed files with 26 additions and 24 deletions

View File

@ -116,7 +116,8 @@ if MAX_nirfs_dsgevar
stock_irf_bvardsge = zeros(options_.irf,nvobs,M_.exo_nbr,B); stock_irf_bvardsge = zeros(options_.irf,nvobs,M_.exo_nbr,B);
end end
[mYY,mXY,mYX,mXX,Ydata,Xdata] = ... [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; NumberOfLags = options_.varlag;
NumberOfLagsTimesNvobs = NumberOfLags*nvobs; NumberOfLagsTimesNvobs = NumberOfLags*nvobs;
if options_.noconstant if options_.noconstant

View File

@ -257,11 +257,16 @@ end
%% compute sample moments if needed (bvar-dsge) %% compute sample moments if needed (bvar-dsge)
if options_.bvar_dsge~isempty(strmatch('dsge_prior_weight',M_.param_names)) if options_.bvar_dsge~isempty(strmatch('dsge_prior_weight',M_.param_names))
if options_.noconstant if options_.noconstant
evalin('base',['[mYY,mXY,mYX,mXX,Ydata,Xdata] = ' ... evalin('base',...
'var_sample_moments(options_.first_obs,options_.first_obs+options_.nobs-1,options_.varlag,-1);']) ['[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! else% The steady state is non zero ==> a constant in the VAR is needed!
evalin('base',['[mYY,mXY,mYX,mXX,Ydata,Xdata] = ' ... 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
end end

View File

@ -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,datafile,varobs)
% function [YtY,XtY,YtX,XtX,Y,X] = var_sample_moments(FirstObservation,LastObservation,qlag,var_trend_order) % Computes the sample moments of a VAR model.
% Computes the sample moments of a VAR model.
% %
% The VAR(p) model is defined by: % 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 Y [double] Y a T*m matrix.
% o X [double] X a T*(mp+q) matrix. % o X [double] X a T*(mp+q) matrix.
% %
% SPECIAL REQUIREMENTS % SPECIAL REQUIREMENTS
% None. % None.
% %
% part of DYNARE, copyright Dynare Team (2007) % part of DYNARE, copyright Dynare Team (2007)
% Gnu Public License. % Gnu Public License.
global options_
X = []; X = [];
Y = []; Y = [];
YtY = []; YtY = [];
@ -65,15 +61,15 @@ YtX = [];
XtY = []; XtY = [];
XtX = []; XtX = [];
if exist(options_.datafile) if exist(datafile)
eval(options_.datafile); eval(datafile);
else else
eval(['load ' options_.datafile]); eval(['load ' datafile]);
end end
data = [ ]; data = [ ];
for i=1:size(options_.varobs,1)% m is equal to options_.varobs for i=1:size(varobs,1)% m is equal to options_.varobs
data = [data eval(deblank(options_.varobs(i,:)))]; data = [data eval(deblank(varobs(i,:)))];
end end
if qlag > FirstObservation if qlag > FirstObservation
@ -82,14 +78,14 @@ if qlag > FirstObservation
end end
NumberOfObservations = LastObservation-FirstObservation+1;% This is T. 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. if var_trend_order == -1% No constant no linear trend case.
X = zeros(NumberOfObservations,NumberOfVariables*qlag); X = zeros(NumberOfObservations,NumberOfVariables*qlag);
elseif var_trend_order == 0% Constant and no linear trend case. 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; indx = NumberOfVariables*qlag+1;
elseif var_trend_order == 1;% Constant and linear trend case. 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; indx = NumberOfVariables*qlag+1:NumberOfVariables*qlag+2;
else else
disp('var_sample_moments :: trend must be equal to -1,0 or 1!') disp('var_sample_moments :: trend must be equal to -1,0 or 1!')
@ -98,16 +94,16 @@ end
% I build matrices Y and X % I build matrices Y and X
Y = data(FirstObservation:LastObservation,:); Y = data(FirstObservation:LastObservation,:);
for t=1:NumberOfObservations for t=1:NumberOfObservations
line = t + FirstObservation-1; line = t + FirstObservation-1;
for lag = 1:qlag for lag = 1:qlag
X(t,(lag-1)*NumberOfVariables+1:lag*NumberOfVariables) = data(line-lag,:); X(t,(lag-1)*NumberOfVariables+1:lag*NumberOfVariables) = data(line-lag,:);
end end
if var_trend_order == 0 end
X(t,indx) = 1;
elseif var_trend_order == 1 if (var_trend_order == 1)
X(t,indx) = [ 1 , t ]; X(:,end) = transpose(1:NumberOfObservations)
end
end end
YtY = Y'*Y; YtY = Y'*Y;