Example 4 for PROC HPREG

/****************************************************************/
/*          S A S   S A M P L E   L I B R A R Y                 */
/*                                                              */
/*    NAME: hpregex4                                            */
/*   TITLE: Example 4 for PROC HPREG                            */
/*    DESC: Simulated Data                                      */
/*                                                              */
/* PRODUCT: STAT                                                */
/*  SYSTEM: ALL                                                 */
/*    KEYS: SCREEN option, FORWARD  selection                   */
/*   PROCS: HPREG                                               */
/*                                                              */
/* SUPPORT: Robert Cohen                                        */
/****************************************************************/

  %let nObs      = 50000;
  %let nContIn   = 25;
  %let nContOut  = 500;
  %let nClassIn  = 5;
  %let nClassOut = 500;
  %let maxLevs   = 5;
  %let noiseScale= 1;

   data ex4Data;
     array xIn{&nContIn};
     array xOut{&nContOut};
     array cIn{&nClassIn};
     array cOut{&nClassOut};

     drop i j sign nLevs xBeta;

     do i=1 to &nObs;
        sign  = -1;
        xBeta = 0;
        do j=1 to dim(xIn);
           xIn{j} = ranuni(1);
           xBeta  = xBeta + j*sign*xIn{j};
           sign   = -sign;
        end;
        do j=1 to dim(xOut);
           xOut{j} = ranuni(1);
        end;

        xWeakIn1 = ranuni(1);
        xWeakin2 = ranuni(1);

        xBeta  = xBeta + 0.1*xWeakIn1+ 0.1*xWeakIn2;

        do j=1 to dim(cIn);
           nLevs  = 2 + mod(j,&maxlevs-1);
           cIn{j} = 1+int(ranuni(1)*nLevs);
           xBeta  = xBeta + j*sign*(cIn{j}-nLevs/2);
           sign   = -sign;
        end;

        do j=1 to dim(cOut);
           nLevs  = 2 + mod(j,&maxlevs-1);
           cOut{j} = 1+int(ranuni(1)*nLevs);
        end;

        y = xBeta + &noiseScale*rannor(1);

        output;
    end;
  run;


 proc hpreg data=ex4Data;
     class c: ;
     model y = x: c: ;
     selection method=forward screen(details=all)=100 20;
     performance details;
 run;


 proc hpreg data=ex4Data;
     class c: ;
     model y = x: c: ;
     selection method=forward;
     performance details;
 run;