v4: ported changes for computing variance in unit root models
git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@720 ac1d8469-bf42-47a9-8791-bf33cf982152time-shift
parent
161753429a
commit
c85730c108
|
@ -1,47 +1,61 @@
|
||||||
% solves x-a*x*a'=b for b (and then x) symmetrical
|
% solves x-a*x*a'=b for b (and then x) symmetrical
|
||||||
function x=lyapunov_symm(a,b)
|
function [x,ns_var]=lyapunov_symm(a,b)
|
||||||
n = size(b,1);
|
global options_
|
||||||
if n == 1
|
|
||||||
x=b/(1-a*a);
|
info = 0;
|
||||||
return
|
if size(a,1) == 1
|
||||||
end
|
x=b/(1-a*a);
|
||||||
x=zeros(n,n);
|
return
|
||||||
[u,t]=schur(a);
|
end
|
||||||
b=u'*b*u;
|
[u,t] = schur(a);
|
||||||
for i=n:-1:2
|
if exist('ordeig','builtin')
|
||||||
if t(i,i-1) == 0
|
e1 = abs(ordeig(t)) > 2-options_.qz_criterium;
|
||||||
if i == n
|
else
|
||||||
c = zeros(n,1);
|
e1 = abs(my_ordeig(t)) > 2-options_.qz_criterium;
|
||||||
else
|
end
|
||||||
c = t(1:i,:)*(x(:,i+1:end)*t(i,i+1:end)')+...
|
k = sum(e1);
|
||||||
t(i,i)*t(1:i,i+1:end)*x(i+1:end,i);
|
[u,t] = ordschur(u,t,e1);
|
||||||
end
|
n = length(e1)-k;
|
||||||
x(1:i,i)=(eye(i)-t(1:i,1:i)*t(i,i))\(b(1:i,i)+c);
|
b=u(:,k+1:end)'*b*u(:,k+1:end);
|
||||||
x(i,1:i-1)=x(1:i-1,i)';
|
t = t(k+1:end,k+1:end);
|
||||||
else
|
x=zeros(n,n);
|
||||||
if i == n
|
for i=n:-1:2
|
||||||
c = zeros(n,1);
|
if t(i,i-1) == 0
|
||||||
c1 = zeros(n,1);
|
if i == n
|
||||||
else
|
c = zeros(n,1);
|
||||||
c = t(1:i,:)*(x(:,i+1:end)*t(i,i+1:end)')+...
|
else
|
||||||
t(i,i)*t(1:i,i+1:end)*x(i+1:end,i)+...
|
c = t(1:i,:)*(x(:,i+1:end)*t(i,i+1:end)')+...
|
||||||
t(i,i-1)*t(1:i,i+1:end)*x(i+1:end,i-1);
|
t(i,i)*t(1:i,i+1:end)*x(i+1:end,i);
|
||||||
c1 = t(1:i,:)*(x(:,i+1:end)*t(i-1,i+1:end)')+...
|
end
|
||||||
t(i-1,i-1)*t(1:i,i+1:end)*x(i+1:end,i-1)+...
|
q = eye(i)-t(1:i,1:i)*t(i,i);
|
||||||
t(i-1,i)*t(1:i,i+1:end)*x(i+1:end,i);
|
x(1:i,i) = q\(b(1:i,i)+c);
|
||||||
end
|
x(i,1:i-1) = x(1:i-1,i)';
|
||||||
z = [eye(i)-t(1:i,1:i)*t(i,i) -t(1:i,1:i)*t(i,i-1);...
|
else
|
||||||
-t(1:i,1:i)*t(i-1,i) eye(i)-t(1:i,1:i)*t(i-1,i-1)]...
|
if i == n
|
||||||
\[b(1:i,i)+c;b(1:i,i-1)+c1];
|
c = zeros(n,1);
|
||||||
x(1:i,i) = z(1:i);
|
c1 = zeros(n,1);
|
||||||
x(1:i,i-1) = z(i+1:end);
|
else
|
||||||
x(i,1:i-1)=x(1:i-1,i)';
|
c = t(1:i,:)*(x(:,i+1:end)*t(i,i+1:end)')+...
|
||||||
x(i-1,1:i-2)=x(1:i-2,i-1)';
|
t(i,i)*t(1:i,i+1:end)*x(i+1:end,i)+...
|
||||||
i = i - 1;
|
t(i,i-1)*t(1:i,i+1:end)*x(i+1:end,i-1);
|
||||||
end
|
c1 = t(1:i,:)*(x(:,i+1:end)*t(i-1,i+1:end)')+...
|
||||||
end
|
t(i-1,i-1)*t(1:i,i+1:end)*x(i+1:end,i-1)+...
|
||||||
if i == 2
|
t(i-1,i)*t(1:i,i+1:end)*x(i+1:end,i);
|
||||||
c = t(1,:)*(x(:,2:end)*t(1,2:end)')+t(1,1)*t(1,2:end)*x(2:end,1);
|
end
|
||||||
x(1,1)=(b(1,1)+c)/(1-t(1,1)*t(1,1));
|
q = [eye(i)-t(1:i,1:i)*t(i,i) -t(1:i,1:i)*t(i,i-1);...
|
||||||
end
|
-t(1:i,1:i)*t(i-1,i) eye(i)-t(1:i,1:i)*t(i-1,i-1)];
|
||||||
x=u*x*u';
|
z = q\[b(1:i,i)+c;b(1:i,i-1)+c1];
|
||||||
|
x(1:i,i) = z(1:i);
|
||||||
|
x(1:i,i-1) = z(i+1:end);
|
||||||
|
x(i,1:i-1)=x(1:i-1,i)';
|
||||||
|
x(i-1,1:i-2)=x(1:i-2,i-1)';
|
||||||
|
i = i - 1;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if i == 2
|
||||||
|
c = t(1,:)*(x(:,2:end)*t(1,2:end)')+t(1,1)*t(1,2:end)*x(2:end,1);
|
||||||
|
x(1,1)=(b(1,1)+c)/(1-t(1,1)*t(1,1));
|
||||||
|
end
|
||||||
|
x=u(:,k+1:end)*x*u(:,k+1:end)';
|
||||||
|
ns_var = [];
|
||||||
|
ns_var = find(any(abs(u(:,1:k)) > 1e-8,2));
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
function eval = my_ordeig(t)
|
||||||
|
|
||||||
|
n = size(t,2);
|
||||||
|
eval = zeros(n,1);
|
||||||
|
for i=1:n-1
|
||||||
|
if t(i+1,i) == 0
|
||||||
|
eval(i) = t(i,i);
|
||||||
|
else
|
||||||
|
k = i:i+1;
|
||||||
|
eval(k) = eig(t(k,k));
|
||||||
|
i = i+1;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if i < n
|
||||||
|
t(n) = t(n,n);
|
||||||
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,196 +1,204 @@
|
||||||
% Copyright (C) 2001 Michel Juillard
|
% Copyright (C) 2001 Michel Juillard
|
||||||
%
|
%
|
||||||
% computes the theoretical auto-covariances, gamma_y, for an AR(p) process
|
% computes the theoretical auto-covariances, Gamma_y, for an AR(p) process
|
||||||
% with coefficients dr.ghx and dr.ghu and shock variances M_.Sigma_e
|
% with coefficients dr.ghx and dr.ghu and shock variances Sigma_e_
|
||||||
% for a subset of variables ivar (indices in M_.endo_names)
|
% for a subset of variables ivar (indices in lgy_)
|
||||||
% Theoretical HP filtering is available as an option
|
% Theoretical HP filtering is available as an option
|
||||||
|
|
||||||
function gamma_y=th_autocovariances(dr,ivar)
|
function [Gamma_y,ivar]=th_autocovariances(dr,ivar)
|
||||||
global M_ options_
|
global M_ options_
|
||||||
|
|
||||||
if sscanf(version('-release'),'%d') < 13
|
exo_names_orig_ord = M_.exo_names_orig_ord;
|
||||||
warning off
|
if sscanf(version('-release'),'%d') < 13
|
||||||
else
|
warning off
|
||||||
eval('warning off MATLAB:dividebyzero')
|
else
|
||||||
end
|
eval('warning off MATLAB:dividebyzero')
|
||||||
nar = options_.ar;
|
end
|
||||||
gamma_y = cell(nar+1,1);
|
nar = options_.ar;
|
||||||
nvar = size(ivar,1);
|
Gamma_y = cell(nar+1,1);
|
||||||
|
if isempty(ivar)
|
||||||
ghx = dr.ghx;
|
ivar = [1:M_.endo_nbr]';
|
||||||
ghu = dr.ghu;
|
end
|
||||||
npred = dr.npred;
|
nvar = size(ivar,1);
|
||||||
nstatic = dr.nstatic;
|
|
||||||
kstate = dr.kstate;
|
ghx = dr.ghx;
|
||||||
order = dr.order_var;
|
ghu = dr.ghu;
|
||||||
iv(order) = [1:length(order)];
|
npred = dr.npred;
|
||||||
nx = size(ghx,2);
|
nstatic = dr.nstatic;
|
||||||
|
kstate = dr.kstate;
|
||||||
ikx = [nstatic+1:nstatic+npred];
|
order = dr.order_var;
|
||||||
|
iv(order) = [1:length(order)];
|
||||||
A = zeros(nx,nx);
|
nx = size(ghx,2);
|
||||||
k0 = kstate(find(kstate(:,2) <= M_.maximum_lag+1),:);
|
|
||||||
i0 = find(k0(:,2) == M_.maximum_lag+1);
|
ikx = [nstatic+1:nstatic+npred];
|
||||||
n0 = length(i0);
|
|
||||||
A(i0,:) = ghx(ikx,:);
|
A = zeros(nx,nx);
|
||||||
AS = ghx(:,i0);
|
k0 = kstate(find(kstate(:,2) <= M_.maximum_lag+1),:);
|
||||||
ghu1 = zeros(nx,M_.exo_nbr);
|
i0 = find(k0(:,2) == M_.maximum_lag+1);
|
||||||
ghu1(i0,:) = ghu(ikx,:);
|
i00 = i0;
|
||||||
for i=M_.maximum_lag:-1:2
|
n0 = length(i0);
|
||||||
i1 = find(k0(:,2) == i);
|
A(i0,:) = ghx(ikx,:);
|
||||||
n1 = size(i1,1);
|
AS = ghx(:,i0);
|
||||||
j1 = zeros(n1,1);
|
ghu1 = zeros(nx,M_.exo_nbr);
|
||||||
j2 = j1;
|
ghu1(i0,:) = ghu(ikx,:);
|
||||||
for k1 = 1:n1
|
for i=M_.maximum_lag:-1:2
|
||||||
j1(k1) = find(k0(1:n0,1)==k0(i1(k1),1));
|
i1 = find(k0(:,2) == i);
|
||||||
j2(k1) = find(k0(i0,1)==k0(i1(k1),1));
|
n1 = size(i1,1);
|
||||||
end
|
j1 = zeros(n1,1);
|
||||||
A(i1,i0(j2))=eye(n1);
|
j2 = j1;
|
||||||
AS(:,j1) = AS(:,j1)+ghx(:,i1);
|
for k1 = 1:n1
|
||||||
i0 = i1;
|
j1(k1) = find(k0(i00,1)==k0(i1(k1),1));
|
||||||
end
|
j2(k1) = find(k0(i0,1)==k0(i1(k1),1));
|
||||||
b = ghu1*M_.Sigma_e*ghu1';
|
end
|
||||||
|
AS(:,j1) = AS(:,j1)+ghx(:,i1);
|
||||||
% order of variables with preset variances in ghx and ghu
|
i0 = i1;
|
||||||
iky = iv(ivar);
|
end
|
||||||
|
b = ghu1*M_.Sigma_e*ghu1';
|
||||||
aa = ghx(iky,:);
|
|
||||||
bb = ghu(iky,:);
|
|
||||||
|
[A,B] = kalman_transition_matrix(dr);
|
||||||
if options_.order == 2
|
% index of predetermined variables in A
|
||||||
%save temp A AS b dr M_.Sigma_e ikx iky nx n0
|
i_pred = [nstatic+(1:npred) M_.endo_nbr+1:length(A)];
|
||||||
vx = lyapunov_symm(A,b);
|
A = A(i_pred,i_pred);
|
||||||
Ex = (dr.ghs2(ikx)+dr.ghxx(ikx,:)*vx(:)+dr.ghuu(ikx,:)*M_.Sigma_e(:))/2;
|
|
||||||
Ex = (eye(n0)-AS(ikx,:))\Ex;
|
if options_.order == 2
|
||||||
gamma_y{nar+3} = AS(iky,:)*Ex+(dr.ghs2(iky)+dr.ghxx(iky,:)*vx(:)+dr.ghuu(iky,:)*M_.Sigma_e(:))/2;
|
[vx,ns_var] = lyapunov_symm(A,b);
|
||||||
end
|
i_ivar = find(~ismember(ivar,dr.order_var(ns_var+nstatic)));
|
||||||
if options_.hp_filter == 0
|
ivar = ivar(i_ivar);
|
||||||
if options_.order < 2
|
iky = iv(ivar);
|
||||||
vx = lyapunov_symm(A,b);
|
aa = ghx(iky,:);
|
||||||
end
|
bb = ghu(iky,:);
|
||||||
gamma_y{1} = aa*vx*aa'+ bb*M_.Sigma_e*bb';
|
Ex = (dr.ghs2(ikx)+dr.ghxx(ikx,:)*vx(:)+dr.ghuu(ikx,:)*M_.Sigma_e(:))/2;
|
||||||
k = find(abs(gamma_y{1}) < 1e-12);
|
Ex = (eye(n0)-AS(ikx,:))\Ex;
|
||||||
gamma_y{1}(k) = 0;
|
Gamma_y{nar+3} = AS(iky,:)*Ex+(dr.ghs2(iky)+dr.ghxx(iky,:)*vx(:)+dr.ghuu(iky,:)*M_.Sigma_e(:))/2;
|
||||||
|
end
|
||||||
% autocorrelations
|
if options_.hp_filter == 0
|
||||||
if nar > 0
|
if options_.order < 2
|
||||||
vxy = (A*vx*aa'+ghu1*M_.Sigma_e*bb');
|
[vx, ns_var] = lyapunov_symm(A,b);
|
||||||
|
i_ivar = find(~ismember(ivar,dr.order_var(ns_var+nstatic)));
|
||||||
sy = sqrt(diag(gamma_y{1}));
|
ivar = ivar(i_ivar);
|
||||||
sy = sy *sy';
|
iky = iv(ivar);
|
||||||
gamma_y{2} = aa*vxy./sy;
|
aa = ghx(iky,:);
|
||||||
|
bb = ghu(iky,:);
|
||||||
for i=2:nar
|
end
|
||||||
vxy = A*vxy;
|
Gamma_y{1} = aa*vx*aa'+ bb*M_.Sigma_e*bb';
|
||||||
gamma_y{i+1} = aa*vxy./sy;
|
k = find(abs(Gamma_y{1}) < 1e-12);
|
||||||
end
|
Gamma_y{1}(k) = 0;
|
||||||
end
|
|
||||||
|
% autocorrelations
|
||||||
% variance decomposition
|
if nar > 0
|
||||||
if M_.exo_nbr > 1
|
vxy = (A*vx*aa'+ghu1*M_.Sigma_e*bb');
|
||||||
gamma_y{nar+2} = zeros(nvar,M_.exo_nbr);
|
|
||||||
SS(M_.exo_names_orig_ord,M_.exo_names_orig_ord)=M_.Sigma_e+1e-14*eye(M_.exo_nbr);
|
sy = sqrt(diag(Gamma_y{1}));
|
||||||
cs = chol(SS)';
|
sy = sy *sy';
|
||||||
b1(:,M_.exo_names_orig_ord) = ghu1;
|
Gamma_y{2} = aa*vxy./sy;
|
||||||
b1 = b1*cs;
|
|
||||||
b2(:,M_.exo_names_orig_ord) = ghu(iky,:);
|
for i=2:nar
|
||||||
b2 = b2*cs;
|
vxy = A*vxy;
|
||||||
vx = lyapunov_symm(A,b1*b1');
|
Gamma_y{i+1} = aa*vxy./sy;
|
||||||
vv = diag(aa*vx*aa'+b2*b2');
|
end
|
||||||
for i=1:M_.exo_nbr
|
end
|
||||||
vx1 = lyapunov_symm(A,b1(:,i)*b1(:,i)');
|
|
||||||
gamma_y{nar+2}(:,i) = abs(diag(aa*vx1*aa'+b2(:,i)*b2(:,i)'))./vv;
|
% variance decomposition
|
||||||
end
|
if M_.exo_nbr > 1
|
||||||
end
|
Gamma_y{nar+2} = zeros(length(ivar),M_.exo_nbr);
|
||||||
else
|
SS(exo_names_orig_ord,exo_names_orig_ord)=M_.Sigma_e+1e-14*eye(M_.exo_nbr);
|
||||||
lambda = options_.hp_filter;
|
cs = chol(SS)';
|
||||||
ngrid = options_.hp_ngrid;
|
b1(:,exo_names_orig_ord) = ghu1;
|
||||||
freqs = 0 : ((2*pi)/ngrid) : (2*pi*(1 - .5/ngrid));
|
b1 = b1*cs;
|
||||||
tpos = exp( sqrt(-1)*freqs);
|
b2(:,exo_names_orig_ord) = ghu(iky,:);
|
||||||
tneg = exp(-sqrt(-1)*freqs);
|
b2 = b2*cs;
|
||||||
hp1 = 4*lambda*(1 - cos(freqs)).^2 ./ (1 + 4*lambda*(1 - cos(freqs)).^2);
|
vx = lyapunov_symm(A,b1*b1');
|
||||||
|
vv = diag(aa*vx*aa'+b2*b2');
|
||||||
mathp_col = [];
|
for i=1:M_.exo_nbr
|
||||||
IA = eye(size(A,1));
|
vx1 = lyapunov_symm(A,b1(:,i)*b1(:,i)');
|
||||||
IE = eye(M_.exo_nbr);
|
Gamma_y{nar+2}(:,i) = abs(diag(aa*vx1*aa'+b2(:,i)*b2(:,i)'))./vv;
|
||||||
for ig = 1:ngrid
|
end
|
||||||
f_omega =(1/(2*pi))*( [inv(IA-A*tneg(ig))*ghu1;IE]...
|
end
|
||||||
*M_.Sigma_e*[ghu1'*inv(IA-A'*tpos(ig)) ...
|
else
|
||||||
IE]); % state variables
|
if options_.order < 2
|
||||||
g_omega = [aa*tneg(ig) bb]*f_omega*[aa'*tpos(ig); bb']; % selected variables
|
iky = iv(ivar);
|
||||||
f_hp = hp1(ig)^2*g_omega; % spectral density of selected filtered series
|
aa = ghx(iky,:);
|
||||||
mathp_col = [mathp_col ; (f_hp(:))']; % store as matrix row
|
bb = ghu(iky,:);
|
||||||
% for ifft
|
end
|
||||||
end;
|
lambda = options_.hp_filter;
|
||||||
|
ngrid = options_.hp_ngrid;
|
||||||
% covariance of filtered series
|
freqs = 0 : ((2*pi)/ngrid) : (2*pi*(1 - .5/ngrid));
|
||||||
imathp_col = real(ifft(mathp_col))*(2*pi);
|
tpos = exp( sqrt(-1)*freqs);
|
||||||
|
tneg = exp(-sqrt(-1)*freqs);
|
||||||
gamma_y{1} = reshape(imathp_col(1,:),nvar,nvar);
|
hp1 = 4*lambda*(1 - cos(freqs)).^2 ./ (1 + 4*lambda*(1 - cos(freqs)).^2);
|
||||||
|
|
||||||
% autocorrelations
|
mathp_col = [];
|
||||||
if nar > 0
|
IA = eye(size(A,1));
|
||||||
sy = sqrt(diag(gamma_y{1}));
|
IE = eye(M_.exo_nbr);
|
||||||
sy = sy *sy';
|
for ig = 1:ngrid
|
||||||
for i=1:nar
|
f_omega =(1/(2*pi))*( [inv(IA-A*tneg(ig))*ghu1;IE]...
|
||||||
gamma_y{i+1} = reshape(imathp_col(i+1,:),nvar,nvar)./sy;
|
*M_.Sigma_e*[ghu1'*inv(IA-A'*tpos(ig)) ...
|
||||||
end
|
IE]); % state variables
|
||||||
end
|
g_omega = [aa*tneg(ig) bb]*f_omega*[aa'*tpos(ig); bb']; % selected variables
|
||||||
|
f_hp = hp1(ig)^2*g_omega; % spectral density of selected filtered series
|
||||||
%variance decomposition
|
mathp_col = [mathp_col ; (f_hp(:))']; % store as matrix row
|
||||||
if M_.exo_nbr > 1
|
% for ifft
|
||||||
gamma_y{nar+2} = zeros(nvar,M_.exo_nbr);
|
end;
|
||||||
SS(M_.exo_names_orig_ord,M_.exo_names_orig_ord)=M_.Sigma_e+1e-14*eye(M_.exo_nbr);
|
|
||||||
cs = chol(SS)';
|
% covariance of filtered series
|
||||||
SS = cs*cs';
|
imathp_col = real(ifft(mathp_col))*(2*pi);
|
||||||
b1(:,M_.exo_names_orig_ord) = ghu1;
|
|
||||||
b2(:,M_.exo_names_orig_ord) = ghu(iky,:);
|
Gamma_y{1} = reshape(imathp_col(1,:),nvar,nvar);
|
||||||
mathp_col = [];
|
|
||||||
IA = eye(size(A,1));
|
% autocorrelations
|
||||||
IE = eye(M_.exo_nbr);
|
if nar > 0
|
||||||
for ig = 1:ngrid
|
sy = sqrt(diag(Gamma_y{1}));
|
||||||
f_omega =(1/(2*pi))*( [inv(IA-A*tneg(ig))*b1;IE]...
|
sy = sy *sy';
|
||||||
*SS*[b1'*inv(IA-A'*tpos(ig)) ...
|
for i=1:nar
|
||||||
IE]); % state variables
|
Gamma_y{i+1} = reshape(imathp_col(i+1,:),nvar,nvar)./sy;
|
||||||
g_omega = [aa*tneg(ig) b2]*f_omega*[aa'*tpos(ig); b2']; % selected variables
|
end
|
||||||
f_hp = hp1(ig)^2*g_omega; % spectral density of selected filtered series
|
end
|
||||||
mathp_col = [mathp_col ; (f_hp(:))']; % store as matrix row
|
|
||||||
% for ifft
|
%variance decomposition
|
||||||
end;
|
if M_.exo_nbr > 1
|
||||||
|
Gamma_y{nar+2} = zeros(nvar,M_.exo_nbr);
|
||||||
imathp_col = real(ifft(mathp_col))*(2*pi);
|
SS(exo_names_orig_ord,exo_names_orig_ord)=M_.Sigma_e+1e-14*eye(M_.exo_nbr);
|
||||||
vv = diag(reshape(imathp_col(1,:),nvar,nvar));
|
cs = chol(SS)';
|
||||||
for i=1:M_.exo_nbr
|
SS = cs*cs';
|
||||||
mathp_col = [];
|
b1(:,exo_names_orig_ord) = ghu1;
|
||||||
SSi = cs(:,i)*cs(:,i)';
|
b2(:,exo_names_orig_ord) = ghu(iky,:);
|
||||||
for ig = 1:ngrid
|
mathp_col = [];
|
||||||
f_omega =(1/(2*pi))*( [inv(IA-A*tneg(ig))*b1;IE]...
|
IA = eye(size(A,1));
|
||||||
*SSi*[b1'*inv(IA-A'*tpos(ig)) ...
|
IE = eye(M_.exo_nbr);
|
||||||
IE]); % state variables
|
for ig = 1:ngrid
|
||||||
g_omega = [aa*tneg(ig) b2]*f_omega*[aa'*tpos(ig); b2']; % selected variables
|
f_omega =(1/(2*pi))*( [inv(IA-A*tneg(ig))*b1;IE]...
|
||||||
f_hp = hp1(ig)^2*g_omega; % spectral density of selected filtered series
|
*SS*[b1'*inv(IA-A'*tpos(ig)) ...
|
||||||
mathp_col = [mathp_col ; (f_hp(:))']; % store as matrix row
|
IE]); % state variables
|
||||||
% for ifft
|
g_omega = [aa*tneg(ig) b2]*f_omega*[aa'*tpos(ig); b2']; % selected variables
|
||||||
end;
|
f_hp = hp1(ig)^2*g_omega; % spectral density of selected filtered series
|
||||||
|
mathp_col = [mathp_col ; (f_hp(:))']; % store as matrix row
|
||||||
imathp_col = real(ifft(mathp_col))*(2*pi);
|
% for ifft
|
||||||
gamma_y{nar+2}(:,i) = abs(diag(reshape(imathp_col(1,:),nvar,nvar)))./vv;
|
end;
|
||||||
end
|
|
||||||
end
|
imathp_col = real(ifft(mathp_col))*(2*pi);
|
||||||
end
|
vv = diag(reshape(imathp_col(1,:),nvar,nvar));
|
||||||
if sscanf(version('-release'),'%d') < 13
|
for i=1:M_.exo_nbr
|
||||||
warning on
|
mathp_col = [];
|
||||||
else
|
SSi = cs(:,i)*cs(:,i)';
|
||||||
eval('warning on MATLAB:dividebyzero')
|
for ig = 1:ngrid
|
||||||
end
|
f_omega =(1/(2*pi))*( [inv(IA-A*tneg(ig))*b1;IE]...
|
||||||
|
*SSi*[b1'*inv(IA-A'*tpos(ig)) ...
|
||||||
% 10/18/2002 MJ
|
IE]); % state variables
|
||||||
% 10/30/2002 added autocorrelations, gamma_y is now a cell array
|
g_omega = [aa*tneg(ig) b2]*f_omega*[aa'*tpos(ig); b2']; % selected variables
|
||||||
% 01/20/2003 MJ added variance decomposition
|
f_hp = hp1(ig)^2*g_omega; % spectral density of selected filtered series
|
||||||
% 02/18/2003 MJ added HP filtering (Thanks to Jean Chateau for the code)
|
mathp_col = [mathp_col ; (f_hp(:))']; % store as matrix row
|
||||||
% 04/28/2003 MJ changed handling of options
|
% for ifft
|
||||||
% 05/19/2003 MJ don't assume lags are in increasing order in building A
|
end;
|
||||||
% 05/21/2003 MJ added global i_exo_var_,
|
|
||||||
% variance decomposition: test M_.exo_nbr > 1
|
imathp_col = real(ifft(mathp_col))*(2*pi);
|
||||||
% 05/29/2003 MJ removed global i_exo_var_
|
Gamma_y{nar+2}(:,i) = abs(diag(reshape(imathp_col(1,:),nvar,nvar)))./vv;
|
||||||
% 06/10/2003 MJ test release for warning syntax
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if sscanf(version('-release'),'%d') < 13
|
||||||
|
warning on
|
||||||
|
else
|
||||||
|
eval('warning on MATLAB:dividebyzero')
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in New Issue