空间计量软件包中的示例命令:
tr=trace((W'+W)*W);
[N junk]=size(W);
[nobs k]=size(x);
T=nobs/N;
beta=results.beta;
res=results.resid;
sige=res'*res/nobs;
WXB2=0;EWE=0;EWY=0;
xpxi=x'*x\eye(k);
WXB=kron(speye(T),W)*x*beta;
MWXB=(speye(N*T)-x*xpxi*x')*WXB;
WXB2=WXB'*MWXB;
for t=1:T
t1=(t-1)*N+1;t2=t*N;
EWE=EWE+res(t1:t2,1)'*W*res(t1:t2,1);
EWY=EWY+res(t1:t2,1)'*W*y(t1:t2,1);
end
Ttr=T*tr;
J=(WXB2+Ttr*sige)/sige;
LMerror=(EWE/sige)^2/Ttr;
LMlag=(EWY/sige)^2/J;
robustLMerror=(EWE-(Ttr/J)*EWY)^2/((sige)^2*(Ttr*(1-Ttr/J)));
robustLMlag=(EWY-EWE)^2/(sige^2*(J-Ttr));
fprintf(1,'LM test no spatial lag, probability = %9.4f,%9.3f \n',LMlag,1-chis_prb(LMlag,1));
fprintf(1,'robust LM test no spatial lag, probability = %9.4f,%9.3f \n',robustLMlag,1-chis_prb(robustLMlag,1));
fprintf(1,'LM test no spatial error, probability = %9.4f,%9.3f \n',LMerror,1-chis_prb(LMerror,1));
fprintf(1,'robust LM test no spatial error, probability = %9.4f,%9.3f \n',robustLMerror,1-chis_prb(robustLMerror,1));
但是我的数据是6个自变量,1个因变量,时间跨度为11年的面板数据,
tr=trace((W'+W)*W);
>> [N,junk]=size(W);
>> [nobs K]=size(x);
>> T=nobs/(6*N);
>> beta=results.beta;
res=results.resid;
sige=res'*res/nobs;
WXB2=0;EWE=0;EWY=0;
xpxi=x'*x\eye(K);
>> WXB=kron(speye(T),W)*x*beta;
MWXB=(speye(N*T)-x*xpxi*x')*WXB;
WXB2=WXB'*MWXB;
出现
??? Error using ==> speye
Input arguments must be nonnegative integers.
请问我的命令T定义的有问题?还是其他什么错误,如空间权重矩阵的维度不对?