2015-03-03 131 views
1

我有一個2列矩陣,其中每行是健康(第1列)和非健康(2列)患者的觀察結果。此外,我有5個分區值應該用來繪製ROC曲線。 你能否幫我理解如何從perfcurve函數獲取這些數據的輸入?ROC曲線的輸入

謝謝你的回覆!

回答

3

我已經制作了一個小腳本,顯示給定兩列矩陣輸入的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.