mom.get_data_moments.m: do not pass full oo_ structure
parent
acb9518dec
commit
fa29689b13
|
@ -1,10 +1,11 @@
|
|||
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_)
|
||||
function [dataMoments, m_data] = get_data_moments(data, obs_var, inv_order_var, matched_moments_, options_mom_)
|
||||
% [dataMoments, m_data] = get_data_moments(data, obs_var, inv_order_var, matched_moments_, options_mom_)
|
||||
% This function computes the user-selected empirical moments from data
|
||||
% =========================================================================
|
||||
% INPUTS
|
||||
% o data [T x varobs_nbr] data set
|
||||
% o oo_: [structure] storage for results
|
||||
% o obs_var: [integer] index of observables
|
||||
% o inv_order_var: [integer] inverse decision rule order
|
||||
% o matched_moments_: [structure] information about selected moments to match in estimation
|
||||
% o options_mom_: [structure] information about all settings (specified by the user, preprocessor, and taken from global options_)
|
||||
% -------------------------------------------------------------------------
|
||||
|
@ -45,11 +46,11 @@ m_data = NaN(T,options_mom_.mom.mom_nbr);
|
|||
% Product moment for each time period, i.e. each row t contains y_t1(l1)^p1*y_t2(l2)^p2*...
|
||||
% note that here we already are able to treat leads and lags and any power product moments
|
||||
for jm = 1:options_mom_.mom.mom_nbr
|
||||
vars = oo_.dr.inv_order_var(matched_moments_{jm,1})';
|
||||
vars = inv_order_var(matched_moments_{jm,1})';
|
||||
leadlags = matched_moments_{jm,2}; % lags are negative numbers and leads are positive numbers
|
||||
powers = matched_moments_{jm,3};
|
||||
for jv = 1:length(vars)
|
||||
jvar = (oo_.mom.obs_var == vars(jv));
|
||||
jvar = (obs_var == vars(jv));
|
||||
y = NaN(T,1); %Take care of T_eff instead of T for lags and NaN via mean with 'omitnan' option below
|
||||
y( (1-min(leadlags(jv),0)) : (T-max(leadlags(jv),0)), 1) = data( (1+max(leadlags(jv),0)) : (T+min(leadlags(jv),0)), jvar).^powers(jv);
|
||||
if jv==1
|
||||
|
|
|
@ -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.get_data_moments(y_sim, oo_, M_.matched_moments, options_mom_);
|
||||
oo_.mom.model_moments = mom.get_data_moments(y_sim, oo_.mom.obs_var, oo_.dr.inv_order_var, M_.matched_moments, options_mom_);
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -435,7 +435,7 @@ if strcmp(options_mom_.mom.mom_method,'GMM') || strcmp(options_mom_.mom.mom_meth
|
|||
% 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_);
|
||||
[oo_.mom.data_moments, oo_.mom.m_data] = mom.get_data_moments(dataset_.data, oo_.mom.obs_var, oo_.dr.inv_order_var, M_.matched_moments, options_mom_);
|
||||
if ~isreal(dataset_.data)
|
||||
error('method_of_moments: The data moments contain complex values!')
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue