if nargin ~= 3
error('Wrong # of arguments to moran');
end;
复制代码
构造一个函数
[n k] = size(x);
复制代码
权重矩阵正规化
W = normw(W);
复制代码
开始加权最小二乘
b = inv(x'*x)*x'*y;
e = y - x*b;
epe = e'*e;
mi = (e'*W*e)/epe;
M = eye(n) - x*(inv(x'*x))*x';
tmw = trace(M*W);
复制代码
求各种均值方差与相关概率
meani = tmw/(n-k);
vari = trace((M*W)*(M*W')) + trace((M*W)*(M*W)) + tmw*tmw;
vari = vari/((n-k)*(n-k+2));
vari = vari - meani*meani;
mis = (mi-meani)/sqrt(vari);
prob = norm_prb(mis);
复制代码
最终结果表示:
result.meth = 'moran';
result.nobs = n;
result.nvar = k;
result.morani = mi;
result.istat = mis;
result.imean = meani;
result.ivar = vari;
result.prob = prob;
复制代码