什么是莫兰(Moran)散点图
如何使用Matlab绘制莫兰散点图
莫兰散点图(Moran Scatterplot)是一种用于可视化空间数据自相关性的图表。该图表主要用于展示变量在地理空间上的分布情况,以及它们之间的相对位置关系是否存在相关性。图中通常会用不同颜色代表不同数值,同时也有可能使用不同形状代表不同种类的数据。
使用Matlab绘制莫兰散点图,需要首先明确各自相关系数。可以通过计算莫兰指数(Moran’s I),来得到相关系数。接下来,在Matlab中使用scatter函数绘制散点图,并将不同数值用不同颜色表示。最后,在图表中加入莫兰指数和其显著性水平的相关信息,以便进行解释和分析。
以下是Matlab绘制莫兰散点图的示例代码:
“`matlab
% 定义变量数据和空间连通矩阵
X = rand(30,1); % 随机生成变量数据
W = sparse([0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0; …
1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0; …
0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; …
1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0; …
1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; …
0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0; …
0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; …
0 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; …
0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0; …
0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0; …
0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; …
0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0; …
0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0; …
0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; …
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0; …
0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0; …
0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; …
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0; …
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0; …
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0; …
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; …
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0; …
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0; …
1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1; …
1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0; …
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1; …
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1; …
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0; …
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0]);% 计算莫兰指数
N = length(X);
S = sum(X); % 总和
Wsum = sum(W(:))/2; % 连通矩阵权重总和
Z = (X – S/N)/std(X); % 标准化
I = (1/N)*sum((W*Z).*Z); % 莫兰指数
varI = (N*(N-1)*((Wsum^2)-(sum(sum(W.^2))))/((N-2)*(N^2)*(S^2))); % 指数方差
zI = (I-0)/sqrt(varI); % 总体相关系数z值
p = 2*(1-normcdf(abs(zI))); % P值% 绘制散点图
figure
H = plot(X);
hold on;
scatter(X,W*X,’o’); % 绘制散点图
xlabel(‘Variable Value’);
ylabel(‘Spatial Lag’);
title([‘Moran Scatterplot (I = ‘,num2str(I),’, P-value = ‘,num2str(p),’)’]);% 显示不同符号的数据之间的连线,以表示它们之间的空间关系
for i = 1:N
for j = i+1:N
if W(i,j) ~= 0
plot([X(i) X(j)],[W(i,j)*X(j) W(i,j)*X(i)],’k-‘)
end
end
end
“`上述代码将随机生成的30个变量值,以及对应的空间连通矩阵,用于绘制莫兰散点图。通过计算莫兰指数和P值,并将其显示在图表中,便可以进行空间数据相关系数的解释和分析。
2023年03月27日 17:07