| Description of slgetroc |
slgetroc
PURPOSE 
SLGETROC Computes some point from ROC Curve
SYNOPSIS 
function [thr, fa, fr] = slgetroc(thrs, fars, frrs, item, itempara)
DESCRIPTION 
CROSS-REFERENCE INFORMATION 
This function calls:
This function is called by:
SUBFUNCTIONS 
SOURCE CODE 
0001 function [thr, fa, fr] = slgetroc(thrs, fars, frrs, item, itempara)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042 if nargin < 4
0043 raise_lackinput('slgetroc', 5);
0044 end
0045 if ~isequal(size(thrs), size(fars)) || ~isequal(size(thrs), size(frrs))
0046 error('sltoolbox:sizmismatch', ...
0047 'The sizes of thrs, fars and frrs are not consistent');
0048 end
0049 thrs = thrs(:);
0050 fars = fars(:);
0051 frrs = frrs(:);
0052
0053
0054 fars = make_mono(fars);
0055 frrs = make_mono(frrs);
0056
0057
0058 usemethod = 'linear';
0059 switch item
0060 case 'ratio'
0061 ratios = frrs ./ max(fars, eps);
0062 if nargin < 5 || isempty(itempara)
0063 itempara = 1;
0064 end
0065 thr = interp1(ratios, thrs, itempara, usemethod);
0066 case 'fixfa'
0067 if nargin < 5 || isempty(itempara)
0068 itempara = 0.1;
0069 end
0070 thr = interp1(fars, thrs, itempara, usemethod);
0071 case 'fixfr'
0072 if nargin < 5 || isempty(itempara)
0073 itempara = 0.1;
0074 end
0075 thr = interp1(frrs, thrs, itempara, usemethod);
0076 case 'fixth'
0077 if nargin < 5 || isempty(itempara)
0078 error('You must specify the parameter for fixth item');
0079 end
0080 thr = itempara;
0081 case 'best'
0082 if nargin < 5 || isempty(itempara)
0083 itempara = 0.5;
0084 end
0085 [mv, p] = min(itempara * fars + (1 - itempara) * frrs);
0086 slignorevars(mv);
0087 thr = thrs(p);
0088 otherwise
0089 error('sltoolbox:invalidarg', ...
0090 'Invalid item %s for slgetroc', item);
0091 end
0092
0093 fa = interp1(thrs, fars, thr, usemethod);
0094 fr = interp1(thrs, frrs, thr, usemethod);
0095
0096
0097 function f = make_mono(f)
0098
0099 df = diff(f);
0100
0101 if f(end) >= f(1)
0102 df = max(df, eps);
0103 else
0104 df = min(df, -eps);
0105 end
0106 f = [f(1); f(1) + cumsum(df)];
0107
0108
0109
0110
0111
Generated on Wed 20-Sep-2006 12:43:11 by m2html © 2003
|
|