## Polynomial Distributed Lags Using %PDL

```/*--------------------------------------------------------------

SAS Sample Library

Name: modex05.sas
Description: Example program from SAS/ETS User's Guide,
The MODEL Procedure
Title: Polynomial Distributed Lags Using %PDL
Product: SAS/ETS Software
Keys: nonlinear simultaneous equation models
PROC: MODEL
Notes:

--------------------------------------------------------------*/

/*--------------------------------------------------------------*/
/*  Generate Simulated Data for a Linear Model with a PDL on X  */
/*        y = 10 + x(6,2) + e                                   */
/*        pdl(x) = -5.*(lg)**2 + 1.5*(lg) + 0.                  */
/*--------------------------------------------------------------*/
data pdl;
pdl2=-5.; pdl1=1.5; pdl0=0;
array zz(i) z0-z6;
do i=1 to 7;
z=i-1;
zz=pdl2*z**2 + pdl1*z + pdl0;
end;
do n=-11 to 30;
x  =10*ranuni(1234567)-5;
pdl=z0*x + z1*xl1 + z2*xl2 + z3*xl3 + z4*xl4 + z5*xl5 + z6*xl6;
e  =10*rannor(1234567);
y  =10+pdl+e;
if n>=1 then output;
xl6=xl5; xl5=xl4; xl4=xl3; xl3=xl2; xl2=xl1; xl1=x;
end;
run;

title1 'Polynomial Distributed Lag Example';
title3 'Estimation of PDL(6,4) Model-- No Endpoint Restrictions';

proc model data=pdl;
parms int;                  /* declare the intercept parameter */
%pdl( xpdl, 6, 4 )          /* declare the lag distribution */
y = int + %pdl( xpdl, x );  /* define the model equation */
fit y / list;               /* estimate the parameters */
run;

title3 'Estimation of PDL(6,4) Model-- Both Endpoint Restrictions';

proc model data=pdl ;
parms int;                  /* declare the intercept parameter */
%pdl( xpdl, 6, 4, r=both )  /* declare the lag distribution */
y = int + %pdl( xpdl, x );  /* define the model equation */
fit y /list;                /* estimate the parameters */
run;

title3 'Estimation of PDL(6,2) Model-- With XPDL_0 Dropped';

proc model data=pdl list;
parms int;                  /* declare the intercept parameter */
%pdl( xpdl, 6, 2 )          /* declare the lag distribution */
y = int + %pdl( xpdl, x );  /* define the model equation */
xpdl_0 =0;
fit y drop=xpdl_0;          /* estimate the parameters */
run;

```