/*-----------------------------------------------------------------
            S A S   S A M P L E   L I B R A R Y                   
                                                                  
      NAME: hpqtrdt                                               
     TITLE: Details Section Examples for PROC HPQUANTSELECT       
                                                                  
   PRODUCT: HPSTAT                                                
    SYSTEM: ALL                                                   
      KEYS: Model Selection, ODS GRAPHICS                         
     PROCS: HPQUANTSELECT                                         
                                                                  
   SUPPORT: Yonggang Yao                                          
-----------------------------------------------------------------*/


/*-----------------------------------------------------------------
    Details Section: Class Variable Split Example                 
-----------------------------------------------------------------*/

data splitExample;
   length C2 $6;
   drop i;
   do i=1 to 1000;
     C1 = 1 + mod(i,6);
     if      i < 250 then C2 = 'Low';
     else if i < 500 then C2 = 'Medium';
     else                 C2 = 'High';
     x1 = ranuni(1);
     x2 = ranuni(1);
     y = x1+3*(C2 ='low')  + 10*(C1=3) +5*(C1=5) + rannor(1);
     output;
   end;
run;

proc hpquantselect data=splitExample;
   class C1(split) C2(order=data);
   model y = C1 C2 x1 x2/orderselect clb;
   selection method=forward;
run;

%let seed=321;
%let p=20;
%let n=3000;

data analysisData;
   array x{&p} x1-x&p;
   do i=1 to &n;
      do j=1 to &p;
         x{j} = ranuni(&seed);
      end;
      e  = ranuni(&seed);
      y  = x1 + x2 + x3 + e;
      output;
   end;
run;