📄 rossi.m
字号:
function res = rossi(Y,x,z,ta,s,type);
% PURPOSE: Multivariate temporal disaggregation with transversal constraint
% -----------------------------------------------------------------------------
% SYNTAX: res = rossi(Y,x_ini,z,ta,s,type);
% -----------------------------------------------------------------------------
% OUTPUT: res: a structure
% res.meth = 'Multivariate Rossi';
% res.N = Number of low frequency data
% res.n = Number of high frequency data
% res.pred = Number of extrapolations (=0 in this case)
% res.ta = Type of disaggregation
% res.s = Frequency conversion
% res.y = High frequency estimate
% res.et = Elapsed time
% -----------------------------------------------------------------------
% INPUT: Y: NxM ---> M series of low frequency data with N observations
% x: nxM ---> M series of high frequency data with n observations
% z: nx1 ---> high frequency transversal constraint
% ta: type of disaggregation
% ta=1 ---> sum (flow)
% ta=2 ---> average (index)
% ta=3 ---> last element (stock) ---> interpolation
% ta=4 ---> first element (stock) ---> interpolation
% s: number of high frequency data points for each low frequency data points
% s= 4 ---> annual to quarterly
% s=12 ---> annual to monthly
% s= 3 ---> quarterly to monthly
% type: univariate temporal disaggregation procedure used to compute
% preliminary estimates
% type = 1 ---> Fernandez
% type = 2 ---> Chow-Lin
% type = 3 ---> Litterman
% -----------------------------------------------------------------------
% LIBRARY: aggreg, vec, desvec, fernandez, chowlin, litterman
% -----------------------------------------------------------------------
% SEE ALSO: denton, difonzo, mtd_print, mtd_plot
% -----------------------------------------------------------------------
% REFERENCE: Rossi, N. (1982)"A note on the estimation of disaggregate
% time series when the aggregate is known", Review of Economics and Statistics,
% vol. 64, n. 4, p. 695-696.
% Di Fonzo, T. (1994) "Temporal disaggregation of a system of
% time series when the aggregate is known: optimal vs. adjustment methods",
% INSEE-Eurostat Workshop on Quarterly National Accounts, Paris, december.
% written by:
% Enrique M. Quilis
% Instituto Nacional de Estadistica
% Paseo de la Castellana, 183
% 28046 - Madrid (SPAIN)
t0 = clock;
%--------------------------------------------------------
% Initial assignment
x_ini = x;
clear x;
%--------------------------------------------------------
% Preliminary checking
[N,M] = size(Y);
[n,m] = size(x_ini);
[nz,mz] = size(z);
if ((M ~= m) | (n ~= s*N) | (nz ~= n) | (mz ~= 1) | (nz ~= s*N))
error (' *** INCORRECT DIMENSIONS *** ');
else
clear m nz mz;
end
%--------------------------------------------------------
% Checking of "ta"
if (ta < 1) | (ta > 4)
error (' *** INCORRECT TA OPTION *** ');
end
%--------------------------------------------------------
% Checking of "s"
if (s ~= 3) & (s ~= 4) & (s ~= 12)
error (' *** INCORRECT FREQUENCY CONVERSION (s) *** ');
end
% =========================================================================
% STEP 1: PRELIMINARY ESTIMATES BY MEANS OF UNIVARIATE METHODS
% =========================================================================
x = zeros(n,M); e = zeros(n,M);
for j=1:M
switch type
case 1
rex = fernandez(Y(:,j),x_ini(:,j),ta,s);
case 2
rex = chowlin(Y(:,j),x_ini(:,j),ta,s,1); % Max. likelihood estimation
case 3
rex = litterman(Y(:,j),x_ini(:,j),ta,s,1); % Max. likelihood estimation
end
x(:,j) = rex.y;
e(:,j) = rex.u;
end
S = cov(e,1);
% =========================================================================
% STEP 2: FINAL ESTIMATES: MULTIVARIATE SOLUTION
% =========================================================================
%--------------------------------------------------------
% **** CONSTRAINT MATRICES ***
%--------------------------------------------------------
% Required:
% H1 ---> transversal
% H2 ---> longitudinal
%
%---------------------------------------------------------------
% Generate H1: n x nM
H1 = kron(ones(1,M),eye(n));
%---------------------------------------------------------------
% Generate H2: NM x nM.
%
% Generation of aggregation vector c and matrix C
C = aggreg(ta,N,s);
H2 = kron(eye(M),C);
%---------------------------------------------------------------
% Generate H: n+NM x nM.
%
% H = [H1
% H2 ]
H = [H1
H2];
%--------------------------------------------------------
% **** PREPARING DATA MATRICES ***
%--------------------------------------------------------
% Required:
% x_big
% Y_big, Y_e
% X_diag, X_e
%--------------------------------------------------------
% Generate x_big: nM x 1
x_big = vec(x);
%--------------------------------------------------------
% Generate Y_big: NM x 1
Y_big = vec(Y);
%--------------------------------------------------------
% Generate Y_e: n+NM x 1
%
% It is column vector containing the transversal
% constraint and all the observations
% on the low frequency series
% according to: Y_e = [ z Y1 Y2 ... YM]' = [z Y_big]'
Y_e = [ z
Y_big];
% -------------------------------------------------------------------------
% FINAL SOLUTION
% -------------------------------------------------------------------------
U_e = Y_e - H * x_big;
W = kron(S,eye(n));
Wi = inv(W);
Vi = pinv (H * Wi * H');
y_big = x_big + Wi * H' * Vi * U_e;
% Series y columnwise y: nxM
y = desvec(y_big,M);
% -----------------------------------------------------------------------
% Loading the structure
% -----------------------------------------------------------------------
% Basic parameters
res.meth = 'Multivariate Rossi';
res.N = N;
res.n = n;
res.pred = 0;
res.ta= ta;
res.s = s;
res.type = type;
% -----------------------------------------------------------------------
% Series
res.y = y;
% -----------------------------------------------------------------------
% Elapsed time
res.et = etime(clock,t0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -