MATLAB中ROC曲线的垂直平均

MATLAB中ROC曲线的垂直平均,matlab,average,roc,Matlab,Average,Roc,有没有一种方法可以计算出几条直线的垂直平均数()?我在MATLAB指南中发现perfcurve可以做到这一点,但我不知道如何使用它。您可以将检测阵列的概率连接到一个矩阵中,然后取它们的平均值。假设误报警概率保存在行向量PFA中,检测概率值保存在行向量PD1,PD2,…: PDMatrix = [PD1; PD2; ...]; PDMean = mean(PDMatrix, 1); 这假设您的ROC曲线都具有相同的PFA值。如果情况并非如此,则可以创建一个公共PFA阵列,并在平均之前使用inte

有没有一种方法可以计算出几条直线的垂直平均数()?我在MATLAB指南中发现perfcurve可以做到这一点,但我不知道如何使用它。

您可以将检测阵列的概率连接到一个矩阵中,然后取它们的平均值。假设误报警概率保存在行向量
PFA
中,检测概率值保存在行向量
PD1
PD2
,…:

PDMatrix = [PD1; PD2; ...];
PDMean = mean(PDMatrix, 1);
这假设您的ROC曲线都具有相同的PFA值。如果情况并非如此,则可以创建一个公共PFA阵列,并在平均之前使用interp1对PD阵列重新采样。例如,如果您对从10^-6到“接近1”的对数间隔PFA值感兴趣,并且您的PFA/PD对具有在此范围内插值的数据,您可以执行以下操作

PFAResampled = logspace(-6, -.1, 1000);
PD1Resampled = interp1(PFA1, PD1, PFAResampled);
PD2Resampled = interp1(PFA2, PD2, PFAResampled);

在这之后,您可以按照上面所示连接并取平均值。

您可以将检测数组的概率连接到一个矩阵中,然后取它们的平均值。假设误报警概率保存在行向量
PFA
中,检测概率值保存在行向量
PD1
PD2
,…:

PDMatrix = [PD1; PD2; ...];
PDMean = mean(PDMatrix, 1);
这假设您的ROC曲线都具有相同的PFA值。如果情况并非如此,则可以创建一个公共PFA阵列,并在平均之前使用interp1对PD阵列重新采样。例如,如果您对从10^-6到“接近1”的对数间隔PFA值感兴趣,并且您的PFA/PD对具有在此范围内插值的数据,您可以执行以下操作

PFAResampled = logspace(-6, -.1, 1000);
PD1Resampled = interp1(PFA1, PD1, PFAResampled);
PD2Resampled = interp1(PFA2, PD2, PFAResampled);
在这之后,您可以连接并获取如上所示的平均值