***********************************; *** Begin Scoring Code for Neural; ***********************************; DROP _DM_BAD _EPS _NOCL_ _MAX_ _MAXP_ _SUM_ _NTRIALS; _DM_BAD = 0; _NOCL_ = .; _MAX_ = .; _MAXP_ = .; _SUM_ = .; _NTRIALS = .; _EPS = 1E-10; LENGTH _WARN_ $4 ; label S_CLAGE = 'Standard: CLAGE' ; label S_DEBTINC = 'Standard: DEBTINC' ; label S_DELINQ = 'Standard: DELINQ' ; label S_DEROG = 'Standard: DEROG' ; label H11 = 'Hidden: H1=1' ; label H12 = 'Hidden: H1=2' ; label H13 = 'Hidden: H1=3' ; label I_BAD = 'Into: BAD' ; label U_BAD = 'Unnormalized Into: BAD' ; label P_BAD1 = 'Predicted: BAD=1' ; label P_BAD0 = 'Predicted: BAD=0' ; label _WARN_ = "Warnings"; *** *************************; *** Checking missing input Interval *** *************************; IF NMISS( CLAGE , DEBTINC , DELINQ , DEROG ) THEN DO; SUBSTR(_WARN_, 1, 1) = 'M'; _DM_BAD = 1; END; *** *************************; *** Writing the Node INTERVAL ; *** *************************; IF _DM_BAD EQ 0 THEN DO; S_CLAGE = -2.12683050688911 + 0.01177148130024 * CLAGE ; S_DEBTINC = -4.23565806211598 + 0.12460936685911 * DEBTINC ; S_DELINQ = -0.36236948891134 + 0.86388886156464 * DELINQ ; S_DEROG = -0.27736891913986 + 1.31617735515411 * DEROG ; END; ELSE DO; IF MISSING( CLAGE ) THEN S_CLAGE = . ; ELSE S_CLAGE = -2.12683050688911 + 0.01177148130024 * CLAGE ; IF MISSING( DEBTINC ) THEN S_DEBTINC = . ; ELSE S_DEBTINC = -4.23565806211598 + 0.12460936685911 * DEBTINC ; IF MISSING( DELINQ ) THEN S_DELINQ = . ; ELSE S_DELINQ = -0.36236948891134 + 0.86388886156464 * DELINQ ; IF MISSING( DEROG ) THEN S_DEROG = . ; ELSE S_DEROG = -0.27736891913986 + 1.31617735515411 * DEROG ; END; *** *************************; *** Writing the Node H1 ; *** *************************; IF _DM_BAD EQ 0 THEN DO; H11 = -0.35031711792682 * S_CLAGE + -70.4969860436658 * S_DEBTINC + 0.18449108575908 * S_DELINQ + 0.33413930152401 * S_DEROG ; H12 = -0.12865053781085 * S_CLAGE + -7.94458016426562 * S_DEBTINC + 0.18612942323723 * S_DELINQ + 0.17289501453247 * S_DEROG ; H13 = 0.26925274534102 * S_CLAGE + -0.82220975009789 * S_DEBTINC + -0.17305706864271 * S_DELINQ + -0.16019236495051 * S_DEROG ; H11 = 4.8216825096159 + H11 ; H12 = 0.80832411979041 + H12 ; H13 = 1.70003455124041 + H13 ; H11 = TANH(H11 ); H12 = TANH(H12 ); H13 = TANH(H13 ); END; ELSE DO; H11 = .; H12 = .; H13 = .; END; *** *************************; *** Writing the Node BAD ; *** *************************; IF _DM_BAD EQ 0 THEN DO; P_BAD1 = -3.1171082152167 * H11 + 3.63547940017616 * H12 + -7.5972528821107 * H13 ; P_BAD1 = 3.87905811594848 + P_BAD1 ; P_BAD0 = 0; _MAX_ = MAX (P_BAD1 , P_BAD0 ); _SUM_ = 0.; P_BAD1 = EXP(P_BAD1 - _MAX_); _SUM_ = _SUM_ + P_BAD1 ; P_BAD0 = EXP(P_BAD0 - _MAX_); _SUM_ = _SUM_ + P_BAD0 ; P_BAD1 = P_BAD1 / _SUM_; P_BAD0 = P_BAD0 / _SUM_; END; ELSE DO; P_BAD1 = .; P_BAD0 = .; END; IF _DM_BAD EQ 1 THEN DO; P_BAD1 = 0.198322147651; P_BAD0 = 0.80167785234899; END; *** Update Posterior Probabilities; *** Decision Processing; label D_BAD_ = 'Decision: BAD' ; label EP_BAD_ = 'Expected Profit: BAD' ; length D_BAD_ $ 5; D_BAD_ = ' '; EP_BAD_ = .; *** Compute Expected Consequences and Choose Decision; _decnum = 1; drop _decnum; D_BAD_ = '1' ; EP_BAD_ = P_BAD1 * 1 + P_BAD0 * 0; *** End Decision Processing ; *** *************************; *** Writing the I_BAD AND U_BAD ; *** *************************; _MAXP_ = P_BAD1 ; I_BAD = "1 " ; U_BAD = 1; IF( _MAXP_ LT P_BAD0 ) THEN DO; _MAXP_ = P_BAD0 ; I_BAD = "0 " ; U_BAD = 0; END; ********************************; *** End Scoring Code for Neural; ********************************;