/*-----------------------------------------------------------------
            S A S   S A M P L E   L I B R A R Y                   
                                                                  
      NAME: hpqtrex1                                              
     TITLE: Example 1 for PROC HPQUANTSELECT                      
      DESC: Simulated Data                                        
                                                                  
   PRODUCT: HPSTAT                                                
    SYSTEM: ALL                                                   
      KEYS: Model Selection, Validation                           
     PROCS: HPQUANTSELECT                                         
                                                                  
   SUPPORT: Yonggang Yao                                          
-----------------------------------------------------------------*/

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

data analysisData;
   array x{&p} x1-x&p;
   do i=1 to &n;
      U  = ranuni(&seed);
      x1 = ranuni(&seed);
      x2 = ranexp(&seed);
      x3 = abs(rannor(&seed));
      y  = x1*(U-0.1) + x2*(U*U-0.25) + x3*(exp(U)-exp(0.9));
      do j=4 to &p;
         x{j} = ranuni(&seed);
      end;
      output;
   end;
run;

proc hpquantselect data=analysisData;
   model y= x1-x&p / quantile=0.1 0.5 0.9 stb clb;
   selection method=forward;
   output out=out p=pred;
run;