function [ROC, AUC, T] = rtsROC(thresholds, class) %Computes the ROC curves given a set of thresholds and class assignments % class = boolean array describing actual class membership % thresholds = threshold values for class assignment % ROC = ROC curve as column vectors (1 = 1-specificity, 2 = sensitivity) % AUC = area under the ROC curve computed using the trapezoid method % T = threshold values associated with each 1-specificity value nValues = length(thresholds); ROC = zeros(nValues, 2); %sort both arrays [T, ix] = sort(thresholds, 'descend'); C = class(ix); %compute the necessary global values P = nnz(class); N = nValues - P; for i = 1:nValues TP = nnz(C(1:i)); sensitivity = TP/P; FP = i - TP; FPR = FP/N; specificity = 1 - FPR; ROC(i, 1) = 1 - specificity; ROC(i, 2) = sensitivity; end AUC = trapz(ROC(:, 1), ROC(:, 2));