2015-03-03 3 views
1

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

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

ответ

3

Я сделал небольшой скрипт, который показывает основы перфектуры с учетом ввода в два столбца матрицы. Если вы выполните это в 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. 
Смежные вопросы