/*START_NOCLEAN_*/ *--------------------------------------------------------------*; * ENSEMBLE T2414A9T : score code; *--------------------------------------------------------------*; *--------------------------------------------------------------*; * Number of imported models: 3; * Temporary variables; DROP C_T2414A9T_P_BAD1; DROP C_T2414A9T_P_BAD0; C_T2414A9T_P_BAD1= 0.0; C_T2414A9T_P_BAD0= 0.0; *--------------------------------------------------------------*; * ENSEMBLE T2414A9T; * Scoring code for model: 1 of 3; *-------------------------------------------------------------*; * CODE_CLEAN * *; * Code substitution: ARRAY RGDRF->A7777 *; * Code substitution: ARRAY RGDRU->A3047 *; * Code substitution: GOTO RGDR1->G8255 *; * Code substitution: ARRAY RGDEMA->A35254 *; * Code substitution: GOTO RGDEEX->G99687 *; * Code substitution: ARRAY RGDEBE->A60357 *; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * START_CHUNK 1496352744.8:T18O3J73 *; *-------------------------------------------------------------*; * END_CHUNK 1496352744.8:T18O3J73 *; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * START_CHUNK 1496352745.3:T1F4ZPSM *; *-------------------------------------------------------------*; * END_CHUNK 1496352745.3:T1F4ZPSM *; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * START_CHUNK 1496354579.2:T0S40XU2 *; *-------------------------------------------------------------*; * END_INLINE *; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * START_INLINE *; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * ; * TOOL : Replacement ; * TYPE : MODIFY ; * NODE : Replacement [T0S40XU2] ; * ; *-------------------------------------------------------------*; *; *Replacement (Class Variables); *; length _RFormat $200; drop _RFormat; _RFormat = ''; _RFormat = put(REASON, $7.); %DMNORMIP(_RFormat); _RFormat = put(JOB, $7.); %DMNORMIP(_RFormat); *; *Replacement (Interval Variables); *; if LOAN lt 0 and LOAN ne . then LOAN = 0; if MORTDUE lt 0 and MORTDUE ne . then MORTDUE = 0; if VALUE lt 0 and VALUE ne . then VALUE = 0; if YOJ gt 60 then YOJ = 60; if YOJ lt 0 and YOJ ne . then YOJ = 0; if DEROG lt 0 and DEROG ne . then DEROG = 0; if DELINQ lt 0 and DELINQ ne . then DELINQ = 0; if CLAGE lt 0 and CLAGE ne . then CLAGE = 0; if NINQ lt 0 and NINQ ne . then NINQ = 0; if CLNO lt 0 and CLNO ne . then CLNO = 0; if DEBTINC lt 0 and DEBTINC ne . then DEBTINC = 0; *; *MOST FREQUENT VALUE (COUNT); *; if REASON = '' then REASON = 'DebtCon'; if JOB = '' then JOB = 'Other'; *; *MEAN-MEDIAN-MIDRANGE AND ROBUST ESTIMATES; *; if LOAN = . then LOAN = 16200; if MORTDUE = . then MORTDUE = 64674; if VALUE = . then VALUE = 89191; if YOJ = . then YOJ = 7; if DEROG = . then DEROG = 0; if DELINQ = . then DELINQ = 0; if CLAGE = . then CLAGE = 174.977052821834; if NINQ = . then NINQ = 0; if CLNO = . then CLNO = 21.247293049249; if DEBTINC = . then DEBTINC = 34.7457431518313; *-------------------------------------------------------------*; * END_CHUNK 1496354579.2:T0S40XU2 *; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * START_CHUNK 1496355680.2:T298EUBJ *; *-------------------------------------------------------------*; * END_INLINE *; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * START_INLINE *; *-------------------------------------------------------------*; /*START_PRECODE proc format; value NINQ_T5_ low-0.5='0001:low-0.5' 0.5-1.5='0002:0.5-1.5' 1.5-high='0003:1.5-high' ; ; END_PRECODE*/ format INDELINQ BEST12.; label INDELINQ='DELINQ > 0'; INDELINQ=DELINQ > 0; format INDEROG BEST12.; label INDEROG='DEROG > 0'; INDEROG=DEROG > 0; drop LOAN; format LOAN_9QB BEST12.; label LOAN_9QB='log(LOAN)'; if LOAN > 0 then LOAN_9QB=log(LOAN); else LOAN_9QB = .; drop MORTDUE; format MORT_G0S BEST12.; label MORT_G0S='log(MORTDUE)'; if MORTDUE > 0 then MORT_G0S=log(MORTDUE); else MORT_G0S = .; drop VALUE; format VALU_2UI BEST12.; label VALU_2UI='log(VALUE)'; if VALUE > 0 then VALU_2UI=log(VALUE); else VALU_2UI = .; drop YOJ; format YOJ_34KW BEST12.; label YOJ_34KW='log(YOJ)'; if YOJ > 0 then YOJ_34KW=log((YOJ + 1)); else YOJ_34KW = .; drop DEROG; drop DELINQ; drop CLAGE; format CLAG_K4W BEST12.; label CLAG_K4W='log(CLAGE)'; if CLAGE > 0 then CLAG_K4W=log(CLAGE); else CLAG_K4W = .; drop NINQ; format NINQ_76F NINQ_T5_17.; label NINQ_76F='Bucket(NINQ)'; NINQ_76F=NINQ; *-------------------------------------------------------------*; * END_CHUNK 1496355680.2:T298EUBJ *; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * START_CHUNK 1496606708.9:T1W9VXIC *; *-------------------------------------------------------------*; * ; * TOOL : Regression ; * TYPE : MODEL ; * NODE : Regression [T1W9VXIC] ; * ; *-------------------------------------------------------------*; * ; * MODEL NAME : Untitled ; * DESCRIPTION : ; * ; * TARGET : BAD ; *-------------------------------------------------------------*; *************************************; *** begin scoring code for regression; *************************************; length _WARN_ $4; label _WARN_ = 'Warnings' ; length I_BAD $ 12; label I_BAD = 'Into: BAD' ; *** Target Values; array A7777 [2] $12 _temporary_ ('1' '0' ); label U_BAD = 'Unnormalized Into: BAD' ; *** Unnormalized target values; ARRAY A3047[2] _TEMPORARY_ (1 0); *** Generate dummy variables for BAD ; drop _Y ; label F_BAD = 'From: BAD' ; length F_BAD $ 12; F_BAD = put( BAD , BEST12. ); %DMNORMIP( F_BAD ) if missing( BAD ) then do; _Y = .; end; else do; if F_BAD = '0' then do; _Y = 1; end; else if F_BAD = '1' then do; _Y = 0; end; else do; _Y = .; end; end; drop _DM_BAD; _DM_BAD=0; *** Check CLAG_K4W for missing values ; if missing( CLAG_K4W ) then do; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; *** Check DEBTINC for missing values ; if missing( DEBTINC ) then do; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; *** Check INDELINQ for missing values ; if missing( INDELINQ ) then do; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; *** Check INDEROG for missing values ; if missing( INDEROG ) then do; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; *** Check LOAN_9QB for missing values ; if missing( LOAN_9QB ) then do; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; *** Check MORT_G0S for missing values ; if missing( MORT_G0S ) then do; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; *** Check YOJ_34KW for missing values ; if missing( YOJ_34KW ) then do; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; *** Generate dummy variables for JOB ; drop _2_0 _2_1 _2_2 _2_3 _2_4 ; *** encoding is sparse, initialize to zero; _2_0 = 0; _2_1 = 0; _2_2 = 0; _2_3 = 0; _2_4 = 0; if missing( JOB ) then do; _2_0 = .; _2_1 = .; _2_2 = .; _2_3 = .; _2_4 = .; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; else do; length _dm7 $ 7; drop _dm7 ; %DMNORMCP( JOB , _dm7 ) _dm_find = 0; drop _dm_find; if _dm7 <= 'OTHER' then do; if _dm7 <= 'OFFICE' then do; if _dm7 = 'MGR' then do; _2_0 = 1; _dm_find = 1; end; else do; if _dm7 = 'OFFICE' then do; _2_1 = 1; _dm_find = 1; end; end; end; else do; if _dm7 = 'OTHER' then do; _2_2 = 1; _dm_find = 1; end; end; end; else do; if _dm7 <= 'SALES' then do; if _dm7 = 'PROFEXE' then do; _2_3 = 1; _dm_find = 1; end; else do; if _dm7 = 'SALES' then do; _2_4 = 1; _dm_find = 1; end; end; end; else do; if _dm7 = 'SELF' then do; _2_0 = -1; _2_1 = -1; _2_2 = -1; _2_3 = -1; _2_4 = -1; _dm_find = 1; end; end; end; if not _dm_find then do; _2_0 = .; _2_1 = .; _2_2 = .; _2_3 = .; _2_4 = .; substr(_warn_,2,1) = 'U'; _DM_BAD = 1; end; end; *** Generate dummy variables for NINQ_76F ; drop _3_0 _3_1 ; if missing( NINQ_76F ) then do; _3_0 = .; _3_1 = .; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; else do; length _dm17 $ 17; drop _dm17 ; _dm17 = put( NINQ_76F , NINQ_T5_17. ); %DMNORMIP( _dm17 ) if _dm17 = '0001:LOW-0.5' then do; _3_0 = 1; _3_1 = 0; end; else if _dm17 = '0003:1.5-HIGH' then do; _3_0 = -1; _3_1 = -1; end; else if _dm17 = '0002:0.5-1.5' then do; _3_0 = 0; _3_1 = 1; end; else do; _3_0 = .; _3_1 = .; substr(_warn_,2,1) = 'U'; _DM_BAD = 1; end; end; *** If missing inputs, use averages; if _DM_BAD > 0 then do; _P0 = 0.2023079697; _P1 = 0.7976920303; goto G8255; end; *** Compute Linear Predictor; drop _TEMP; drop _LP0; _LP0 = 0; *** Effect: CLAG_K4W ; _TEMP = CLAG_K4W ; _LP0 = _LP0 + ( -0.78690764730093 * _TEMP); *** Effect: DEBTINC ; _TEMP = DEBTINC ; _LP0 = _LP0 + ( 0.06939430135677 * _TEMP); *** Effect: INDELINQ ; _TEMP = INDELINQ ; _LP0 = _LP0 + ( 1.60218107435311 * _TEMP); *** Effect: INDEROG ; _TEMP = INDEROG ; _LP0 = _LP0 + ( 1.36551647764982 * _TEMP); *** Effect: JOB ; _TEMP = 1; _LP0 = _LP0 + ( 0.02339994301053) * _TEMP * _2_0; _LP0 = _LP0 + ( -0.57526212520046) * _TEMP * _2_1; _LP0 = _LP0 + ( -0.0385300730656) * _TEMP * _2_2; _LP0 = _LP0 + ( 0.00059411038964) * _TEMP * _2_3; _LP0 = _LP0 + ( 0.49313841586884) * _TEMP * _2_4; *** Effect: LOAN_9QB ; _TEMP = LOAN_9QB ; _LP0 = _LP0 + ( -0.5320614549918 * _TEMP); *** Effect: MORT_G0S ; _TEMP = MORT_G0S ; _LP0 = _LP0 + ( -0.34740449441048 * _TEMP); *** Effect: NINQ_76F ; _TEMP = 1; _LP0 = _LP0 + ( -0.21792456211849) * _TEMP * _3_0; _LP0 = _LP0 + ( -0.17253416894202) * _TEMP * _3_1; *** Effect: YOJ_34KW ; _TEMP = YOJ_34KW ; _LP0 = _LP0 + ( -0.27770947608238 * _TEMP); *** Naive Posterior Probabilities; drop _MAXP _IY _P0 _P1; _TEMP = 9.15445900940893 + _LP0; if (_TEMP < 0) then do; _TEMP = exp(_TEMP); _P0 = _TEMP / (1 + _TEMP); end; else _P0 = 1 / (1 + exp(-_TEMP)); _P1 = 1.0 - _P0; G8255: *** Residuals; if (_Y = .) then do; R_BAD1 = .; R_BAD0 = .; end; else do; label R_BAD1 = 'Residual: BAD=1' ; label R_BAD0 = 'Residual: BAD=0' ; R_BAD1 = - _P0; R_BAD0 = - _P1; select( _Y ); when (0) R_BAD1 = R_BAD1 + 1; when (1) R_BAD0 = R_BAD0 + 1; end; end; *** Update Posterior Probabilities; *** Decision Processing; label D_BAD_ = 'Decision: BAD' ; label EP_BAD_ = 'Expected Profit: BAD' ; label BP_BAD_ = 'Best Profit: BAD' ; label CP_BAD_ = 'Computed Profit: BAD' ; length D_BAD_ $ 5; D_BAD_ = ' '; EP_BAD_ = .; BP_BAD_ = .; CP_BAD_ = .; *** Compute Expected Consequences and Choose Decision; _decnum = 1; drop _decnum; D_BAD_ = '1' ; EP_BAD_ = _P0 * 1 + _P1 * 0; *** Decision Matrix; array A35254 [2,1] _temporary_ ( /* row 1 */ 1 /* row 2 */ 0 ); *** Find Index of Target Category; drop _tarnum; select( F_BAD ); when('1' ) _tarnum = 1; when('0' ) _tarnum = 2; otherwise _tarnum = 0; end; if _tarnum <= 0 then goto G99687; *** Computed Consequence of Chosen Decision; CP_BAD_ = A35254 [_tarnum,_decnum]; *** Best Possible Consequence of Any Decision without Cost; array A60357 [2] _temporary_ ( 1 0); BP_BAD_ = A60357 [_tarnum]; G99687:; *** End Decision Processing ; *** Posterior Probabilities and Predicted Level; label P_BAD1 = 'Predicted: BAD=1' ; label P_BAD0 = 'Predicted: BAD=0' ; P_BAD1 = _P0; _MAXP = _P0; _IY = 1; P_BAD0 = _P1; if (_P1 - _MAXP > 1e-8) then do; _MAXP = _P1; _IY = 2; end; I_BAD = A7777[_IY]; U_BAD = A3047[_IY]; *************************************; ***** end scoring code for regression; *************************************; *-------------------------------------------------------------*; * END_CHUNK 1496606708.9:T1W9VXIC *; *-------------------------------------------------------------*; *; * ENSEMBLE T2414A9T; * Probabilities for 1 of 3 imported models; *; C_T2414A9T_P_BAD1= C_T2414A9T_P_BAD1 + P_BAD1; C_T2414A9T_P_BAD0= C_T2414A9T_P_BAD0 + P_BAD0; * ENSEMBLE T2414A9T; * Scoring code for model: 2 of 3; *-------------------------------------------------------------*; *-------------------------------------------------------------*; *-------------------------------------------------------------*; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * START_CHUNK 1496533641.1:T0J6IXKQ *; *-------------------------------------------------------------*; * ; * TOOL : Tree ; * TYPE : MODEL ; * NODE : Tree [T0J6IXKQ] ; * ; *-------------------------------------------------------------*; * ; * MODEL NAME : Untitled ; * DESCRIPTION : ; * ; * TARGET : BAD ; *-------------------------------------------------------------*; ****************************************************************; ****** DECISION TREE SCORING CODE ******; ****************************************************************; ****** LENGTHS OF NEW CHARACTER VARIABLES ******; LENGTH I_BAD $ 12; LENGTH F_BAD $ 12; LENGTH _WARN_ $ 4; ****** LABELS FOR NEW VARIABLES ******; LABEL _NODE_ = 'Node'; LABEL _LEAF_ = 'Leaf'; LABEL P_BAD1 = 'Predicted: BAD=1'; LABEL P_BAD0 = 'Predicted: BAD=0'; LABEL I_BAD = 'Into: BAD'; LABEL U_BAD = 'Unnormalized Into: BAD'; LABEL F_BAD = 'From: BAD'; LABEL R_BAD1 = 'Residual: BAD=1'; LABEL R_BAD0 = 'Residual: BAD=0'; LABEL _WARN_ = 'Warnings'; ****** TEMPORARY VARIABLES FOR FORMATTED VALUES ******; LENGTH _ARBFMT_2 $ 12; DROP _ARBFMT_2; _ARBFMT_2 = ' '; /* Initialize to avoid warning. */ _ARBFMT_2 = PUT( BAD , BEST12.); %DMNORMCP( _ARBFMT_2, F_BAD ); ****** ASSIGN OBSERVATION TO NODE ******; IF NOT MISSING(DEBTINC ) AND DEBTINC < 44.7336573513381 THEN DO; IF NOT MISSING(VALUE ) AND VALUE < 303749 THEN DO; IF NOT MISSING(DELINQ ) AND 4.5 <= DELINQ THEN DO; _NODE_ = 9; _LEAF_ = 4; P_BAD1 = 0.9090909090909; P_BAD0 = 0.09090909090909; I_BAD = '1'; U_BAD = 1; END; ELSE DO; IF NOT MISSING(DELINQ ) AND 0.5 <= DELINQ THEN DO; IF NOT MISSING(DEBTINC ) AND DEBTINC < 9.5345039737618 THEN DO; _NODE_ = 22; _LEAF_ = 2; P_BAD1 = 1; P_BAD0 = 0; I_BAD = '1'; U_BAD = 1; END; ELSE DO; _NODE_ = 23; _LEAF_ = 3; P_BAD1 = 0.14159292035398; P_BAD0 = 0.85840707964601; I_BAD = '0'; U_BAD = 0; END; END; ELSE DO; _NODE_ = 14; _LEAF_ = 1; P_BAD1 = 0.04316546762589; P_BAD0 = 0.9568345323741; I_BAD = '0'; U_BAD = 0; END; END; END; ELSE DO; _NODE_ = 5; _LEAF_ = 5; P_BAD1 = 0.85; P_BAD0 = 0.15; I_BAD = '1'; U_BAD = 1; END; END; ELSE DO; IF NOT MISSING(DELINQ ) AND 2.5 <= DELINQ THEN DO; _NODE_ = 7; _LEAF_ = 10; P_BAD1 = 0.96808510638297; P_BAD0 = 0.03191489361702; I_BAD = '1'; U_BAD = 1; END; ELSE DO; IF NOT MISSING(CLAGE ) AND 154.733333333333 <= CLAGE THEN DO; IF NOT MISSING(DEROG ) AND 0.5 <= DEROG THEN DO; _NODE_ = 19; _LEAF_ = 9; P_BAD1 = 0.7560975609756; P_BAD0 = 0.24390243902439; I_BAD = '1'; U_BAD = 1; END; ELSE DO; IF NOT MISSING(VALUE ) AND 58675 <= VALUE THEN DO; _NODE_ = 25; _LEAF_ = 8; P_BAD1 = 0.26388888888888; P_BAD0 = 0.73611111111111; I_BAD = '0'; U_BAD = 0; END; ELSE DO; _NODE_ = 24; _LEAF_ = 7; P_BAD1 = 0.62222222222222; P_BAD0 = 0.37777777777777; I_BAD = '1'; U_BAD = 1; END; END; END; ELSE DO; _NODE_ = 10; _LEAF_ = 6; P_BAD1 = 0.71343283582089; P_BAD0 = 0.2865671641791; I_BAD = '1'; U_BAD = 1; END; END; END; ***** RESIDUALS R_ *************; IF F_BAD NE '1' AND F_BAD NE '0' THEN DO; R_BAD1 = .; R_BAD0 = .; END; ELSE DO; R_BAD1 = -P_BAD1; R_BAD0 = -P_BAD0; SELECT( F_BAD ); WHEN( '1' ) R_BAD1 = R_BAD1 +1; WHEN( '0' ) R_BAD0 = R_BAD0 +1; END; END; ****************************************************************; ****** END OF DECISION TREE SCORING CODE ******; ****************************************************************; *-------------------------------------------------------------*; * END_CHUNK 1496533641.1:T0J6IXKQ *; *-------------------------------------------------------------*; *; * ENSEMBLE T2414A9T; * Probabilities for 2 of 3 imported models; *; C_T2414A9T_P_BAD1= C_T2414A9T_P_BAD1 + P_BAD1; C_T2414A9T_P_BAD0= C_T2414A9T_P_BAD0 + P_BAD0; * ENSEMBLE T2414A9T; * Scoring code for model: 3 of 3; *-------------------------------------------------------------*; *-------------------------------------------------------------*; *-------------------------------------------------------------*; *-------------------------------------------------------------*; *-------------------------------------------------------------*; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * START_CHUNK 1496355652.1:T2T4LC7W *; *-------------------------------------------------------------*; * ; * TOOL : Tree ; * TYPE : MODEL ; * NODE : Tree [T2T4LC7W] ; * ; *-------------------------------------------------------------*; * ; * MODEL NAME : Untitled ; * DESCRIPTION : ; * ; * TARGET : BAD ; *-------------------------------------------------------------*; ****************************************************************; ****** DECISION TREE SCORING CODE ******; ****************************************************************; ****** LENGTHS OF NEW CHARACTER VARIABLES ******; LENGTH I_BAD $ 12; LENGTH F_BAD $ 12; LENGTH _WARN_ $ 4; ****** LABELS FOR NEW VARIABLES ******; LABEL _NODE_ = 'Node'; LABEL _LEAF_ = 'Leaf'; LABEL P_BAD1 = 'Predicted: BAD=1'; LABEL P_BAD0 = 'Predicted: BAD=0'; LABEL I_BAD = 'Into: BAD'; LABEL U_BAD = 'Unnormalized Into: BAD'; LABEL F_BAD = 'From: BAD'; LABEL R_BAD1 = 'Residual: BAD=1'; LABEL R_BAD0 = 'Residual: BAD=0'; LABEL _WARN_ = 'Warnings'; ****** TEMPORARY VARIABLES FOR FORMATTED VALUES ******; LENGTH _ARBFMT_2 $ 12; DROP _ARBFMT_2; _ARBFMT_2 = ' '; /* Initialize to avoid warning. */ _ARBFMT_2 = PUT( BAD , BEST12.); %DMNORMCP( _ARBFMT_2, F_BAD ); ****** ASSIGN OBSERVATION TO NODE ******; IF NOT MISSING(DELINQ ) AND 1.5 <= DELINQ THEN DO; IF NOT MISSING(DELINQ ) AND 4.5 <= DELINQ THEN DO; _NODE_ = 7; _LEAF_ = 12; P_BAD1 = 0.96226415094339; P_BAD0 = 0.0377358490566; I_BAD = '1'; U_BAD = 1; END; ELSE DO; IF NOT MISSING(DEBTINC ) AND DEBTINC < 34.7286963508109 THEN DO; _NODE_ = 12; _LEAF_ = 8; P_BAD1 = 0.21428571428571; P_BAD0 = 0.78571428571428; I_BAD = '0'; U_BAD = 0; END; ELSE DO; IF NOT MISSING(DEBTINC ) AND 35.316473572313 <= DEBTINC THEN DO; IF NOT MISSING(DEBTINC ) AND 43.0650683036912 <= DEBTINC THEN DO; _NODE_ = 39; _LEAF_ = 11; P_BAD1 = 1; P_BAD0 = 0; I_BAD = '1'; U_BAD = 1; END; ELSE DO; _NODE_ = 38; _LEAF_ = 10; P_BAD1 = 0.16666666666666; P_BAD0 = 0.83333333333333; I_BAD = '0'; U_BAD = 0; END; END; ELSE DO; _NODE_ = 24; _LEAF_ = 9; P_BAD1 = 0.82795698924731; P_BAD0 = 0.17204301075268; I_BAD = '1'; U_BAD = 1; END; END; END; END; ELSE DO; IF NOT MISSING(DEBTINC ) AND DEBTINC < 34.5573090588684 THEN DO; _NODE_ = 4; _LEAF_ = 1; P_BAD1 = 0.03457688808007; P_BAD0 = 0.96542311191992; I_BAD = '0'; U_BAD = 0; END; ELSE DO; IF NOT MISSING(DEBTINC ) AND DEBTINC < 34.7585678967268 THEN DO; IF NOT MISSING(CLAGE ) AND 178.083333333333 <= CLAGE THEN DO; IF NOT MISSING(DEROG ) AND 0.5 <= DEROG THEN DO; _NODE_ = 31; _LEAF_ = 5; P_BAD1 = 0.77777777777777; P_BAD0 = 0.22222222222222; I_BAD = '1'; U_BAD = 1; END; ELSE DO; _NODE_ = 30; _LEAF_ = 4; P_BAD1 = 0.28476821192052; P_BAD0 = 0.71523178807947; I_BAD = '0'; U_BAD = 0; END; END; ELSE DO; IF NOT MISSING(DEBTINC ) AND DEBTINC < 34.7400101565034 THEN DO; _NODE_ = 28; _LEAF_ = 2; P_BAD1 = 0.18181818181818; P_BAD0 = 0.81818181818181; I_BAD = '0'; U_BAD = 0; END; ELSE DO; _NODE_ = 29; _LEAF_ = 3; P_BAD1 = 0.66055045871559; P_BAD0 = 0.3394495412844; I_BAD = '1'; U_BAD = 1; END; END; END; ELSE DO; IF NOT MISSING(DEBTINC ) AND 44.7336573513381 <= DEBTINC THEN DO; _NODE_ = 21; _LEAF_ = 7; P_BAD1 = 0.93103448275862; P_BAD0 = 0.06896551724137; I_BAD = '1'; U_BAD = 1; END; ELSE DO; _NODE_ = 20; _LEAF_ = 6; P_BAD1 = 0.07721280602636; P_BAD0 = 0.92278719397363; I_BAD = '0'; U_BAD = 0; END; END; END; END; ***** RESIDUALS R_ *************; IF F_BAD NE '1' AND F_BAD NE '0' THEN DO; R_BAD1 = .; R_BAD0 = .; END; ELSE DO; R_BAD1 = -P_BAD1; R_BAD0 = -P_BAD0; SELECT( F_BAD ); WHEN( '1' ) R_BAD1 = R_BAD1 +1; WHEN( '0' ) R_BAD0 = R_BAD0 +1; END; END; ****************************************************************; ****** END OF DECISION TREE SCORING CODE ******; ****************************************************************; *-------------------------------------------------------------*; * END_CHUNK 1496355652.1:T2T4LC7W *; *-------------------------------------------------------------*; *-------------------------------------------------------------*; * START_CHUNK 1496355680.1:T0UEO52B *; *-------------------------------------------------------------*; * ; * TOOL : Neural Network ; * TYPE : MODEL ; * NODE : Neural Network [T0UEO52B] ; * ; *-------------------------------------------------------------*; * ; * MODEL NAME : Untitled ; * DESCRIPTION : Neural Network ; * ; * TARGET : BAD ; *-------------------------------------------------------------*; ***********************************; *** 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; ********************************; *-------------------------------------------------------------*; * END_CHUNK 1496355680.1:T0UEO52B *; *-------------------------------------------------------------*; *; * ENSEMBLE T2414A9T; * Probabilities for 3 of 3 imported models; *; C_T2414A9T_P_BAD1= C_T2414A9T_P_BAD1 + P_BAD1; C_T2414A9T_P_BAD0= C_T2414A9T_P_BAD0 + P_BAD0; *--------------------------------------------------------------*; * ENSEMBLE T2414A9T : average imported probabilities; P_BAD1= C_T2414A9T_P_BAD1 / 3; C_T2414A9T_P_BAD1= 0.0; P_BAD0= C_T2414A9T_P_BAD0 / 3; C_T2414A9T_P_BAD0= 0.0; *--------------------------------------------------------------*; *--------------------------------------------------------------*; * Ensemble: BAD: Classification Vars; *--------------------------------------------------------------*; length I_BAD $32; length F_BAD $32; label I_BAD = "Into: BAD"; label F_BAD = "From: BAD"; length _format $200; drop _format; _format= PUT( BAD, BEST12. ); %DMNORMCP(_format,F_BAD); _format= ' '; _p_= 0; drop _p_; if P_BAD1 > _p_ then do ; _p_= P_BAD1 ; _format= " 1" ; end ; if P_BAD0 > _p_ then do ; _p_= P_BAD0 ; _format= " 0" ; end ; %DMNORMCP(_format,I_BAD); *; *--------------------------------------------------------------*; * Ensemble: BAD: Decisions; *--------------------------------------------------------------*; *** Warning Variable; length _warn_ $4; label _warn_ = 'Warnings'; drop _decwarn; _decwarn = 0; *** Check Posterior Probabilities; if not (n( P_BAD1 ) & ( P_BAD1 <= 1) & (0 <= P_BAD1 ) & n( P_BAD0 ) & ( P_BAD0 <= 1) & (0 <= P_BAD0 ) ) then do; _decwarn = 1; substr(_warn_,3,1) = 'P'; P_BAD1 = .; P_BAD0 = .; goto _demi; end; *** Update Posterior Probabilities; P_BAD1 = P_BAD1 * 0.198322147651 / 0.198322147651; P_BAD0 = P_BAD0 * 0.80167785234899 / 0.80167785234899; drop _sum; _sum = P_BAD1 + P_BAD0 ; if _sum > 0 then do; P_BAD1 = P_BAD1 / _sum; P_BAD0 = P_BAD0 / _sum; end; *** Decision Processing; label D_BAD_ = 'Decision: BAD' ; label EP_BAD_ = 'Expected Profit: BAD' ; label BP_BAD_ = 'Best Profit: BAD' ; label CP_BAD_ = 'Computed Profit: BAD' ; length D_BAD_ $ 5; *** Initialize to Missing if Target Used; _demi:; D_BAD_ = ' '; EP_BAD_ = .; BP_BAD_ = .; CP_BAD_ = .; if _decwarn then goto _deex; *** Compute Expected Consequences and Choose Decision; _decnum = 1; drop _decnum; D_BAD_ = '1' ; EP_BAD_ = P_BAD1 * 1 + P_BAD0 * 0; *** Decision Matrix; array _dema [2,1] _temporary_ ( /* row 1 */ 1 /* row 2 */ 0 ); *** Normalize Target Value; length _targnor $ %DMNORLEN; drop _targnor; length _format $200; drop _format; _format = put( BAD , BEST12. ); %DMNORMCP(_format,_targnor); *** Find Index of Target Category; drop _tarnum; select( _targnor ); when('1' ) _tarnum = 1; when('0' ) _tarnum = 2; otherwise _tarnum = 0; end; if _tarnum <= 0 then goto _deex; *** Computed Consequence of Chosen Decision; CP_BAD_ = _dema [_tarnum,_decnum]; *** Best Possible Consequence of Any Decision without Cost; array _debe [2] _temporary_ ( 1 0); BP_BAD_ = _debe [_tarnum]; _deex:; *** End Decision Processing ; *--------------------------------------------------------------*; * ENSEMBLE T2414A9T - END OF CODE; *--------------------------------------------------------------*; /*END_NOCLEAN_*/