Hi All,
Trying to write Proc DS2 code for SAS ESP model, below is the code exported from EMiner:-
length _WARN_ $4;
label _WARN_ = 'Warnings' ;
length I_Failure $ 12;
label I_Failure = 'Into: Failure' ;
*** Target Values;
array REG2DRF [2] $12 _temporary_ ('1' '0' );
label U_Failure = 'Unnormalized Into: Failure' ;
format U_Failure BEST12.;
*** Unnormalized target values;
ARRAY REG2DRU[2] _TEMPORARY_ (1 0);
drop _DM_BAD;
_DM_BAD=0;
*** Check Coolant_Level for missing values ;
if missing( Coolant_Level ) then do;
substr(_warn_,1,1) = 'M';
_DM_BAD = 1;
end;
*** Check Noise for missing values ;
if missing( Noise ) then do;
substr(_warn_,1,1) = 'M';
_DM_BAD = 1;
end;
*** Check Oil_Temparature for missing values ;
if missing( Oil_Temparature ) then do;
substr(_warn_,1,1) = 'M';
_DM_BAD = 1;
end;
*** Check Speed for missing values ;
if missing( Speed ) then do;
substr(_warn_,1,1) = 'M';
_DM_BAD = 1;
end;
*** If missing inputs, use averages;
if _DM_BAD > 0 then do;
_P0 = 0.2055244985;
_P1 = 0.7944755015;
goto REG2DR1;
end;
*** Compute Linear Predictor;
drop _TEMP;
drop _LP0;
_LP0 = 0;
*** Effect: Coolant_Level ;
_TEMP = Coolant_Level ;
_LP0 = _LP0 + ( 0.03716283327255 * _TEMP);
*** Effect: Noise ;
_TEMP = Noise ;
_LP0 = _LP0 + ( 1.90253038267245 * _TEMP);
*** Effect: Oil_Temparature ;
_TEMP = Oil_Temparature ;
_LP0 = _LP0 + ( 0.05477217759604 * _TEMP);
*** Effect: Speed ;
_TEMP = Speed ;
_LP0 = _LP0 + ( 0.00222458951872 * _TEMP);
*** Naive Posterior Probabilities;
drop _MAXP _IY _P0 _P1;
_TEMP = -180.133287153081 + _LP0;
if (_TEMP < 0) then do;
_TEMP = exp(_TEMP);
_P0 = _TEMP / (1 + _TEMP);
end;
else _P0 = 1 / (1 + exp(-_TEMP));
_P1 = 1.0 - _P0;
REG2DR1:
*** Posterior Probabilities and Predicted Level;
label P_Failure1 = 'Predicted: Failure=1' ;
label P_Failure0 = 'Predicted: Failure=0' ;
P_Failure1 = _P0;
_MAXP = _P0;
_IY = 1;
P_Failure0 = _P1;
if (_P1 > _MAXP + 1E-8) then do;
_MAXP = _P1;
_IY = 2;
end;
I_Failure = REG2DRF[_IY];
U_Failure = REG2DRU[_IY];
*************************************;
***** end scoring code for regression;
*************************************;
*------------------------------------------------------------*;
* TOOL: Score Node;
* TYPE: ASSESS;
* NODE: Score2;
*------------------------------------------------------------*;
*------------------------------------------------------------*;
* Score2: Creating Fixed Names;
*------------------------------------------------------------*;
LABEL EM_EVENTPROBABILITY = 'Probability for level 1 of Failure';
EM_EVENTPROBABILITY = P_Failure1;
LABEL EM_PROBABILITY = 'Probability of Classification';
EM_PROBABILITY =
max(
P_Failure1
,
P_Failure0
);
LENGTH EM_CLASSIFICATION $%dmnorlen;
LABEL EM_CLASSIFICATION = "Prediction for Failure";
EM_CLASSIFICATION = I_Failure;
I am able to convert most of the part except the array, can anyone please help me to convert this code in proc DS2 for use in SAS Event stream processing.
Thanks in advance.
Regards,
Swapna
The array only has 2 values so replace the logic in the IF THEN with a longer IF THEN type structure to get the values.
The array only has 2 values so replace the logic in the IF THEN with a longer IF THEN type structure to get the values.
Thank you Reeza for the help... 🙂
Regards,
Swapna
SAS Event stream processing:
Any suggestion to try SAS Event stream processing in python to cross validate.
Thanks
Whether you're already using SAS Event Stream Processing or thinking about it, this is where you can connect with your peers, ask questions and find resources.
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.