errors on extracting effects from dynamic spatial durbin model estimates
Mostrar comentarios más antiguos
The following code is to estimate dynamic spatial durbin model and it works very well. EAVD, EVIC, and EVIP inside the code are dedicated to calculate the effects (one can check it around the middle of the code by this title "% Calculation of direct/indirect effects"). I tried to extract the direct, indirect and total effects from the result but I ain't successful. Any help please?
ylevelb=xlsread('SPATIAL_INDEX_RET_MALAB_NEW.xlsx','sheet 2'); %
x=xlsread('SPATIAL_VERY_FINAL_MATLAB1.xlsx','sheet 2');
WA=csvread('wm_exvol_NUOVO.csv');
T=226;
N=15;
ylevel=ylevelb;fprintf(1,'Y minus item 6 \n');
W=WA;fprintf(1,'W obv distance capitals \n');p=eig(W);eigmax=p(2);peig=1;
x3=x(:,[1:5,7:11]); %ERV
vnames3=strvcat('log(INDEX(t)+2)','log(INDEX(t-1)+2)','log(DEFAULT+2)','log(EXHRATE+2)','log(UNINFLA+2)','log(GDPGROWTH+2)','log(INTRATE+2)',...
'log(ylagerv+2)','log(slervcredT+2)','log(slervchecxT+2)','log(slervuninfT+2)','log(slervgdpT+2)','log(slervchintT+2)');
x=x3;vnames=vnames3;fprintf(1,'x var 1-7 + 9-12 \n');
%
% End choice of model
%
for t=1:T+1
t1=1+(t-1)*N;t2=t*N;
Wylevel(t1:t2,1)=W*ylevel(t1:t2,1);
end
y=ylevel(N+1:end)-ylevel(1:end-N);
%
% First the model without time-period fixed effects
%
info.lflag=0;
info.tl=1;
info.stl=1;
info.ted=1; %transformed approach
info.dyn=1;
info.model=1;
results=sar_panel_FE(ylevel(N+1:end),[ylevel(1:end-N) Wylevel(1:end-N) x],W,T,info);
prt_spnew(results,vnames,1);
results1=sar_jihai(ylevel,x,W,info);
results.beta=results1.theta1(1:end-2);
results.rho=results1.theta1(end-1);
results.tstat=results1.tstat(1:end-1);
results.sige=results1.theta1(end); %%%
results.lik = f2_sarpanel(results1.theta1,results1.yt,results1.zt,W,results.lndet,T); %%%
prt_spnew(results,vnames,1);
% Needed for F-test of time-period fixed effects
RRSS=results.sige*N*T;
%
% Now model with time-period fixed effect
%
info.lflag=0;
info.tl=1;
info.stl=1;
info.ted=1; %transformed approach
info.dyn=1;
info.model=3;
results=sar_panel_FE(ylevel(N+1:end),[ylevel(1:end-N) Wylevel(1:end-N) x],W,T,info);
%prt_spnew(results,vnames,1);
results1=sar_jihai_time(ylevel,x,W,info);
results.beta=results1.theta1(1:end-2);
results.rho=results1.theta1(end-1);
results.tstat=results1.tstat(1:end-1);
results.sige=results1.theta1(end); %%%
results.lik = f2_sarpanel(results1.theta1,results1.yt,results1.zt,W,results.lndet,T-1); %%%
prt_spnew(results,vnames,1);
varcov=results1.varcov;
R=zeros(1,1);
npar=length(results1.theta1);
tau = results1.theta1(1,1);
eta = results1.theta1(2,1);
rho = results1.theta1(npar-1,1);
R(1)=tau+rho+eta-1;
Rafg=zeros(1,npar);
Rafg(1,1)=1;Rafg(1,2)=1;Rafg(1,npar-1)=1;
sumpar=tau+rho+eta;
Wald=R(1)'*inv(Rafg(1,:)*varcov*Rafg(1,:)')*R(1);
F1=1-chis_cdf (Wald,1);
[sumpar Wald F1]
% F-test of time-period fixed effects
URSS=results.sige*N*T;
[Kjunck K1]=size([ylevel(1:end-N) Wylevel(1:end-N) x Wylevel(N+1:end)]);
F0=((RRSS-URSS)/(T-1))/(URSS/((N-1)*(T-1)-K1))
kansfo = fdis_prb(F0, T-1, (N-1)*(T-1)-K1)
%
% Spatial first-differences
%
sigma=(eye(N)-W)*(eye(N)-W)';
[V D]=eig(sigma);
transf=D(1+peig:end,1+peig:end)^(-0.5)*V(:,1+peig:end)'*(eye(N)-W);
Wstar=D(1+peig:end,1+peig:end)^(-0.5)*V(:,1+peig:end)'*W*V(:,1+peig:end)*D(1+peig:end,1+peig:end)^(0.5);
info.lflag=0;
for t=1:T+1
t1=1+(t-1)*N;t2=t*N;
ts1=1+(t-1)*(N-peig);ts2=t*(N-peig);
ystar(ts1:ts2,1)=transf*ylevel(t1:t2,1);
Wystar(ts1:ts2,1)=Wstar*ystar(ts1:ts2,1);
end
for t=1:T
t1=1+(t-1)*N;t2=t*N;
ts1=1+(t-1)*(N-peig);ts2=t*(N-peig);
xstar(ts1:ts2,:)=transf*x(t1:t2,:);
end
info.lflag=0;
info.tl=1;
info.stl=1;
info.dyn=1;
info.model=1;
N1=N-peig;
results=sar_panel_FE(ystar(N1+1:end),[ystar(1:end-N1) Wystar(1:end-N1) xstar],Wstar,T,info);
prt_spnew(results,vnames,1);
results1=sar_jihai(ystar,xstar,Wstar,info);
results.beta=results1.theta1(1:end-2);
results.rho=results1.theta1(end-1);
results.tstat=results1.tstat(1:end-1);
results.sige=results1.theta1(end); %%%
results.lik = f2_sarpanel(results1.theta1,results1.yt,results1.zt,Wstar,results.lndet,T-1); %%%
prt_spnew(results,vnames,1);
tau = results1.theta1(1,1);
eta = results1.theta1(2,1);
rho = results1.theta1(npar-1,1);
varcov=results1.varcov;
btemp=results1.theta1;
R=zeros(1,1);
R(1)=tau+rho+eta-1;
Rafg=zeros(1,npar);
Rafg(1,1)=1;Rafg(1,2)=1;Rafg(1,npar-1)=1;
sumpar=tau+rho+eta;
check=tau+eigmax*(rho+eta)-1; % this should be negative
Wald=R(1)'*inv(Rafg(1,:)*varcov*Rafg(1,:)')*R(1);
F1=1-chis_cdf (Wald,1);
[sumpar check Wald F1]
%
% Calculation of direct/indirect effects
%
NSIM=1000;
simresults=zeros(npar-2,NSIM);
simdir=zeros(npar-3,NSIM);
simind=zeros(npar-3,NSIM);
simtot=zeros(npar-3,NSIM);
for sim=1:NSIM
parms = chol(real(varcov)+0.001)'*randn(size(btemp)) + btemp;
rhosim = parms(npar-1,1);
betasim = parms(3:npar-2,1);
etasim=parms(1,1);
tausim = parms(2,1);
simresults(:,sim)=[tausim;betasim;rhosim];
SC=inv(eye(N)-rhosim*W)*((tausim-1)*eye(N)+(rhosim+etasim)*W);
p=1;
EAVD(p,1)=sum(diag(SC))/N; % average direct effect
EAVI(p,1)=sum(sum(SC,2)-diag(SC))/N; % average indirect effect
EAVC(p,1)=sum(sum(SC,1)'-diag(SC))/N; % average indirect effect
simdir(p,sim)=EAVD(p,1);
simind(p,sim)=EAVI(p,1);
simtot(p,sim)=EAVD(p,1)+EAVI(p,1);
for p=2:npar-3
C=zeros(N,N);
for i=1:N
for j=1:N
if (i==j) C(i,j)=betasim(p-1);
end
end
end
S=inv(eye(N)-rhosim*W)*C;
EAVD(p,1)=sum(diag(S))/N; % average direct effect
EAVI(p,1)=sum(sum(S,2)-diag(S))/N; % average indirect effect
EAVC(p,1)=sum(sum(S,1)'-diag(S))/N; % average indirect effect
simdir(p,sim)=EAVD(p,1);
simind(p,sim)=EAVI(p,1);
simtot(p,sim)=EAVD(p,1)+EAVI(p,1);
end
end
[mean(simresults,2) mean(simresults,2)./std(simresults,0,2)]
fprintf(1,'First effect is convergence effect \n');
[mean(simdir,2) mean(simdir,2)./std(simdir,0,2) mean(simind,2) mean(simind,2)./std(simind,0,2)...
mean(simtot,2) mean(simtot,2)./std(simtot,0,2)]
%
% Impose restriction
%
theta2=btemp-varcov*Rafg'*inv(Rafg(1,:)*varcov*Rafg(1,:)')*R(1);
varcov2=varcov-varcov*Rafg'*inv(Rafg(1,:)*varcov*Rafg(1,:)')*Rafg*varcov;
results2=results;
results2.meth='sar_jihai_restricted';
results2.theta1=theta2;
results2.tstat1=theta2./(sqrt(abs(diag(varcov2))));
results2.sige=theta2(end); %%%
results2.lik = f2_sarpanel(results2.theta1,results1.yt,results1.zt,Wstar,results.lndet,T); %%%
help=theta2(end-1)*kron(speye(T),Wstar)*results1.yt;
residr=results1.yt-help-results1.zt*theta2(1:end-2);
yme=results1.yt-mean(results1.yt);
rsqr2=yme'*yme;
rsqr1 = residr'*residr;
results2.rsqr=1.0-rsqr1/rsqr2; %rsquared
res1=yme;
res2=((speye((N1)*T))-theta2(end-1)*kron(speye(T),Wstar))\(results1.zt*theta2(1:end-2))-mean(results1.yt);
rsq1=res1'*res2;
rsq2=res1'*res1;
rsq3=res2'*res2;
results2.corr2=rsq1^2/(rsq2*rsq3); %corr2
prt_sardynamic(results2,vnames,1);
tau = results2.theta1(1,1);
eta = results2.theta1(2,1);
rho = results2.theta1(npar-1,1);
%
% Calculation of direct/indirect effects
%
clear SC;
NSIM=1000;
simresults=zeros(npar-2,NSIM);
simdir=zeros(npar-3,NSIM);
simind=zeros(npar-3,NSIM);
simtot=zeros(npar-3,NSIM);
for sim=1:NSIM
parms = chol(real(varcov2)+0.001)'*randn(size(theta2)) + theta2;
rhosim = parms(npar-1,1);
betasim = parms(3:npar-2,1);
tausim = parms(2,1);
simresults(:,sim)=[tausim;betasim;rhosim];
SC=(tausim-1)*inv(eye(N)-rhosim*W)*(eye(N)-W);
p=1;
EAVD(p,1)=sum(diag(SC))/N; % average direct effect
EAVI(p,1)=sum(sum(SC,2)-diag(SC))/N; % average indirect effect
EAVC(p,1)=sum(sum(SC,1)'-diag(SC))/N; % average indirect effect
simdir(p,sim)=EAVD(p,1);
simind(p,sim)=EAVI(p,1);
simtot(p,sim)=EAVD(p,1)+EAVI(p,1);
for p=2:npar-3
C=zeros(N,N);
for i=1:N
for j=1:N
if (i==j) C(i,j)=betasim(p-1);
end
end
end
S=inv(eye(N)-rhosim*W)*C;
EAVD(p,1)=sum(diag(S))/N; % average direct effect
EAVI(p,1)=sum(sum(S,2)-diag(S))/N; % average indirect effect
EAVC(p,1)=sum(sum(S,1)'-diag(S))/N; % average indirect effect
simdir(p,sim)=EAVD(p,1);
simind(p,sim)=EAVI(p,1);
simtot(p,sim)=EAVD(p,1)+EAVI(p,1);
end
end
[mean(simresults,2) mean(simresults,2)./std(simresults,0,2)]
fprintf(1,'First effect is convergence effect \n');
[mean(simdir,2) mean(simdir,2)./std(simdir,0,2) mean(simind,2) mean(simind,2)./std(simind,0,2)...
mean(simtot,2) mean(simtot,2)./std(simtot,0,2)]
clear simresults simdir simind simtot;
%end
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Get Started with Model-Based Calibration Toolbox en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!