0001 function [out] = score_ridge(mdv, hilo, lambda, crossval)
0002
0003
0004
0005
0006
0007
0008 if nargin < 4
0009 crossval = 0;
0010 end
0011 if nargin < 3
0012 lambda = .01;
0013 end
0014
0015 hilo(hilo ==0) = -1;
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