ROC analysis (Receiver Operating Characteristic example)

Contents

Receiver Operating Characteristic example

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

ROC analysis (Receiver Operating Characteristic example)

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');
title('Receiver Operating Characteristic')
hold off

ROC analysis (Receiver Operating Characteristic example)

Vadim Victor

Vadim V. Strijov, Data Analysis & Machine Learning professor at the FRCCSC of the RAS, Doctor of Physics and mathematics sciences

You may also like...