*************************************; *** begin scoring code for regression; *************************************; length _WARN_ $4; label _WARN_ = 'Warnings' ; drop _Y; _Y = DEBTINC ; drop _DM_BAD; _DM_BAD=0; *** Check CLNO for missing values ; if missing( CLNO ) then do; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; *** Check LOAN for missing values ; if missing( LOAN ) then do; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; *** Check MORTDUE for missing values ; if missing( MORTDUE ) then do; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; *** Generate dummy variables for BAD ; drop _0_0 ; if missing( BAD ) then do; _0_0 = .; substr(_warn_,1,1) = 'M'; _DM_BAD = 1; end; else do; length _dm12 $ 12; drop _dm12 ; _dm12 = put( BAD , BEST12. ); %DMNORMIP( _dm12 ) if _dm12 = '0' then do; _0_0 = 1; end; else if _dm12 = '1' then do; _0_0 = -1; end; else do; _0_0 = .; substr(_warn_,2,1) = 'U'; _DM_BAD = 1; end; 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_XA9 ; drop _3_0 _3_1 ; if missing( NINQ_XA9 ) 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_XA9 , NINQ_XA_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; _LP0 = 34.0613868387657; goto RGDR1; end; *** Compute Linear Predictor; drop _TEMP; drop _LP0; _LP0 = 0; *** Effect: BAD ; _TEMP = 1; _LP0 = _LP0 + ( -2.2573441613809) * _TEMP * _0_0; *** Effect: CLNO ; _TEMP = CLNO ; _LP0 = _LP0 + ( 0.08198916403656 * _TEMP); *** Effect: JOB ; _TEMP = 1; _LP0 = _LP0 + ( 0.56550046819045) * _TEMP * _2_0; _LP0 = _LP0 + ( 0.76187078856867) * _TEMP * _2_1; _LP0 = _LP0 + ( 0.6150907950906) * _TEMP * _2_2; _LP0 = _LP0 + ( -1.83222682834733) * _TEMP * _2_3; _LP0 = _LP0 + ( 1.35152814753051) * _TEMP * _2_4; *** Effect: LOAN ; _TEMP = LOAN ; _LP0 = _LP0 + ( 0.00007333541095 * _TEMP); *** Effect: MORTDUE ; _TEMP = MORTDUE ; _LP0 = _LP0 + ( 0.00002332054529 * _TEMP); *** Effect: NINQ_XA9 ; _TEMP = 1; _LP0 = _LP0 + ( -1.39668930643646) * _TEMP * _3_0; _LP0 = _LP0 + ( 0.07115563394829) * _TEMP * _3_1; *--- Intercept ---*; _LP0 = _LP0 + ( 31.2767362170143); RGDR1: *** Predicted Value, Error, and Residual; label P_DEBTINC = 'Predicted: DEBTINC' ; P_DEBTINC = _LP0; drop _R; if _Y = . then do; R_DEBTINC = .; end; else do; _R = _Y - _LP0; label R_DEBTINC = 'Residual: DEBTINC' ; R_DEBTINC = _R; end; *************************************; ***** end scoring code for regression; *************************************;