阅读权限 255 威望 1 级论坛币 4428 个 通用积分 61.8219 学术水平 89 点 热心指数 97 点 信用等级 67 点 经验 1609 点 帖子 715 精华 1 在线时间 1963 小时 注册时间 2011-7-21 最后登录 2025-5-15
% Anselin's Columbus neighborhood spatial data sample
%
%
load wmat.dat; load anselin.dat; % load the data;
anselin(:,1:3)=anselin(:,1:3)/100;
y = anselin(:,1);
W = wmat;
N=49;
W=zeros(N,N);
for p=1:232
W(wmat(p,1),wmat(p,2))=1;
end
W=normw(W);
lambda=eig(W);
nobs = length(y);
% construct an explanatory variables matrix
x = [ones(nobs,1) anselin(:,2) anselin(:,3)];
wx = W*anselin(:,2:3);
% set up variable names
vnames = strvcat('Crime','constant','income','house value');
% OLS model
results = ols(y,x); % compare to least-squares estimates
prt(results,vnames); % print results
loglikelihood = -(N/2)*log(2*pi) - (N/2)*log(results.si2) - (1/results.si2)*results.resid'*results.resid
LMsarsem_panel(results,W,y,x); % (Robust) LM tests
lm1=lmlag_panel(y,[ones(nobs,1) x],W);
prt_tests(lm1);
lm2=lmerror_panel(y,[ones(nobs,1) x],W);
prt_tests(lm2);
lm3=lmlag_robust_panel(y,[ones(nobs,1) x],W);
prt_tests(lm3);
lm4=lmerror_robust_panel(y,[ones(nobs,1) x],W);
prt_tests(lm4);
% Spatial lag model
result = sarpaul(y,x,W); % estimate spatial autoregressive model
prt(result,vnames); % print results
% Exact direct/indirect effects estimates
nvar=2;
beta=result.beta(2:3);
rho=result.rho;
for p=1:nvar
C=zeros(N,N);
for i=1:N
for j=1:N
if (i==j) C(i,j)=beta(p);
% else C(i,j)=beta(nvar+p)*W(i,j);
end
end
end
S=(eye(N)-rho*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
EAVCtot(p,1)=EAVD(p,1)+EAVI(p,1);
end
fprintf(1,' direct indirect total \n');
[EAVD EAVI EAVCtot]
result.N=result.nobs;
result.cflag=1;
result.xwith=x;
spat_model=0;
direct_indirect_effects_estimates(result,W,spat_model);
%Spatial error model
result = sempaul(y,x,W); % estimate spatial error model
prt(result,vnames); % print results
% OLS model with exogenous interaction effects
vnames = strvcat('Crime','constant','income','house value','W*income','W*house value');
results = ols(y,[x wx]); % compare to least-squares estimates
prt(results,vnames); % print results
loglikelihood = -(N/2)*log(2*pi) - (N/2)*log(results.si2) - (1/results.si2)*results.resid'*results.resid
% Spatial Durbin model
vnames = strvcat('Crime','constant','income','house value','W*income','W*house value');
v1names = strvcat('Crime','constant','income','house value');
result = sarpaul(y,[x wx],W); % estimate spatial Durbin model
prt(result,vnames); % print results
% Exact direct/indirect effects estimates
nvar=2;
beta=result.beta(2:5);
rho=result.rho;
for p=1:nvar
C=zeros(N,N);
for i=1:N
for j=1:N
if (i==j) C(i,j)=beta(p);
else C(i,j)=beta(nvar+p)*W(i,j);
end
end
end
S=(eye(N)-rho*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
EAVCtot(p,1)=EAVD(p,1)+EAVI(p,1);
end
fprintf(1,' direct indirect total \n');
[EAVD EAVI EAVCtot]
result.N=result.nobs;
result.cflag=1;
result.xwith=[x wx];
spat_model=1;
direct_indirect_effects_estimates(result,W,spat_model);
% Spatial Durbin error model
result = sempaul(y,[x wx],W); % estimate spatial error model
prt(result,vnames); % print results
% SAC / SARAR / Clifford-Ord/ Kelejian-Prucha model
result = sacpaul(y,x,W);
prt(result,v1names); % print results
% Exact direct/indirect effects estimates
nvar=2;
beta=result.beta(2:3);
rho=result.rho;
for p=1:nvar
C=zeros(N,N);
for i=1:N
for j=1:N
if (i==j) C(i,j)=beta(p);
% else C(i,j)=beta(nvar+p)*W(i,j);
end
end
end
S=(eye(N)-rho*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
EAVCtot(p,1)=EAVD(p,1)+EAVI(p,1);
end
fprintf(1,' direct indirect total \n');
[EAVD EAVI EAVCtot]
result.N=result.nobs;
result.cflag=1;
result.xwith=x;
spat_model=0;
direct_indirect_effects_estimates(result,W,spat_model);
%%% Full model
result = sacpaul(y,[x wx],W);
prt(result,vnames); % print results
parm=[result.beta;result.rho;result.lam;result.sige];
% Exact direct/indirect effects estimates
nvar=2;
beta=result.beta(2:5);
rho=result.rho;
for p=1:nvar
C=zeros(N,N);
for i=1:N
for j=1:N
if (i==j) C(i,j)=beta(p);
else C(i,j)=beta(nvar+p)*W(i,j);
end
end
end
S=(eye(N)-rho*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
EAVCtot(p,1)=EAVD(p,1)+EAVI(p,1);
end
fprintf(1,' direct indirect total \n');
[EAVD EAVI EAVCtot]
result.parm=parm;
result.N=result.nobs;
result.cflag=1;
result.xwith=[x wx];
spat_model=1;
direct_indirect_effects_estimates(result,W,spat_model); 复制代码