%moran_tom computes Morans for Tom Pederson

%assumes sar_tom in workspace

R = RES(3:28,:);

MI = zeros(4,15);


n = length(x);

k = 1 ;

u = ones(n,1);

X(:,1) = u ;

X(:,2) = x ;

count = 1;

for i = 1:5
   
   j = 1;
   
   alpha = (i - 1)*(.25);
   
         
   while alpha + (j - 1)*(.25) <= 1
            
      beta = (j - 1)*(.25);            
                 
      MI(1,count) = alpha;
      MI(2,count) = beta;      
      
      W = alpha*W2 + beta*W3 + (1 - alpha - beta)*W5;   
      
      
      r = R(:,count);
      
         
      I = (r'*W*r)/(r'*r); %Moran's I
      
      MI(3,count) = I;

		%Calculate Moments

		M = eye(n) - X*inv(X'*X)*X' ;

		s = u'*W*u ; %Should be equal to n for row normalized W

		mu = (n/s)*trace(M*W)/(n-(k+1));

		var = ((n/s)^2)*((trace(M*W*M*W') + trace(M*W*M*W) + ...
      		((trace(M*W))^2))/((n-(k+1))*(n-(k+1)+2))) - (mu^2) ;
   
		sig = sqrt(var);

		z = (I - mu)/sig ;

		P = 1 - normcdf(z);

		MI(4,count) = P;

		count = count + 1;

		j = j + 1;

	end %end while

end %end loop


