dsge_var: pass data moments as function inputs instead of via base workspace
going via base prevents parallel executionpac-components
parent
1638374b46
commit
5f732803d8
|
@ -1,9 +1,17 @@
|
|||
function [fval,info,exit_flag,grad,hess,SteadyState,trend_coeff,PHI_tilde,SIGMA_u_tilde,iXX,prior] = dsge_var_likelihood(xparam1,DynareDataset,DynareInfo,DynareOptions,Model,EstimatedParameters,BayesInfo,BoundsInfo,DynareResults)
|
||||
% Evaluates the posterior kernel of the bvar-dsge model.
|
||||
function [fval,info,exit_flag,grad,hess,SteadyState,trend_coeff,PHI_tilde,SIGMA_u_tilde,iXX,prior] = dsge_var_likelihood(xparam1,DynareDataset,DataSetInfo,DynareOptions,Model,EstimatedParameters,BayesInfo,BoundsInfo,DynareResults)
|
||||
% Evaluates the posterior kernel of the BVAR-DSGE model.
|
||||
%
|
||||
% INPUTS
|
||||
% o xparam1 [double] Vector of model's parameters.
|
||||
% o gend [integer] Number of observations (without conditionning observations for the lags).
|
||||
% o xparam1 [double] Vector of model's parameters.
|
||||
% o gend [integer] Number of observations (without conditionning observations for the lags).
|
||||
% o DynareDataset [dseries] object storing the dataset
|
||||
% o DataSetInfo [structure] storing informations about the sample.
|
||||
% o DynareOptions [structure] describing the options
|
||||
% o Model [structure] decribing the model
|
||||
% o EstimatedParameters [structure] characterizing parameters to be estimated
|
||||
% o BayesInfo [structure] describing the priors
|
||||
% o BoundsInfo [structure] containing prior bounds
|
||||
% o DynareResults [structure] storing the results
|
||||
%
|
||||
% OUTPUTS
|
||||
% o fval [double] Value of the posterior kernel at xparam1.
|
||||
|
@ -54,8 +62,6 @@ function [fval,info,exit_flag,grad,hess,SteadyState,trend_coeff,PHI_tilde,SIGMA_
|
|||
% You should have received a copy of the GNU General Public License
|
||||
% along with Dynare. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
persistent dsge_prior_weight_idx
|
||||
|
||||
% Initialize some of the output arguments.
|
||||
fval = [];
|
||||
exit_flag = 1;
|
||||
|
@ -77,9 +83,7 @@ if ~isempty(xparam1)
|
|||
end
|
||||
|
||||
% Initialization of of the index for parameter dsge_prior_weight in Model.params.
|
||||
if isempty(dsge_prior_weight_idx)
|
||||
dsge_prior_weight_idx = strmatch('dsge_prior_weight', Model.param_names);
|
||||
end
|
||||
dsge_prior_weight_idx = strmatch('dsge_prior_weight', Model.param_names);
|
||||
|
||||
% Get the number of estimated (dsge) parameters.
|
||||
nx = EstimatedParameters.nvx + EstimatedParameters.np;
|
||||
|
@ -101,10 +105,9 @@ if ~DynareOptions.noconstant
|
|||
end
|
||||
|
||||
% Get empirical second order moments for the observed variables.
|
||||
mYY = evalin('base', 'mYY');
|
||||
mYX = evalin('base', 'mYX');
|
||||
mXY = evalin('base', 'mXY');
|
||||
mXX = evalin('base', 'mXX');
|
||||
mYY= DataSetInfo.mYY;
|
||||
mYX= DataSetInfo.mYX;
|
||||
mXX= DataSetInfo.mXX;
|
||||
|
||||
Model = set_all_parameters(xparam1,EstimatedParameters,Model);
|
||||
|
||||
|
@ -206,10 +209,6 @@ end
|
|||
|
||||
GYY = TheoreticalAutoCovarianceOfTheObservedVariables(:,:,1);
|
||||
|
||||
assignin('base','GYY',GYY);
|
||||
assignin('base','GXX',GXX);
|
||||
assignin('base','GYX',GYX);
|
||||
|
||||
iGXX = inv(GXX);
|
||||
PHI_star = iGXX*transpose(GYX); %formula (22), DS (2004)
|
||||
SIGMA_u_star=GYY - GYX*PHI_star; %formula (23), DS (2004)
|
||||
|
|
|
@ -115,10 +115,10 @@ if options_.dsge_var
|
|||
error('Estimation::DsgeVarLikelihood: I cannot estimate a DSGE-VAR model with missing observations!')
|
||||
end
|
||||
if options_.noconstant
|
||||
var_sample_moments(options_.dsge_varlag, -1, dataset_);
|
||||
dataset_info=var_sample_moments(options_.dsge_varlag, -1, dataset_, dataset_info);
|
||||
else
|
||||
% The steady state is non zero ==> a constant in the VAR is needed!
|
||||
var_sample_moments(options_.dsge_varlag, 0, dataset_);
|
||||
dataset_info=var_sample_moments(options_.dsge_varlag, 0, dataset_, dataset_info);
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
function var_sample_moments(nlag, var_trend_order, dataset_)%datafile,varobs,xls_sheet,xls_range)
|
||||
function dataset_info=var_sample_moments(nlag, var_trend_order, dataset_, dataset_info)%datafile,varobs,xls_sheet,xls_range)
|
||||
% Computes the sample moments of a VAR model.
|
||||
%
|
||||
% The VAR(p) model is defined by:
|
||||
|
@ -37,22 +37,21 @@ function var_sample_moments(nlag, var_trend_order, dataset_)%datafile,varobs,xls
|
|||
% = 0 constant and no linear trend,
|
||||
% = 1 constant and linear trend.
|
||||
% o dataset_ [dseries] The sample.
|
||||
% o dataset_info [structure] data set information
|
||||
%
|
||||
% OUTPUTS
|
||||
% o YtY [double] Y'*Y an m*m matrix.
|
||||
% o XtY [double] X'*Y an (mp+q)*m matrix.
|
||||
% o YtX [double] Y'*X an m*(mp+q) matrix.
|
||||
% o XtX [double] X'*X an (mp+q)*(mp+q) matrix.
|
||||
% o Y [double] Y a T*m matrix.
|
||||
% o X [double] X a T*(mp+q) matrix.
|
||||
% dataset_info [structure] containing the following new fields
|
||||
% o mYY [double] Y'*Y an m*m matrix.
|
||||
% o mXY [double] X'*Y an (mp+q)*m matrix.
|
||||
% o mYX [double] Y'*X an m*(mp+q) matrix.
|
||||
% o mXX [double] X'*X an (mp+q)*(mp+q) matrix.
|
||||
% o Ydata [double] Y a T*m matrix.
|
||||
% o Xdata [double] X a T*(mp+q) matrix.
|
||||
%
|
||||
% SPECIAL REQUIREMENTS
|
||||
% None.
|
||||
%
|
||||
% REMARKS
|
||||
% Outputs are saved in the base workspace (not returned by the function).
|
||||
|
||||
% Copyright (C) 2007-2014 Dynare Team
|
||||
% Copyright (C) 2007-2021 Dynare Team
|
||||
%
|
||||
% This file is part of Dynare.
|
||||
%
|
||||
|
@ -102,12 +101,17 @@ for t=1:NumberOfObservations
|
|||
end
|
||||
|
||||
if (var_trend_order == 1)
|
||||
X(:,end) = transpose(1:NumberOfObservations)
|
||||
X(:,end) = transpose(1:NumberOfObservations);
|
||||
end
|
||||
|
||||
assignin('base', 'mYY', Y'*Y);
|
||||
assignin('base', 'mYX', Y'*X);
|
||||
assignin('base', 'mXY', X'*Y);
|
||||
assignin('base', 'mXX', X'*X);
|
||||
assignin('base', 'Ydata', Y);
|
||||
assignin('base', 'Xdata', X);
|
||||
dataset_info.mYY=Y'*Y;
|
||||
dataset_info.mYX=Y'*X;
|
||||
dataset_info.mXY=X'*Y;
|
||||
dataset_info.mXX=X'*X;
|
||||
dataset_info.Ydata=Y;
|
||||
dataset_info.Xdata=X;
|
||||
% assignin('base', 'mYY', Y'*Y);
|
||||
% assignin('base', 'mYX', Y'*X);
|
||||
% assignin('base', 'mXY', X'*Y);
|
||||
% assignin('base', 'mXX', X'*X);
|
||||
% assignin('base', 'Ydata', Y);
|
||||
% assignin('base', 'Xdata', X);
|
Loading…
Reference in New Issue