to the list of examples

## Contents

ROC analysis provides tools to select possibly optimal models and to discard suboptimal ones independently from (and prior to specifying) the cost context or the class distribution. ROC analysis is related in a direct and natural way to cost/benefit analysis of diagnostic decision making. See http://en.wikipedia.org/wiki/Receiver_Operating_Characteristic for more information.

```% demo_ROC.m
```

## Construct the sample set

```P = 100; % Number of True,  P=TP+FN  (True posititive + False negative)
N = 100; % Number of False, N=FP+TN  (True posititive + False negative)
muP = -0.5;% Mean of positive
sgP = 1; % Variance of positive
muN = 0.5; % Mean of negative
sgN = 1; % Variance of negative

x=[sgP*randn(P,1)+muP; sgN*randn(N,1)+muN];
y=[ones(P,1);   zeros(N,1)];
```

## Plot the histogram

```figure
hold on
[hP, xP]= hist(x(y==1));  % Histogram vercor for the Positive, along with the histogram values
[hN, xN] = hist(x(y==0)); % The same for the Negative
bar([xP',xN'],[hP',hN']); % Plot both histograms
legend('Positive','Negative');
xlabel('Independent variable, x');
ylabel('Number of the objects');
title('Histograms of two classes');
axis tight
hold off
``` ## Construct the ROC

```nSamples = 100; % Number of samples in the threshold
vecThresh = linspace(min(x), max(x), nSamples); % Vector of various thesholds

ROC = []; % ROC is {(FPR, TPR)}set
for t = vecThresh
idxLeft = find(x<=t);
idxRight = find(x>t);
TP = length(find(y(idxLeft)==1));    % Number of the True positive items
TN = length(find(y(idxRight)==0)); % Number of the True negative items

TPR = TP/P;               % Fals positive rate
SPC = TN/N;               % Sensitivity

ROC = [ROC;[1-SPC, TPR]];% Add new element ti the ROC curve
end
```

## Plot the ROC curve

```figure
hold on
plot([0,1],[0,1],'k:'); % Plot the random decision line
plot(ROC(:,1), ROC(:,2)); % Plot the ROC itself
xlabel ('False positive rate, FPR=1-SPC');
ylabel ('True positive rate, TPR'); 