Chapter Contents Previous 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;
```

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;
```

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 Previous Next Top