空间计量分析很多是用Matlab编程来做。
局部G统计的Matlab计算程序如下:
function [GI,ZG]=Getis(Wij,Xij)
% 计算G统计值:G值是不包含自己的G统计值
% 输入:Wij—空间权值矩阵
% 输入:Xij—研究区域的空间属性数据
% 输出:GI— 空间局部自相关指标-G统计值
% 输出:ZG— 对于GIJ的检验Z值的计算结果
% GI=Getis(Wij,Xij,N)
[M,N]=size(Wij);
GI=zeros(N,1);
GIn=0;
Xn=0;
for m=1:N
for n=1:N
if n==m
GIn=GIn;
Xn=Xn;
else
GIn=GIn+Wij(m,n)*Xij(n);
Xn=Xn+Xij(n);
end
end
GI(m)=GIn/Xn;
GIn=0;
Xn=0;
end
save GI GI -ascii;
%计算Z值
EG=zeros(N,1);
VarG=zeros(N,1);
ZG=zeros(N,1);
WI=0;
for m=1:N %计算E(Gi(d))
for n=1:N
if n==m
WI=WI;
else
WI=WI+Wij(m,n);
end
end
EG(m)=WI/(N-1);
WI=0;
end
WI=0;
Xj=0;
Xj2=0;
%Yi1=zero(N,1); %计算Yi1
%Yi2=zero(N,1); %计算Yi2
Wi=zeros(N,1); %计算Wi
for m=1:N
for n=1:N
if n==m
WI=WI;
Xj=Xj;
Xj2=Xj2;
else
WI=WI+Wij(m,n);
Xj=Xj+(Xij(n)*Xij(n));
Xj2=Xj2+((Xij(n)*Xij(n))/(N-1));
end
end
Wi(m)=WI;
Yi1=Xj;
Yi2=Xj2+Yi1*Yi1;
WI=0;
Xj=0;
Xj2=0;
end
for m=1:N
VarG(m)=(Wi(m)*(N-1-Wi(m))/((N*N-1)*(N*N-1)*(N-2)))*(Yi2/(Yi1*Yi1)); %计算Var(Gi(d))
ZG(m)=(GI(m)-EG(m))/(sqrt(VarG(m))); %计算Z(Gi)
end