function resid_plot(y,X,sims);

% RESID_PLOT yields a standard plot of residuals y_hat for OLS
% regression, with simulated 95% confidence bounds on the plot.

% INPUTS:      y = vector of dependent variables
%              X = explanatory data for the regressions
%           sims = (optional) number of simulations to be used in confidence bounds
%                  Default: = 1000
%
% Written by: T.E.SMITH, 3/17/03              
%

if nargin < 3
   
   sims = 1000;
   
end

n = length(y);

X = [ones(n,1),X]; %add intercept

k = size(X,2);

H = X*inv(X'*X)*X';

M = eye(n) - H;

res = M*y; 

y_hat = H*y;

L = [[1:n]',y_hat];

L = sortrows(L,2);

rows = L(:,1);

y_hat = L(:,2);

RES = M*normrnd(0,1,sims,n)';

RES = RES';

lower = prctile(RES,2.5);

upper = prctile(RES,97.5);

res = res(rows); %reorder following y_hat

lower = lower(rows);

upper = upper(rows);

plot(y_hat,res,'.');

hold on;

plot(y_hat,upper,'r');

hold on;

plot(y_hat,lower,'r');

hold on;

plot(y_hat,zeros(n,1),'r');





