Predicting Mortality of ICU Patients: The PhysioNet/Computing in Cardiology Challenge 2012 1.0.0
(622 bytes)
function [out] = condit(s, par)
pt_l = .01;
pt_u = .99;
if nargin == 1
s = sort(s(isfinite(s)));
s = s(round(length(s)*pt_l) : round(length(s)*pt_u));
out.range = s([1 end]);
ls = length(s);
y = norminv(linspace(pt_l, pt_u, ls)');
r = [ones(ls,1) s log(s+1)];
if length(find(diff(s))) < 2 % less than 3 distinct values
out.beta = [-mean(s); 1; 0] / (out.range(2) - out.range(1));
return
end
out.beta = ((r' * r) \ (r' * y)) / 3;
else
s = min(max(s, par.range(1)), par.range(2));
beta = par.beta;
r = [ones(length(s),1) s log(s+1)];
out = r * beta;
end