matlab软件moran值,用matlab求moran并作图的具体步骤
現(xiàn)在有從論壇上下載的moran 的代碼,如下:求問這個代碼如何修正,運行總是有問題。這個代碼只能做單變量的moran 嗎?
function[I,I_standard,Z_I,Z_alpha,result]=moran(X,W,alpha)
%%X為列向量,W為權(quán)重矩陣
%alpha為顯著性水平
n = length(X);
Xmean = mean(X);
XminusX_mean = X - Xmean;
S0 = sum(sum(W));
%一、計算,moran'I值
%1、W未標準化,為0-1矩陣
I =XminusX_mean'*W*XminusX_mean*n/(XminusX_mean'*XminusX_mean*S0);
%2、W標準化,為(0,1)矩陣
W_rowSum = sum(W');
W_rowSum_temp = W_rowSum'*ones(1,n);
W_standard = W./W_rowSum_temp;
I_standard =XminusX_mean'*W_standard*XminusX_mean/(XminusX_mean'*XminusX_mean);
%二、moran'I值的顯著性檢驗
Z_I = moran_test(I_standard,W_standard);
Z_alpha = norminv(1-alpha,0,1);
%三、畫moran散點圖
%y = ax + b;線性擬合
%1、X標準化,W標準化
Xstd = std(X,1);%X的標準差
X_std = (X-Xmean)/Xstd;%X標準化
W_standard_X_standard = W_standard*X_std;
%result = myls(X_std,WX_standard);
result = moranScatterPlot(X_std, W_standard_X_standard );
title('X標準化,W標準化');
% %2、X標準化,W未標準化
%? ? Xstd = std(X,1);%X的標準差
%? ? X_std = (X-Xmean)/Xstd;%X標準化,X_std代表橫坐標
%? ? W_X_standard = W*X_std;%WX_standard代表縱坐標
%? ? % result = myls(X_std,WX_standard);
%? ?result =??moranScatterPlot(X_std,W_X_standard);
%? ?title('X標準化,W未標準化');
%3、X為未標準化,W標準化
%? ? W_standard_X = W_standard*X;%WX_standard代表縱坐標
%? ? % result = myls(X_std,WX_standard);
%? ? result = moranScatterPlot(X,W_standard_X)
%? ?? ?title('X為未標準化,W標準化');
% % 4、X未標準化,W未標準化
%? ? WX = W*X;%WX_standard代表縱坐標
%? ? result = moranScatterPlot(X,WX);
%? ? title('X未標準化,W未標準化');
Moran I 檢驗
function [Z_I,Z_alpha] =moran_test(I,W,alpha)
%%I為計算出來的moran'I值
%W為計算相應moran'I值的權(quán)重矩陣
n = size(W,1);
E_I = -1/(n-1);
S0 = sum(sum(W));
S1 = sum( sum( (W+W').^2 ) )/2;
S2 =sum( sum((W+W')').^2 );
Var_I =(n*n*S1-n*S2+3*S0*S0)/((n*n-1)*S0*S0)-E_I*E_I;
Z_I = (I-E_I)/sqrt(Var_I);
Z_alpha = norminv(1-alpha,0,1);
Moran I plot
function result = moranScatterPlot(X,WX)
%%X為列向量,W為權(quán)重矩陣
result = myls(X,WX);
X_lift = min(X) - 0.5*abs(min(X));
X_right = max(X) + 0.5*max(X);
xx = linspace(X_lift,X_right,1000);
yy = result(1)*xx + result(2);
plot(X,WX,'ro');
hold on
plot(xx,yy)
grid on
axis equal
end
總結(jié)
以上是生活随笔為你收集整理的matlab软件moran值,用matlab求moran并作图的具体步骤的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php面试题五之nginx如何调用php
- 下一篇: php chmod 777 chown,