1.excelÓëMATLABÁ´½Ó£º
Excel£º
Ñ¡Ï¡ª¼ÓÔØÏ¡ªCOM¼ÓÔØÏ¡ª×ªµ½¡ª¡ªÃ»Óй´Ñ¡Ïî
2.MATLAB°²×°Ä¿Â¼ÖÐѰÕÒtoolbox¡ª¡ªexlink¡ª¡ªµã»÷,ÆôÓúê
E:\\MATLAB\\toolbox\\exlink
È»ºó£¬ExcelÖоͳöÏÖMATLAB¹¤¾ß
1
£¨×¢ÒâExcelÖеÄÊý¾Ý£º£©
3.Æô¶¯matlab
£¨1£© µã»÷start MATLAB
£¨2£© senddata to matlab £¬²¢¶Ô±äÁ¿¾ØÕó±äÁ¿½øÐÐÃüÃû£¨×¢Ò⣺ѡȡ±äÁ¿ÎªÊýÖµ£¬²»°ü
À¨¸÷±äÁ¿£©
(data±íÖÐÊý¾Ý½øÐÐÃüÃû)
2
£¨¿Õ¼äÈ¨ÖØ½øÐÐÃüÃû£©
£¨3£© µ¼ÈëMATLABÖеÄÁ½¸ö¾ØÕó±äÁ¿¾Í¿ÉÒÔ¿´¼û
4.½«elhorstºÍjplv7Á½¸ö³ÌÐòÎļþ¼Ð¸´ÖƵ½MATLAB°²×°Ä¿Â¼µÄtoolboxÎļþ¼Ð
3
5.ÉèÖ÷¾¶£º
6.ÊäÈë³ÌÐò£¬µÃ³ö½á¹û
4
T=30; N=46;
W=normw(W1); y=A(:,3); x=A(:,[4,6]);
xconstant=ones(N*T,1); [nobs K]=size(x);
results=ols(y,[xconstant x]);
vnames=strvcat('logcit','intercept','logp','logy'); prt_reg(results,vnames,1); sige=results.sige*((nobs-K)/nobs);
loglikols=-nobs/2*log(2*pi*sige)-1/(2*sige)*results.resid'*results.resid % The (robust)LM tests developed by Elhorst
LMsarsem_panel(results,W,y,[xconstant x]); % (Robust) LM tests ½âÊÍ
ÿһÐзֱð±íʾ£º
¸ÃÃæ°åÊý¾ÝµÄʱÆÚÊýΪ30£¨T=30£©£¬ 5
¸ÃÃæ°åÊý¾ÝÓÐ30¸öµØÇø£¨N=30£©£¬ ½«¿Õ¼äÈ¨ÖØ¾ØÕó±ê×¼»¯£¨W=normw(w1)£©£¬ ½«ÃûΪA£¨ÒÔ¾ØÕóÐÎʽ³öÏÖÔÚMATLABAÖУ©µÄ±äÁ¿µÄµÚ3ÁÐÊý¾Ý¶¨ÒåΪ±»½âÊͱäÁ¿y, ½«ÃûΪAµÄ±äÁ¿µÄµÚ4¡¢5¡¢6ÁÐÊý¾Ý¶¨ÒåΪ½âÊͱäÁ¿¾ØÕóx£¬ ¶¨ÒåÒ»¸öÓÐN*TÐУ¬1ÁеÄÈ«1¾ØÕ󣬸þØÕóÃûΪ£ºxconstant£¬£¨ones¼´ÎªÈ«1¾ØÕó£© ËµÃ÷½âÊͱäÁ¿¾ØÕóxµÄ´óС£ºÓÐnobsÐУ¬KÁС££¨sizeΪÃèÊö¾ØÕóµÄ´óС£©¡£ ¸½Â¼£º
¾²Ì¬Ãæ°å¿Õ¼ä¼ÆÁ¿¾¼Ãѧ
Ò»¡¢OLS¾²Ì¬Ãæ°å±à³Ì
1¡¢ÆÕÍ¨Ãæ°å±à³Ì
T=30; N=46;
W=normw(W1); y=A(:,3); x=A(:,[4,6]);
xconstant=ones(N*T,1); [nobs K]=size(x);
results=ols(y,[xconstant x]);
6
vnames=strvcat('logcit','intercept','logp','logy'); prt_reg(results,vnames,1); sige=results.sige*((nobs-K)/nobs);
loglikols=-nobs/2*log(2*pi*sige)-1/(2*sige)*results.resid'*results.resid
% The (robust)LM tests developed by Elhorst
LMsarsem_panel(results,W,y,[xconstant x]); % (Robust) LM tests
2¡¢¿Õ¼ä¹Ì¶¨OLS £¨spatial-fixed effects£© T=30; N=46;
W=normw(W1); y=A(:,3); x=A(:,[4,6]);
xconstant=ones(N*T,1); [nobs K]=size(x); model=1;
[ywith,xwith,meanny,meannx,meanty,meantx]=demean(y,x,N,T,model);
results=ols(ywith,xwith);
vnames=strvcat('logcit','logp','logy'); % should be changed if x is changed
7
prt_reg(results,vnames);
sfe=meanny-meannx*results.beta; % including the constant term yme = y - mean(y); et=ones(T,1);
error=y-kron(et,sfe)-x*results.beta; rsqr1 = error'*error; rsqr2 = yme'*yme;
FE_rsqr2 = 1.0 - rsqr1/rsqr2 % r-squared including fixed effects sige=results.sige*((nobs-K)/nobs);
logliksfe=-nobs/2*log(2*pi*sige)-1/(2*sige)*results.resid'*results.resid
LMsarsem_panel(results,W,ywith,xwith); % (Robust) LM tests
3¡¢Ê±ÆÚ¹Ì¶¨OLS£¨time-period fixed effects£© T=30; N=46;
W=normw(W1); y=A(:,3); x=A(:,[4,6]);
xconstant=ones(N*T,1); [nobs K]=size(x); model=2;
8
[ywith,xwith,meanny,meannx,meanty,meantx]=demean(y,x,N,T,model);
results=ols(ywith,xwith);
vnames=strvcat('logcit','logp','logy'); % should be changed if x is changed
prt_reg(results,vnames);
tfe=meanty-meantx*results.beta; % including the constant term yme = y - mean(y); en=ones(N,1);
error=y-kron(tfe,en)-x*results.beta; rsqr1 = error'*error; rsqr2 = yme'*yme;
FE_rsqr2 = 1.0 - rsqr1/rsqr2 % r-squared including fixed effects sige=results.sige*((nobs-K)/nobs);
logliktfe=-nobs/2*log(2*pi*sige)-1/(2*sige)*results.resid'*results.resid
LMsarsem_panel(results,W,ywith,xwith); % (Robust) LM tests
4¡¢¿Õ¼äÓëʱ¼äË«¹Ì¶¨Ä£ÐÍ T=30; N=46;
W=normw(W1);
9
y=A(:,3); x=A(:,[4,6]);
xconstant=ones(N*T,1); [nobs K]=size(x); model=3;
[ywith,xwith,meanny,meannx,meanty,meantx]=demean(y,x,N,T,model);
results=ols(ywith,xwith);
vnames=strvcat('logcit','logp','logy'); % should be changed if x is changed
prt_reg(results,vnames) en=ones(N,1); et=ones(T,1);
intercept=mean(y)-mean(x)*results.beta;
sfe=meanny-meannx*results.beta-kron(en,intercept); tfe=meanty-meantx*results.beta-kron(et,intercept); yme = y - mean(y); ent=ones(N*T,1);
error=y-kron(tfe,en)-kron(et,sfe)-x*results.beta-kron(ent,intercept); rsqr1 = error'*error; rsqr2 = yme'*yme;
FE_rsqr2 = 1.0 - rsqr1/rsqr2 % r-squared including fixed effects
10
sige=results.sige*((nobs-K)/nobs);
loglikstfe=-nobs/2*log(2*pi*sige)-1/(2*sige)*results.resid'*results.resid
LMsarsem_panel(results,W,ywith,xwith); % (Robust) LM tests
¶þ¡¢¾²Ì¬Ãæ°åSARÄ£ÐÍ
1¡¢Î޹̶¨Ð§Ó¦£¨No fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x); info.lflag=0; info.model=0; info.fe=0;
results=sar_panel_FE(y,[xconstant x],W,T,info); vnames=strvcat('logcit','intercept','logp','logy'); prt_spnew(results,vnames,1)
% Print out effects estimates spat_model=0;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sar(results,vnames,W);
2¡¢¿Õ¼ä¹Ì¶¨Ð§Ó¦£¨Spatial fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
11
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x); info.lflag=0; info.model=1; info.fe=0;
results=sar_panel_FE(y,x,W,T,info); vnames=strvcat('logcit','logp','logy'); prt_spnew(results,vnames,1)
% Print out effects estimates spat_model=0;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sar(results,vnames,W);
3¡¢Ê±µã¹Ì¶¨Ð§Ó¦£¨Time period fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x);
info.lflag=0; % required for exact results info.model=2;
info.fe=0; % Do not print intercept and fixed effects; use info.fe=1 to turn on
results=sar_panel_FE(y,x,W,T,info); vnames=strvcat('logcit','logp','logy'); prt_spnew(results,vnames,1)
% Print out effects estimates spat_model=0;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sar(results,vnames,W);
4¡¢Ë«¹Ì¶¨Ð§Ó¦£¨Spatial and time period fixed effects£©
T=30;
12
N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x);
info.lflag=0; % required for exact results info.model=3;
info.fe=0; % Do not print intercept and fixed effects; use info.fe=1 to turn on
results=sar_panel_FE(y,x,W,T,info); vnames=strvcat('logcit','logp','logy'); prt_spnew(results,vnames,1) % Print out effects estimates spat_model=0;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sar(results,vnames,W);
Èý¡¢¾²Ì¬Ãæ°åSDMÄ£ÐÍ
1¡¢Î޹̶¨Ð§Ó¦£¨No fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x); info.lflag=0; info.model=0; info.fe=0;
results=sar_panel_FE(y,[xconstant x wx],W,T,info);
vnames=strvcat('logcit','intercept','logp','logy','W*logp','W*logy'); prt_spnew(results,vnames,1)
13
% Print out effects estimates spat_model=1;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sdm(results,vnames,W);
2¡¢¿Õ¼ä¹Ì¶¨Ð§Ó¦£¨Spatial fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x);
info.lflag=0; % required for exact results info.model=1;
info.fe=0; % Do not print intercept and fixed effects; use info.fe=1 to turn on
results=sar_panel_FE(y,[x wx],W,T,info);
vnames=strvcat('logcit','logp','logy','W*logp','W*logy'); prt_spnew(results,vnames,1) % Print out effects estimates spat_model=1;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sdm(results,vnames,W);
3¡¢Ê±µã¹Ì¶¨Ð§Ó¦£¨Time period fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x);
info.lflag=0; % required for exact results info.model=2;
info.fe=0; % Do not print intercept and fixed effects; use info.fe=1 to
14
turn on
% New routines to calculate effects estimates results=sar_panel_FE(y,[x wx],W,T,info);
vnames=strvcat('logcit','logp','logy','W*logp','W*logy'); % Print out coefficient estimates prt_spnew(results,vnames,1) % Print out effects estimates spat_model=1;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sdm(results,vnames,W)
4¡¢Ë«¹Ì¶¨Ð§Ó¦£¨Spatial and time period fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x); info.bc=0;
info.lflag=0; % required for exact results info.model=3;
info.fe=0; % Do not print intercept and fixed effects; use info.fe=1 to turn on
results=sar_panel_FE(y,[x wx],W,T,info);
vnames=strvcat('logcit','logp','logy','W*logp','W*logy'); prt_spnew(results,vnames,1) % Print out effects estimates spat_model=1;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sdm(results,vnames,W)
wald test spatial lag
% Wald test for spatial Durbin model against spatial lag model btemp=results.parm; varcov=results.cov; Rafg=zeros(K,2*K+2); for k=1:K
15
Rafg(k,K+k)=1; % R(1,3)=0 and R(2,4)=0; end
Wald_spatial_lag=(Rafg*btemp)'*inv(Rafg*varcov*Rafg')*Rafg*btemp prob_spatial_lag=1-chis_cdf (Wald_spatial_lag, K)
wald test spatial error
% Wald test spatial Durbin model against spatial error model R=zeros(K,1); for k=1:K
R(k)=btemp(2*K+1)*btemp(k)+btemp(K+k); % k changed in 1, 7/12/2010 % R(1)=btemp(5)*btemp(1)+btemp(3); % R(2)=btemp(5)*btemp(2)+btemp(4); end
Rafg=zeros(K,2*K+2); for k=1:K
Rafg(k,k) =btemp(2*K+1); % k changed in 1, 7/12/2010 Rafg(k,K+k) =1; Rafg(k,2*K+1)=btemp(k);
% Rafg(1,1)=btemp(5);Rafg(1,3)=1;Rafg(1,5)=btemp(1); % Rafg(2,2)=btemp(5);Rafg(2,4)=1;Rafg(2,5)=btemp(2); end
Wald_spatial_error=R'*inv(Rafg*varcov*Rafg')*R prob_spatial_error=1-chis_cdf (Wald_spatial_error,K)
LR test spatial lag
resultssar=sar_panel_FE(y,x,W,T,info); LR_spatial_lag=-2*(resultssar.lik-results.lik) prob_spatial_lag=1-chis_cdf (LR_spatial_lag,K)
LR test spatial error
resultssem=sem_panel_FE(y,x,W,T,info);
LR_spatial_error=-2*(resultssem.lik-results.lik) prob_spatial_error=1-chis_cdf (LR_spatial_error,K)
5¡¢¿Õ¼äËæ»úЧӦÓëʱµã¹Ì¶¨Ð§Ó¦Ä£ÐÍ
T=30;
16
N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x);
[ywith,xwith,meanny,meannx,meanty,meantx]=demean(y,[x wx],N,T,2); % 2=time dummies info.model=1;
results=sar_panel_RE(ywith,xwith,W,T,info); prt_spnew(results,vnames,1)
spat_model=1;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sdm(results,vnames,W)
wald test spatial lag
btemp=results.parm(1:2*K+2); varcov=results.cov(1:2*K+2,1:2*K+2); Rafg=zeros(K,2*K+2); for k=1:K
Rafg(k,K+k)=1; % R(1,3)=0 and R(2,4)=0; end
Wald_spatial_lag=(Rafg*btemp)'*inv(Rafg*varcov*Rafg')*Rafg*btemp prob_spatial_lag= 1-chis_cdf (Wald_spatial_lag, K)
wald test spatial error
R=zeros(K,1); for k=1:K
R(k)=btemp(2*K+1)*btemp(k)+btemp(K+k); % k changed in 1, 7/12/2010 % R(1)=btemp(5)*btemp(1)+btemp(3); % R(2)=btemp(5)*btemp(2)+btemp(4); end
Rafg=zeros(K,2*K+2); for k=1:K
Rafg(k,k) =btemp(2*K+1); % k changed in 1, 7/12/2010
17
Rafg(k,K+k) =1; Rafg(k,2*K+1)=btemp(k);
% Rafg(1,1)=btemp(5);Rafg(1,3)=1;Rafg(1,5)=btemp(1); % Rafg(2,2)=btemp(5);Rafg(2,4)=1;Rafg(2,5)=btemp(2); end
Wald_spatial_error=R'*inv(Rafg*varcov*Rafg')*R prob_spatial_error= 1-chis_cdf (Wald_spatial_error,K)
LR test spatial lag
resultssar=sar_panel_RE(ywith,xwith(:,1:K),W,T,info); LR_spatial_lag=-2*(resultssar.lik-results.lik) prob_spatial_lag=1-chis_cdf (LR_spatial_lag,K)
LR test spatial error
resultssem=sem_panel_RE(ywith,xwith(:,1:K),W,T,info); LR_spatial_error=-2*(resultssem.lik-results.lik) prob_spatial_error=1-chis_cdf (LR_spatial_error,K)
ËÄ¡¢¾²Ì¬Ãæ°åSEMÄ£ÐÍ
1¡¢Î޹̶¨Ð§Ó¦£¨No fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x); info.lflag=0; info.model=0; info.fe=0;
results=sem_panel_FE(y,[xconstant x],W,T,info); vnames=strvcat('logcit','intercept','logp','logy'); prt_spnew(results,vnames,1)
18
% Print out effects estimates spat_model=0;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sar(results,vnames,W);
2¡¢¿Õ¼ä¹Ì¶¨Ð§Ó¦£¨Spatial fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x); info.lflag=0; info.model=1; info.fe=0;
results=sem_panel_FE(y,x,W,T,info); vnames=strvcat('logcit','logp','logy'); prt_spnew(results,vnames,1) % Print out effects estimates spat_model=0;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sar(results,vnames,W);
3¡¢Ê±µã¹Ì¶¨Ð§Ó¦£¨Time period fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x);
info.lflag=0; % required for exact results info.model=2;
info.fe=0; % Do not print intercept and fixed effects; use info.fe=1 to turn on
19
results=sem_panel_FE(y,x,W,T,info); vnames=strvcat('logcit','logp','logy'); prt_spnew(results,vnames,1) % Print out effects estimates spat_model=0;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sar(results,vnames,W);
4¡¢Ë«¹Ì¶¨Ð§Ó¦£¨Spatial and time period fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x);
info.lflag=0; % required for exact results info.model=3;
info.fe=0; % Do not print intercept and fixed effects; use info.fe=1 to turn on
results=sem_panel_FE(y,x,W,T,info); vnames=strvcat('logcit','logp','logy'); prt_spnew(results,vnames,1) % Print out effects estimates spat_model=0;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sar(results,vnames,W);
Îå¡¢¾²Ì¬Ãæ°åSDEMÄ£ÐÍ
1¡¢Î޹̶¨Ð§Ó¦£¨No fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N;
20
wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x); info.lflag=0; info.model=0; info.fe=0;
results=sem_panel_FE(y,[xconstant x wx],W,T,info);
vnames=strvcat('logcit','intercept','logp','logy','W*logp','W*logy'); prt_spnew(results,vnames,1) % Print out effects estimates spat_model=1;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sdm(results,vnames,W);
2¡¢¿Õ¼ä¹Ì¶¨Ð§Ó¦£¨Spatial fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x);
info.lflag=0; % required for exact results info.model=1;
info.fe=0; % Do not print intercept and fixed effects; use info.fe=1 to turn on
results=sem_panel_FE(y,[x wx],W,T,info);
vnames=strvcat('logcit','logp','logy','W*logp','W*logy'); prt_spnew(results,vnames,1) % Print out effects estimates spat_model=1;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sdm(results,vnames,W);
3¡¢Ê±µã¹Ì¶¨Ð§Ó¦£¨Time period fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]);
21
x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x);
info.lflag=0; % required for exact results info.model=2;
info.fe=0; % Do not print intercept and fixed effects; use info.fe=1 to turn on
% New routines to calculate effects estimates results=sem_panel_FE(y,[x wx],W,T,info);
vnames=strvcat('logcit','logp','logy','W*logp','W*logy'); % Print out coefficient estimates prt_spnew(results,vnames,1) % Print out effects estimates spat_model=1;
direct_indirect_effects_estimates(results,W,spat_model); panel_effects_sdm(results,vnames,W)
4¡¢Ë«¹Ì¶¨Ð§Ó¦£¨Spatial and time period fixed effects£©
T=30; N=46; W=normw(W1); y=A(:,[3]); x=A(:,[4,6]); for t=1:T
t1=(t-1)*N+1;t2=t*N; wx(t1:t2,:)=W*x(t1:t2,:); end
xconstant=ones(N*T,1); [nobs K]=size(x); info.bc=0;
info.lflag=0; % required for exact results info.model=3;
info.fe=0; % Do not print intercept and fixed effects; use info.fe=1 to turn on
results=sem_panel_FE(y,[x wx],W,T,info);
vnames=strvcat('logcit','logp','logy','W*logp','W*logy'); prt_spnew(results,vnames,1) % Print out effects estimates spat_model=1;
direct_indirect_effects_estimates(results,W,spat_model);
22
panel_effects_sdm(results,vnames,W)
23