***********************************; *** 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_AGE = 'Standard: AGE' ; label S_BMI = 'Standard: BMI' ; label S_BP = 'Standard: BP' ; label S_GLU = 'Standard: GLU' ; label S_NPREG = 'Standard: NPREG' ; label H11 = 'Hidden: H1=1' ; label I_DIAB = 'Into: DIAB' ; label U_DIAB = 'Unnormalized Into: DIAB' ; label P_DIAB1 = 'Predicted: DIAB=1' ; label P_DIAB0 = 'Predicted: DIAB=0' ; label _WARN_ = "Warnings"; *** *************************; *** Checking missing input Interval *** *************************; IF NMISS( AGE , BMI , BP , GLU , NPREG ) THEN DO; SUBSTR(_WARN_, 1, 1) = 'M'; _DM_BAD = 1; END; *** *************************; *** Writing the Node interval ; *** *************************; IF _DM_BAD EQ 0 THEN DO; S_AGE = -3.09480671785996 + 0.09484544032669 * AGE ; S_BMI = -5.32959881569554 + 0.16043343816061 * BMI ; S_BP = -6.23186009075952 + 0.08732987795346 * BP ; S_GLU = -3.94797602854736 + 0.03208953936883 * GLU ; S_NPREG = -1.10577327481295 + 0.31325021949375 * NPREG ; END; ELSE DO; IF MISSING( AGE ) THEN S_AGE = . ; ELSE S_AGE = -3.09480671785996 + 0.09484544032669 * AGE ; IF MISSING( BMI ) THEN S_BMI = . ; ELSE S_BMI = -5.32959881569554 + 0.16043343816061 * BMI ; IF MISSING( BP ) THEN S_BP = . ; ELSE S_BP = -6.23186009075952 + 0.08732987795346 * BP ; IF MISSING( GLU ) THEN S_GLU = . ; ELSE S_GLU = -3.94797602854736 + 0.03208953936883 * GLU ; IF MISSING( NPREG ) THEN S_NPREG = . ; ELSE S_NPREG = -1.10577327481295 + 0.31325021949375 * NPREG ; END; *** *************************; *** Writing the Node H1 ; *** *************************; IF _DM_BAD EQ 0 THEN DO; H11 = -0.13470432545521 * S_AGE + -0.0751700700911 * S_BMI + 0.02528903275213 * S_BP + -0.20489654863922 * S_GLU + -0.06349033919258 * S_NPREG ; H11 = 0.42868131819443 + H11 ; H11 = TANH(H11 ); END; ELSE DO; H11 = .; END; *** *************************; *** Writing the Node DIAB ; *** *************************; IF _DM_BAD EQ 0 THEN DO; P_DIAB1 = -4.09710579923875 * H11 ; P_DIAB1 = 1.22565368536601 + P_DIAB1 ; P_DIAB0 = 0; _MAX_ = MAX (P_DIAB1 , P_DIAB0 ); _SUM_ = 0.; P_DIAB1 = EXP(P_DIAB1 - _MAX_); _SUM_ = _SUM_ + P_DIAB1 ; P_DIAB0 = EXP(P_DIAB0 - _MAX_); _SUM_ = _SUM_ + P_DIAB0 ; P_DIAB1 = P_DIAB1 / _SUM_; P_DIAB0 = P_DIAB0 / _SUM_; END; ELSE DO; P_DIAB1 = .; P_DIAB0 = .; END; IF _DM_BAD EQ 1 THEN DO; P_DIAB1 = 0.39; P_DIAB0 = 0.61; END; *** Update Posterior Probabilities; *** Decision Processing; label D_DIAB_ = 'Decision: DIAB' ; label EP_DIAB_ = 'Expected Profit: DIAB' ; length D_DIAB_ $ 5; D_DIAB_ = ' '; EP_DIAB_ = .; *** Compute Expected Consequences and Choose Decision; _decnum = 1; drop _decnum; D_DIAB_ = '1' ; EP_DIAB_ = P_DIAB1 * 1 + P_DIAB0 * 0; *** End Decision Processing ; *** *************************; *** Writing the I_DIAB AND U_DIAB ; *** *************************; _MAXP_ = P_DIAB1 ; I_DIAB = "1 " ; U_DIAB = 1; IF( _MAXP_ LT P_DIAB0 ) THEN DO; _MAXP_ = P_DIAB0 ; I_DIAB = "0 " ; U_DIAB = 0; END; ********************************; *** End Scoring Code for Neural; ********************************;