For many people viewing this thread, I suspect the answer provided by @WendyCzika will be most useful:
I think you need to move the Model Comparison node before the End Groups node, so it will pick the best model for each group. Then you should see in the Score Code in the End Groups node, there is (or could be) a different model used for each group.
See this tip for more info: https://communities.sas.com/t5/SAS-Communities-Library/Tip-How-to-Build-Stratified-Models-using-the-...
For those who wish to fit a model to each subgroup but want to score all subgroups on all models, a different approach is necessary. As you have already found, Group Processing will not help you accomplish this. The only way to get the individual subgroup models is to fit them in separate paths where you have filtered out the subgroup of interest. You can then Score the entire training data set using the model from each subgroup path. You would then need to merge those data sets together by the ID variable in order to obtain scores for all observations on each subgroup model.
You have to be careful because the default predicted target variable will be the same for all subset models. When you score the whole data table on each model, you will want to create a new predicted target variable for that model so that you can tell them apart. For example, if you have a binary target BAD which takes on values 1 and 0 where 1 is the event of interest, SAS Enterprise Miner would create the prediction variable P_BAD1 which is of the form P_<target variable name><target variable level> to store the predictions from each subset model. After scoring all the observations, create a new variable which equals the prediction variable of interest. For example,
P_Group1_Reg = P_BAD1;
and then export just the ID information and the new prediction variable. Once you have done this for each subset, you can merge the resulting data sets (containing only the ID and the new prediction variable for each observation) by the ID variable you are using. You can later merge in any additional information from the original data set such as the actual target value and any key predictors.
If you are using partitioning. do the Data Partition node first but be sure to stratify on both the target (if categorical) and the subgroup variable. Then create a separate path for each subgroup, using a Filter node to subset out the observations for the category of interest. After fitting the model, attach a Score node and use a new Input Data Source node which has the complete Training data (having all subsets) but set the role to Score so the full data can be scored. You can then create the new prediction variable in a subsequent SAS Code node following the Score node for each subgroup using something like the following assuming the flow has a single binary target, MyID = ID variable for each observation, P_Grp1_Reg = new prediction variable (denotes Group 1 & Regression model), and you are writing to the path defined by the MyLib library:
/*** BEGIN SAS CODE ***/
libname mylib " <path to the location where you are writing out the newly scored data> ";
data mylib.grp1scores;
set &EM_IMPORT_SCORE;
P_Grp1_Reg=%EM_BINARY_TARGET; * Note: assumes a single binary target is used;
keep MyID P_Grp1_Reg;
proc sort data=mylib.grp1scores;
by MyID; * prepare the data to be merged by MyID with the other subgroup scores;
run;
/*** END SAS CODE ***/
You could then easily merge all of the subgroup scores for the whole training data since they would have unique prediction variable names and common ID values sorted and ready for merging using something like the following:
/*** BEGIN SAS CODE ***/
libname mylib " <path to the location where you are writing out the newly scored data> ";
data mylib.allscores;
merge mylib.grp1scores
mylib.grp2scores
mylib.grp3scores;
by MyID;
run;
/*** END SAS CODE ***/
Hope this helps!
Doug
... View more