Example 3 for PROC GLMSELECT
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: glsex3 */
/* TITLE: Example 3 for PROC GLMSELECT */
/* DESC: Donoho and Johnstone Bumps Function */
/* REF: Donoho, D.L., and Johnstone, I.M. (1994), "Ideal */
/* spatial adaptation via wavelet shrinkage," */
/* Biometrika, 81, 425-455. */
/* */
/* PRODUCT: STAT */
/* SYSTEM: ALL */
/* KEYS: Spline Effects, Scatter Plot Smoothing */
/* PROCS: GLMSELECT */
/* */
/* SUPPORT: Robert Cohen */
/****************************************************************/
%let random=12345;
data DoJoBumps;
keep x bumps bumpsWithNoise;
pi = arcos(-1);
do n=1 to 2048;
x=(2*n-1)/4096;
link compute;
bumpsWithNoise=bumps+rannor(&random)*sqrt(5);
output;
end;
stop;
compute:
array t(11) _temporary_ (.1 .13 .15 .23 .25 .4 .44 .65 .76 .78 .81);
array b(11) _temporary_ ( 4 5 3 4 5 4.2 2.1 4.3 3.1 5.1 4.2);
array w(11) _temporary_ (.005 .005 .006 .01 .01 .03 .01 .01 .005 .008 .005);
bumps=0;
do i=1 to 11;
bumps=bumps+b[i]*(1+abs((x-t[i])/w[i]))**-4;
end;
bumps=bumps*10.528514619;
return;
run;
proc sgplot data=DoJoBumps;
yaxis display=(nolabel);
series x=x y=bumpsWithNoise/lineattrs=(color=black);
series x=x y=bumps/lineattrs=(color=red);
run;
proc sgplot data=DoJoBumps;
yaxis display=(nolabel);
series x=x y=bumps;
loess x=x y=bumpsWithNoise / lineattrs=(color=red) nomarkers;
run;
proc sgplot data=DoJoBumps;
yaxis display=(nolabel);
series x=x y=bumps;
pbspline x=x y=bumpsWithNoise /
lineattrs=(color=red) nomarkers;
run;
proc glmselect data=dojoBumps;
effect spl = spline(x / knotmethod=multiscale(endscale=8)
split details);
model bumpsWithNoise=spl;
output out=out1 p=pBumps;
run;
proc sgplot data=out1;
yaxis display=(nolabel);
series x=x y=bumps;
series x=x y=pBumps / lineattrs=(color=red);
run;