PROGRAM CMP C C* This program computes scores, analytic derivative and finite difference C* derivatives. C REAL P(3), B(3) REAL orsscp(3), orsscb(3) db = .02 dp = .02 WRITE (6,*) ' Enter F, H, O, N' READ (5,*) frcs, hits, obs, nn C* alpha = obs / FLOAT (nn) bias = frcs / obs pod = hits / obs rn = FLOAT (nn) C WRITE (6,*) ' B, P, alpha = ', bias, pod, alpha C C* Odds ratio skill score. C P(1) = pod - dp P(2) = pod P(3) = pod + dp B(1) = bias - db B(2) = bias B(3) = bias + db DO i = 1, 3 ddcb = P(i) - 2. * alpha * P(i) * ( B(2) + 1 - P(i) ) + + alpha * B(2) ddcp = P(2) - 2. * alpha * P(2) * ( B(i) + 1 - P(2) ) + + alpha * B(i) orsscb(i) = ( P(i) - alpha * B(2) ) / ddcb orsscp(i) = ( P(2) - alpha * B(i) ) / ddcp If ( i .eq. 2 ) THEN dd = P(i) - 2. * alpha * P(i) * ( B(i) + 1 - P(i) ) + + alpha * B(i) orss = ( P(i) - alpha * B(i) ) / dd dsdb = 2. * alpha * P(i) / ( dd * dd ) dsdb = dsdb * ( P(i) - 1. + alpha - alpha * P(i) ) dsdp = 2. * alpha / ( dd * dd ) tmp = B(i) - P(i)*P(i) - alpha*B(i)*B(i) - alpha*B(i) tmp = tmp + 2.*alpha*B(i)*P(i) dsdp = dsdp * tmp acpr = P(i)*(1.-P(i))*(1.-alpha) / tmp END IF END DO fdsdb = (orsscp(3) - orsscp(1)) / (2.*db) fdsdp = (orsscb(3) - orsscb(1)) / (2.*dp) cprb1 = (P(2)*(1. - alpha)) / (1. + P(2) - 2.*alpha) C* WRITE (6,*) ' Odds Ratio Skill Score = ', orss WRITE (6,*) ' Analytic dsdb = ', dsdb WRITE (6,*) ' Finite diff dsdb = ', fdsdb WRITE (6,*) ' Analytic dsdp = ', dsdp WRITE (6,*) ' Finite diff dsdp = ', fdsdp WRITE (6,*) ' CPR = ', -dsdb/dsdp WRITE (6,*) ' Analytic CPR = ' ,acpr WRITE (6,*) ' CPR (B=1) = ', cprb1 C* STOP END