score_ridge

PURPOSE ^

input: mdv structure as usual

SYNOPSIS ^

function [out] = score_ridge(mdv, hilo, lambda, crossval)

DESCRIPTION ^

input:  mdv  structure as usual
        hilo  (0's and 1's)  Ideally there will be a similar # of each.
        lambda = ridge parameter (optional)
        crossval:  whether to do cross validation.  This severely slows
        down the computation  (optional - default is no).

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [out] = score_ridge(mdv, hilo, lambda, crossval)
0002 %input:  mdv  structure as usual
0003 %        hilo  (0's and 1's)  Ideally there will be a similar # of each.
0004 %        lambda = ridge parameter (optional)
0005 %        crossval:  whether to do cross validation.  This severely slows
0006 %        down the computation  (optional - default is no).
0007 
0008 if nargin < 4
0009     crossval = 0;  % don't cross validate by default
0010 end
0011 if nargin < 3
0012     lambda = .01;
0013 end
0014 
0015 hilo(hilo ==0) = -1; % make 0's into ones.
0016 [nvars, npoints] = size(mdv);
0017     
0018 if crossval == 0
0019     ybar = mean(hilo);
0020     b = inv(mdv*mdv' + lambda*eye(nvars))*mdv*hilo;
0021 
0022     yhat = mdv'*b+ybar;
0023     out = sum(sign(yhat) == sign(hilo))/npoints;
0024 else
0025     results = zeros(npoints,1);
0026     for i = 1:npoints
0027         hilot = hilo([1:i-1,i+1:npoints]);
0028         mdvt = mdv(:,[1:i-1,i+1:npoints]);
0029         
0030         ybart = mean(hilot);
0031         b = inv(mdvt*mdvt' + lambda*eye(nvars))*mdvt*hilot;
0032         
0033         yhat = mdv(:,i)'*b+ybart;
0034         results(i)  = sign(yhat) == sign(hilo(i));
0035     end
0036     out = sum(results)/npoints;
0037 end

Generated on Thu 21-Jun-2012 15:39:23 by m2html © 2003