Входные данные для ROC-кривой

У меня есть матрица из 2 столбцов, где в каждой строке приведены наблюдения за здоровыми (столбец 1) и нездоровыми (столбец 2) пациентами. Кроме того, у меня есть 5 значений раздела, которые следует использовать для построения кривой ROC. Не могли бы вы помочь мне понять, как получить входные данные из этих данных для функции perfcurve?

Спасибо за любой ответ!


person Pooh    schedule 03.03.2015    source источник


Ответы (1)


Я сделал небольшой скрипт, который показывает основы perfcurve при вводе матрицы из двух столбцов. Если вы выполните это в MATLAB и внимательно посмотрите на это, у вас не должно возникнуть проблем с использованием perfcurve

%Simulate your data as Gaussian data with 1000 measurements in each group. 
%Lets give them a mean difference of 1 and a standard deviation of 1.
Data = zeros(1000,2);
Data(:,1) = normrnd(0,1,1000,1);
Data(:,2) = normrnd(1,1,1000,1);

%Now the data is reshaped to a vector (required for perfcurve) and  I create the labels.
Data = reshape(Data,2000,1);
Labels = zeros(size(Data,1),1);
Labels(end/2+1:end) = 1; 
%Your bottom half of the data (initially second column) is now group 1, the
%top half is group 0. 
%Lets set the positive class to group 1.
PosClass = 1;

%Now we have all required variables to call perfcurve. We will give
%perfcurve the 'Xvals' input to define the values at which the ROC curve is
%calculated. This parameter can be left out to let matlab calculate the
%curve at all values. 
[X Y] = perfcurve(Labels,Data,PosClass, 'Xvals', 0:0.25:1);

%Lets plot this
plot(X,Y)

%One limitation in scripting it like this is that you must have equal group
%sizes for healthy and sick. If you reshape your Data matrix to a vector
%and keep a seperate labels vector then you can also handle groups of
%different sizes. 
person Poelie    schedule 03.03.2015