Chapter Contents
Chapter Contents
Previous
Previous
Next
Next
The TRANSREG Procedure

Smoothing Splines

You can use PROC TRANSREG to output to a SAS data set the same smoothing splines that the GPLOT procedure creates. The SMOOTH transformation is a noniterative transformation for smoothing splines. The smoothing parameter can be specified with either the SM= or the PARAMETER= o-option. The independent variable transformation (Tx in this case) contains the results. The GPLOT request y*x=2 with I=SM50 creates the same curve as Tx*x.

   title 'Smoothing Splines';

   data x;
      do x = 1 to 100 by 2;
         do rep = 1 to 3;
            y = log(x) + sin(x / 10) + normal(7);
            output;
            end;
         end;
   run;

   proc transreg;
      model identity(y) = smooth(x / sm=50);
      output;
   run;

   %let opts = haxis=axis2 vaxis=axis1 frame cframe=ligr;
   proc gplot;
      axis1 minor=none label=(angle=90 rotate=0);
      axis2 minor=none;
      plot y*x=1 y*x=2 tx*x=3 / &opts overlay;
      symbol1 color=blue   v=star i=none;
      symbol2 color=yellow v=none i=sm50;
      symbol3 color=cyan   v=dot  i=none;
   run; quit;

tregd1.gif (5378 bytes)

Figure 65.5: Smoothing Spline Example 1

When you cross a SMOOTH variable with a CLASS variable, specify ZERO=NONE with the CLASS expansion and the AFTER t-option with the SMOOTH transformation so that separate functions are found within each group.

   title2 'Two Groups';

   data x;
      do x = 1 to 100;
         group = 1;
         do rep = 1 to 3;
            y = log(x) + sin(x / 10) + normal(7);
            output;
            end;
         group = 2;
         do rep = 1 to 3;
            y = -log(x) + cos(x / 10) + normal(7);
            output;
            end;
         end;
   run;

   proc transreg;
      model identity(y) = class(group / zero=none) |
                          smooth(x / after sm=50);
      output out=curves;
   run;

   data curves2;
      set curves;
      if group1 = 0 then tgroup1x = .;
      if group2 = 0 then tgroup2x = .;
   run;

   %let opts = haxis=axis2 vaxis=axis1 frame cframe=ligr;
   proc gplot;
      axis1 minor=none label=(angle=90 rotate=0);
      axis2 minor=none;
      plot y*x=1 tgroup1x*x=2 tgroup2x*x=2 / &opts overlay;
      symbol1 color=blue   v=star i=none;
      symbol2 color=yellow v=none i=join;
   run; quit;

tregd2.gif (8046 bytes)

Figure 65.6: Smoothing Spline Example 2

The SMOOTH transformation is valid only with independent variables; typically, it is used in models with a single independent and a single dependent variable. When there are multiple independent variables designated as SMOOTH, the TRANSREG procedure tries to smooth the ith independent variable using the ith dependent variable as a target. When there are more independent variables than dependent variables, the last dependent variable is reused as often as is necessary. For example, for the model

   model identity(y1-y3) = smooth(x1-x5);

smoothing is based on the pairs (y1, x1), (y2, x2), (y3, x3), (y3, x4), and (y3, x5).

The SMOOTH transformation is a noniterative transformation; smoothing occurs once per variable before the iterations begin. In contrast, SSPLINE provides an iterative smoothing spline transformation. It does not generally minimize squared error; hence, divergence is possible with SSPLINE.

Chapter Contents
Chapter Contents
Previous
Previous
Next
Next
Top
Top

Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.