method_of_moments: refactor data moments computation
Also rename function to not confuse this with the variable stored in oo_.mom.datamoments.kalman-mex
parent
c0cae0ebaa
commit
9914d764c2
|
@ -1,5 +1,5 @@
|
|||
function [dataMoments, m_data] = data_moments(data, oo_, matched_moments_, options_mom_)
|
||||
% [dataMoments, m_data] = data_moments(data, oo_, matched_moments_, options_mom_)
|
||||
function [dataMoments, m_data] = get_data_moments(data, oo_, matched_moments_, options_mom_)
|
||||
% [dataMoments, m_data] = get_data_moments(data, oo_, matched_moments_, options_mom_)
|
||||
% This function computes the user-selected empirical moments from data
|
||||
% =========================================================================
|
||||
% INPUTS
|
||||
|
@ -13,10 +13,10 @@ function [dataMoments, m_data] = data_moments(data, oo_, matched_moments_, optio
|
|||
% o m_data [T x numMom] selected empirical moments at each point in time
|
||||
% -------------------------------------------------------------------------
|
||||
% This function is called by
|
||||
% o mom.run.m
|
||||
% o mom.objective_function.m
|
||||
% o mom.run
|
||||
% o mom.objective_function
|
||||
% =========================================================================
|
||||
% Copyright © 2020-2021 Dynare Team
|
||||
% Copyright © 2020-2023 Dynare Team
|
||||
%
|
||||
% This file is part of Dynare.
|
||||
%
|
||||
|
@ -66,7 +66,4 @@ for jm = 1:options_mom_.mom.mom_nbr
|
|||
end
|
||||
m_data_tmp(isnan(m_data_tmp)) = dataMoments(jm,1);
|
||||
m_data(:,jm) = m_data_tmp;
|
||||
end
|
||||
|
||||
|
||||
end %function end
|
||||
end
|
|
@ -247,7 +247,7 @@ if strcmp(options_mom_.mom.mom_method,'SMM')
|
|||
if options_mom_.prefilter
|
||||
y_sim = bsxfun(@minus, y_sim, mean(y_sim,1));
|
||||
end
|
||||
oo_.mom.model_moments = mom.data_moments(y_sim, oo_, M_.matched_moments, options_mom_);
|
||||
oo_.mom.model_moments = mom.get_data_moments(y_sim, oo_, M_.matched_moments, options_mom_);
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -414,33 +414,33 @@ end
|
|||
|
||||
|
||||
% -------------------------------------------------------------------------
|
||||
% Step 4: Checks and transformations for data
|
||||
% datafile: checks and transformations
|
||||
% -------------------------------------------------------------------------
|
||||
|
||||
% Check if datafile has same name as mod file
|
||||
[~,name,~] = fileparts(options_mom_.datafile);
|
||||
if strcmp(name,M_.fname)
|
||||
error('method_of_moments: Data-file and mod-file are not allowed to have the same name. Please change the name of the data file.')
|
||||
end
|
||||
|
||||
% Build dataset
|
||||
dataset_ = makedataset(options_mom_);
|
||||
|
||||
% set options for old interface from the ones for new interface
|
||||
if ~isempty(dataset_)
|
||||
options_mom_.nobs = dataset_.nobs;
|
||||
if strcmp(options_mom_.mom.mom_method,'GMM') || strcmp(options_mom_.mom.mom_method,'SMM')
|
||||
% Check if datafile has same name as mod file
|
||||
[~,name,~] = fileparts(options_mom_.datafile);
|
||||
if strcmp(name,M_.fname)
|
||||
error('method_of_moments: ''datafile'' and mod file are not allowed to have the same name; change the name of the ''datafile''!')
|
||||
end
|
||||
dataset_ = makedataset(options_mom_);
|
||||
% set options for old interface from the ones for new interface
|
||||
if ~isempty(dataset_)
|
||||
options_mom_.nobs = dataset_.nobs;
|
||||
end
|
||||
% Check length of data for estimation of second moments
|
||||
if options_mom_.ar > options_mom_.nobs+1
|
||||
error('method_of_moments: Dataset is too short to compute higher than first moments!');
|
||||
end
|
||||
% Provide info on data moments handling
|
||||
fprintf('Computing data moments. Note that NaN values in the moments (due to leads and lags or missing data) are replaced by the mean of the corresponding moment.\n');
|
||||
% Get data moments for the method of moments
|
||||
[oo_.mom.data_moments, oo_.mom.m_data] = mom.get_data_moments(dataset_.data, oo_, M_.matched_moments, options_mom_);
|
||||
if ~isreal(dataset_.data)
|
||||
error('method_of_moments: The data moments contain complex values!')
|
||||
end
|
||||
end
|
||||
|
||||
% Check length of data for estimation of second moments
|
||||
if options_mom_.ar > options_mom_.nobs+1
|
||||
error('method_of_moments: Data set is too short to compute second moments');
|
||||
end
|
||||
|
||||
% Provide info on data moments handling
|
||||
fprintf('Computing data moments. Note that NaN values in the moments (due to leads and lags or missing data) are replaced by the mean of the corresponding moment\n');
|
||||
|
||||
% Get data moments for the method of moments
|
||||
[oo_.mom.data_moments, oo_.mom.m_data] = mom.data_moments(dataset_.data, oo_, M_.matched_moments, options_mom_);
|
||||
|
||||
% Get shock series for SMM and set variance correction factor
|
||||
if strcmp(options_mom_.mom.mom_method,'SMM')
|
||||
|
|
Loading…
Reference in New Issue