Hellen-Violin 发表于 2018-2-27 18:35
请问具体口令能告知一下么?
完整的程序是
%%读取数据
xlsread('data',1);
[data,name]=xlsread('data',1);
%%读取权重矩阵
weight=xlsread('juliW.xlsx');
%标准化
W=normw(weight);
T=9;
N=30;
nobs=N*T;
%提取变量
y=data(:,[3]);
x=data(:,[6,7,8,9,10,12,13]);
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('Y','way3','caizhengzc','FDI','xiaofeilsze','students','wages','cxsaving','W*way3','W*caizhengzc','W*FDI','W*xiaofeilsze','W*students','W*wages','W*cxsaving');
prt_spnew(results,vnames,1)
% Print out coefficient estimates
prt_sp(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 for spatial Durbin model against spatial lag model
btemp=results.parm;
varcov=results.cov;
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 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)
% needed for Hausman test later on
logliklag=results.lik;
blagfe=results.parm(1:end-1);
covblagfe=results.cov(1:end-1,1:end-1);
% needed for Hausman test later on
logliklagre=results.lik;
blagre=results.parm(1:end-2);
covblagre=results.cov(1:end-2,1:end-2);
% ----------------------------------------------------------------------------------------
% Hausman test FE versus RE
hausman=(blagfe-blagre)'*inv(covblagre-covblagfe)*(blagfe-blagre);
dof=length(blagfe);
probability=1-chis_prb(abs(hausman),dof);
% Note: probability < 0.025 implies rejection of random effects model in favor of fixed effects model
% Use 0.025, since it is a one-sided test
fprintf(1,'Hausman test-statistic, degrees of freedom and probability = %9.4f,%6d,%9.4f \n',abs(hausman),dof,probability);
其余的语句都能运行,只是到最后的hausman检验这块运行不了,hausman=(blagfe-blagre)'*inv(covblagre-covblagfe)*(blagfe-blagre);