function sp_lag_lik_plot(y,X,W,eigs)

%SP_LAG_LIK is the (negative) likelihood function for SP_LAG
%
%INPUTS: (i)     LAM  = vector of lambda values
%        (ii)  y,X,W  = regression data
%        (ii)    eigs = eigenvalues (optional)
%        

if nargin == 5
   
   val = eigs;
   
else
   
   val = real(eig(full(W)));
   
end

v1 = max(val);

r1 = 1/max(v1);

v0 = min(val);

if v0 ~= 0
    
    r0 = 1/v0;
    
else
    
    disp('min eigenvalue = 0');
    
    r0 = 0
    
end

LAM = [r0: (r1 - r0)/1000 : r1];

%Augment X with unit vector

[n,k] = size(X) ;

% X0 = X ;
% 
% clear('X') ;
% 
% X(:,1) = ones(n,1) ;
% 
% X(:,2:k+1) = X0 ;

M = eye(n) - X*inv(X'*X)*X' ;

e0 = M*y ;

e1 = M*(W*y) ;


m = length(LAM);

LDET = zeros(m,1);

QUAD = zeros(m,1);

LIK = zeros(m,1);

for i = 1:m
   
   lam = LAM(i);
   
   e = e0 -lam*e1 ;
   
   LogDet = sum(log(1 - lam*val));
   
   LDET(i) = LogDet;
   
   QUAD(i) = -(n/2) * log((1/n)*e'*e);
   
   LIK(i) =  -(n/2) * log((1/n)*e'*e) + LogDet;
   
end

plot(LAM,LIK);

title('LOG LIKELIHOOD');

pause;

clf;

plot(LAM,LDET,'r');

title('LOG DETERMINANT');

pause;

clf;

plot(LAM,QUAD,'r');

title('QUADRATIC TERM');


