⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roc_dl.m

📁 The goal of SPID is to provide the user with tools capable to simulate, preprocess, process and clas
💻 M
字号:
function [auc1, se1, auc2, se2, p_value, z, se12]=roc_dl(t, y1, y2)
%t - target value of the test cases
%y1 - outcome of test 1;
%y2 - outcome of test 2;
%auc1, auc2 - area under ROC curve
%se1, se2 - standard deviation for estimated AUCs.
%p_value - significance level obtained from two-tailed z-test
%z - z statistics
%se12 - the correlation in AUCs between the two tests.

N=length(t);
idxt=find(t>0);  idxn=find(t<=0);
m=length(idxt);  n=length(idxn);
ps1=y1(idxt); qs1=y1(idxn);
for i=1:m,
    Vp1(i)=(sum(qs1<ps1(i))+sum(qs1==ps1(i))/2)/n;
end,
for i=1:n,
    Vq1(i)=(sum(ps1>qs1(i))+sum(ps1==qs1(i))/2)/m;
end,
auc1=mean(Vp1);

var1=(m*sum(Vp1.^2)-(sum(Vp1))^2)/(m*m*(m-1))+(n*sum(Vq1.^2)-(sum(Vq1))^2)/(n*n*(n-1));
se1=sqrt(var1);


if nargin==2,
    return,
end,

ps2=y2(idxt); qs2=y2(idxn);
for i=1:m,
    Vp2(i)=(sum(qs2<ps2(i))+sum(qs2==ps2(i))/2)/n;
end,
for i=1:n,
    Vq2(i)=(sum(ps2>qs2(i))+sum(ps2==qs2(i))/2)/m;
end,
auc2=sum(Vp2)/m;
var2=(m*sum(Vp2.^2) - (sum(Vp2))^2)/(m*m*(m-1))+(n*sum(Vq2.^2)-(sum(Vq2))^2)/(n*n*(n-1));
se2=sqrt(var2);

mVp1=mean(Vp1); mVp2=mean(Vp2); mVq1=mean(Vq1); mVq2=mean(Vq2);
cov12=sum((Vp1-mVp1).*(Vp2-mVp2))/(m*m-m)+sum((Vq1-mVq1).*(Vq2-mVq2))/(n*n-n);
se12=cov12/(se1*se2);

se_z=sqrt(var1+var2-2*cov12);

z=abs((auc1-auc2)/se_z);
p_value=2*(1-normcdf(z, 0, 1));

disp(['auc1=',num2str(auc1), ' ; se1=', num2str(se1), ' ; auc2=', num2str(auc2), ' ; se2=', num2str(se2)]),
disp(['p=',num2str(p_value), '; z=', num2str(z), ' ; r12=', num2str(se12)])
return,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -