if nargin ~= 3
error('Wrong # of arguments to moran');
end;
[n k] = size(x);
% standardize the weight matrix
W = normw(W);
% do ols to get residuals
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);