*---------------------------------------------------------------* | (demo 2 A) | | Using old f(D), verify that old and new level, slope, | | curvature match. | *---------------------------------------------------------------*; data last; input Y @@; date=intnx('month','01dec83'd,_n_); format date monyy.; cards; 10 . . 12 18 40 . 13 18 . . . 10 . 10 10 ; proc print; proc expand data=last from=month to=month out=out1; convert Y = ynew; id date; data out1; merge out1 last; by date; proc plot data=out1; plot Y*date="*" Ynew*date = "-" /overlay vpos=20 hpos=50; proc expand data=last from=month to=week out=out2 outest=spline; convert Y = Ywk; id date; proc print data=spline(obs=5); run; data spline; set spline; if quad=. then quad=0; if cubic=. then cubic=0; L0=lag(constant); LL=lag(linear); LQ=lag(quad); LC=lag(cubic); D=date-lag(date); OldY=L0+LL*D+LQ*D*D+LC*D*D*D; Old1=LL+2*D*LQ + 3*D*D*LC; Old2=2*LQ+6*D*LC; Quad2=quad*2; proc print; var D constant OldY Old1 Linear Old2 Quad2; run; /* ----------------------------------------output ----------------------------------------- The SAS System Obs D CONSTANT OldY Old1 LINEAR Old2 Quad2 1 . -23.4075 . . 1.07766 . 0.000000 2 31 10.0000 10.0000 1.07766 1.07766 0.000000 -0.042864 3 121 18.0000 18.0000 0.63630 0.63630 0.035569 0.035569 4 31 40.0000 40.0000 0.30511 0.30511 -0.056936 -0.056936 5 61 13.0000 13.0000 -0.20153 -0.20153 0.040325 0.040325 6 31 18.0000 18.0000 0.26190 0.26190 -0.010426 -0.010426 7 122 10.0000 10.0000 -0.08456 -0.08456 0.004746 0.004746 8 120 6.5027 6.5027 -0.20305 -0.20305 -0.006721 0.000000 --------------------------------------------------------------------------------------*/