最近因为帮老板写一篇区域经济学方面文章,学了点空间计量方面的知识。MATLAB用来做空间计量的jplv7包挺强大的,但不是特别方便,似乎不能生成莫兰散点图。于是参考Anselin在R语言中写的莫兰散点图代码写了一个MATLAB版的。
标准化莫兰指数:
莫兰散点图代码:
function moran_scatter=moran_test_y(x,w) %x为输入变量,w为空间权重矩阵
zx=(x-mean(x))/std(x);
wzx=w*zx;
scatter(zx,wzx,'filled');
axis([-3,4,-0.6,0.8])
hold on
n=xlim;
m=ylim;
moran_I=regress(wzx,zx);
zx1=-3:0.01:4;
moran_scatter=plot(zx1,moran_I*zx1,'-r','linewidth',2);
title(['Moran’s I = ',num2str(moran_I)]);
hold on
line([n(1),n(2)],[0,0],'linestyle','--','color','k');
line([0,0],[m(1),m(2)],'linestyle','--','color','k');
end