C REFERENCE: DELONG ET AL BIOMETRICS,1988 C THIS PROGRAM COMPARES AREAS UNDER 2 OR MORE (POSSIBLY) CORRELATED ROC C CURVES USING A NONPARAMETRIC APPROACH IMPLICIT INTEGER(A-Z) DOUBLE PRECISION VAB(12,300),VNO(12,300),AREA(12) real SNOR(12,12),SABN(12,12) dimension normal(12,300),abnormal(12,300) character*20 junk DOUBLE PRECISION S01M(12,12),SUM,SM(12,12),S10M(12,12) C DATA INPUT PRINT *,'INTERACTIVE DATA INPUT(1) OR BATCH(2)?' read *,method IF(METHOD .EQ. 2)GOTO 50 PRINT *,'HOW MANY MODALITIES?' READ *,NUM PRINT *,'HOW MANY CATEGORIES?' READ *,CAT PRINT *,'HOW MANY NORMALS?' READ *,TNOR PRINT *,'HOW MANY ABNORMALS?' READ *,TABN PRINT *,'INPUT NORMAL DATA AT THIS TIME' DO 30,A=1,TNOR READ *,(NORMAL(Z,A),Z=1,NUM) 30 CONTINUE PRINT *,'INPUT ABNORMAL DATA AT THIS TIME' DO 40,A=1,TABN READ *,(ABNORMAL(Z,A),Z=1,NUM) 40 CONTINUE GOTO 70 50 CONTINUE c c c c ******The name and path of your input datafile goes here: ****** OPEN(UNIT=1,FILE='',STATUS='OLD') c c c ******The number of modalities being compared goes in here *** num=2 c c *****The number of total normal and the number of total abnormals c goes here ********* c tnor=4 c tabn=4 c 51 FORMAT(i2) 52 FORMAT(I2) 53 FORMAT(I2) 54 FORMAT(I3) do 1000, ral=1,6 read(1,51)tabn DO 60,K=1,tabn READ(1,55)(ABNORMAL(Z,K),Z=1,NUM) c c c *********Data format goes here ***************** 55 FORMAT(i3,1x,i2) c 60 CONTINUE read(1,51)tnor DO 65,K=1,TNOR READ(1,55,END=66)(NORMAL(Z,K),Z=1,NUM) 65 CONTINUE GOTO 70 66 CONTINUE PRINT *,'DATA INPUT PROBLEM' STOP 70 CONTINUE c print *,tabn,tnor c C COMPUTING THE STRUCTURAL COMPONENTS DO 100,P=1,NUM DO 80,R=1,TABN SUM=0.0 DO 75,Q=1,TNOR IF(ABNORMAL(P,R) .GT. NORMAL(P,Q))SUM=SUM+1.0 IF(ABNORMAL(P,R) .EQ. NORMAL(P,Q))SUM=SUM+0.5 75 CONTINUE VAB(P,R)=SUM/REAL(TNOR) 80 CONTINUE DO 90,R=1,TNOR SUM=0.0 DO 85,Q=1,TABN IF(NORMAL(P,R) .LT. ABNORMAL(P,Q))SUM=SUM+1.0 IF(NORMAL(P,R) .EQ. ABNORMAL(P,Q))SUM=SUM+0.5 85 CONTINUE VNO(P,R)=SUM/REAL(TABN) 90 CONTINUE 100 CONTINUE C COMPUTE THE ESTIMATES OF THE AREAS DO 110,P=1,NUM SUM=0.0 DO 105,L=1,TABN SUM=SUM+VAB(P,L) 105 CONTINUE AREA(P)=SUM/REAL(TABN) 110 CONTINUE C COMPUTE THE ESTIMATED COVARIANCE MATRIX OF THE AREA VECTOR DO 150,K=1,NUM DO 145,M=K,NUM SUM=0.0 DO 135,I=1,TABN SUM=SUM+((VAB(K,I)-AREA(K))*(VAB(M,I)-AREA(M))) 135 CONTINUE S10M(K,M)=SUM/REAL(TABN-1) S10M(M,K)=S10M(K,M) 145 CONTINUE 150 CONTINUE DO 190,K=1,NUM DO 185,M=K,NUM SUM=0.0 DO 175,I=1,TNOR SUM=SUM+((VNO(K,I)-AREA(K))*(VNO(M,I)-AREA(M))) 175 CONTINUE S01M(K,M)=SUM/REAL(TNOR-1) S01M(M,K)=S01M(K,M) 185 CONTINUE 190 CONTINUE DO 200,K=1,NUM DO 195,M=K,NUM SM(K,M)=(S10M(K,M)/REAL(TABN))+(S01M(K,M)/REAL(TNOR)) SM(M,K)=SM(K,M) 195 CONTINUE 200 CONTINUE C SUMMARIZE CATEGORIES FOR OUTPUT DO 220,K=1,NUM DO 210,H=1,TNOR SNOR(K,NORMAL(K,H))=SNOR(K,NORMAL(K,H))+1 210 CONTINUE DO 215,H=1,TABN SABN(K,ABNORMAL(K,H))=SABN(K,ABNORMAL(K,H))+1 215 CONTINUE 220 CONTINUE C OUTPUT THE SUMMARIZED DATA AND THE ESTIMATES OPEN(UNIT=2,FILE='DELONG.OUT',STATUS='NEW') DO 300,K=1,NUM WRITE(2,225)K 225 FORMAT(' MODALITY ',I1) WRITE(2,226)TNOR,(SNOR(K,G),G=1,CAT) 226 FORMAT(' NOISE :TOTAL ',I3,' ',10(I3)) WRITE(2,227)TABN,(SABN(K,G),G=1,CAT) 227 FORMAT(' SIGNAL :TOTAL ',I3,' ',10(I3)) WRITE(2,228)AREA(K) 228 FORMAT(' WMW ESTIMATE OF AREA: ',F6.4) 300 CONTINUE WRITE(2,301) 301 FORMAT(' ESTIMATED COVARIANCE MATRIX OF AREA VECTOR') DO 310,K=1,NUM WRITE(2,303)(SM(K,A),A=1,NUM) 303 FORMAT(' ',12(F9.6,2X)) 310 CONTINUE c 1000 continue c STOP END