DATA airpass; INPUT miles @@; time=_N_; t2=time**2; t3=time**3; logmiles=LOG(miles); month=MOD(time,12); IF month=0 THEN month=12; ARRAY s{12} s1-s12; DO I=1 TO 12; s{I}=(month=I); END; CARDS; 2.42 2.14 2.28 2.50 2.44 2.72 2.71 2.74 2.55 2.49 2.13 2.28 2.35 1.82 2.40 2.46 2.38 2.83 2.68 2.81 2.54 2.54 2.37 2.54 2.62 2.34 2.68 2.75 2.66 2.96 2.66 2.93 2.70 2.65 2.46 2.59 2.75 2.45 2.85 2.99 2.89 3.43 3.25 3.59 3.12 3.16 2.86 3.22 3.24 2.95 3.32 3.29 3.32 3.91 3.80 4.02 3.53 3.61 3.22 3.67 3.75 3.25 3.70 3.98 3.88 4.47 4.60 4.90 4.20 4.20 3.80 4.50 4.40 4.00 4.70 5.10 4.90 5.70 3.90 4.20 5.10 5.00 4.70 5.50 5.30 4.60 5.90 5.50 5.40 6.70 6.80 7.40 6.00 5.80 5.50 6.40 6.20 5.70 6.40 6.70 6.30 7.80 7.60 8.60 6.60 6.50 6.00 7.60 7.00 6.00 7.10 7.40 7.20 8.40 8.50 9.40 7.10 7.00 6.60 8.00 10.45 8.81 10.61 9.97 10.69 12.40 13.38 14.31 10.90 9.98 9.20 10.94 10.53 9.06 10.17 11.17 10.84 12.09 13.66 14.06 11.14 11.10 10.00 11.98 11.74 10.27 12.05 12.27 12.03 13.95 15.10 15.65 12.47 12.29 11.52 13.08 12.50 11.05 12.94 13.24 13.16 14.95 16.00 16.98 13.15 12.88 11.99 13.13 12.99 11.69 13.78 13.70 13.57 15.12 15.55 16.73 12.68 12.65 11.18 13.27 12.64 11.01 13.30 12.19 12.91 14.90 16.10 17.30 12.90 13.36 12.26 13.93 13.94 12.75 14.19 14.67 14.66 16.21 17.72 18.15 14.19 14.33 12.99 15.19 15.09 12.94 15.46 15.39 15.34 17.02 18.85 19.49 15.61 16.16 14.84 17.04 ; DATA extend; DO time=217 TO 240; month=MOD(time,12); IF month=0 THEN month=12; ARRAY s{12} s1-s12; DO I=1 TO 12; s{I}=(month=I); END; OUTPUT; END; DATA airpass; SET airpass extend; SYMBOL1 color=black interpol=join value=none line=1 height=1; SYMBOL2 color=black interpol=none value=plus; PROC GPLOT DATA=airpass; PLOT logmiles*time=1/ HAXIS=0 TO 240 BY 12; TITLE 'Time Series After Transformation'; PROC REG DATA=airpass; MODEL logmiles=s1-s12 time/NOINT; OUTPUT OUT=out1 R=residual P=predicted; TITLE; PROC GPLOT DATA=out1; PLOT logmiles*time=1 predicted*time=2/OVERLAY HAXIS=0 TO 240 BY 12; TITLE 'Forecast based on regression portion of model only'; PROC FORECAST DATA=out1 METHOD=EXPO TREND=1 lead=24 START=216 OUTFULL OUTEST=out OUT=out2; VAR residual; ID TIME; DATA out2; SET out2; WHERE _TYPE_='ACTUAL' OR _TYPE_='FORECAST'; PROC TRANSPOSE DATA=out2 OUT=out2; VAR residual; ID _type_; BY time; PROC GPLOT data=out2; PLOT actual*time=2 forecast*time=1/OVERLAY HAXIS=0 TO 240 BY 12; TITLE 'Residuals of regression and smoothed version'; DATA combine; MERGE out1 out2; BY TIME; cpredict=predicted+forecast; miles=EXP(logmiles); forecast=EXP(cpredict); PROC GPLOT DATA=combine; PLOT miles*time=2 forecast*time=1/OVERLAY HAXIS=0 TO 240 BY 12; TITLE 'Final forecast in original units'; run; PROC FORECAST DATA=airpass METHOD=WINTERS SEASONS=12 TREND=2 LEAD=24 OUTEST=out OUTESTALL OUT=out2 START=192 OUTFULL OUTRESID; VAR miles; ID time; * Saves the time index variable in the OUT2 data set.; PROC PRINT DATA=out; Title 'Plot of Residuals'; SYMBOL1 I=needle; PROC GPLOT data=out2; PLOT miles*time=1/vref=0 href=192 haxis=0 to 216 by 12; WHERE _type_='RESIDUAL'; run; TITLE 'Plot of Forecasts'; SYMBOL1 I=none v=star; SYMBOL2 I=Spline v=circle; SYMBOL3 I=Spline l=3; SYMBOL4 I=Spline l=3; PROC GPLOT data=out2; PLOT miles*time=_type_/href=192 haxis=0 to 216 by 12; WHERE _type_ ^= 'RESIDUAL'; run; PROC FORECAST DATA=airpass METHOD=ADDWINTERS SEASONS=12 TREND=2 LEAD=24 OUTEST=out OUTESTALL OUT=out2 START=192 OUTFULL OUTRESID; VAR miles; ID time; * Saves the time index variable in the OUT2 data set.; PROC PRINT DATA=out; Title 'Plot of Residuals'; SYMBOL1 I=needle; PROC GPLOT data=out2; PLOT miles*time=1/vref=0 href=192 haxis=0 to 216 by 12; WHERE _type_='RESIDUAL'; run; TITLE 'Plot of Forecasts'; SYMBOL1 I=none v=star; SYMBOL2 I=Spline v=circle; SYMBOL3 I=Spline l=3; SYMBOL4 I=Spline l=3; PROC GPLOT data=out2; PLOT miles*time=_type_/href=192 haxis=0 to 216 by 12; WHERE _type_ ^= 'RESIDUAL'; run; DATA blood0; INPUT pressure @@; TIME=_N_; CARDS; 105 92 98 98 98 95 92 94 92 92 95 92 94 93 98 96 92 94 98 91 92 90 88 97 93 95 96 84 93 92 94 90 90 85 94 90 95 94 95 85 94 92 94 92 92 90 94 90 85 90 90 97 97 90 88 90 92 98 95 93 100 92 95 82 87 91 85 85 96 88 90 95 94 92 88 90 88 86 90 90 92 96 90 92 92 92 92 93 98 88 90 94 92 90 92 90 92 90 92 92 100 92 92 90 88 86 92 85 92 92 95 92 88 90 85 82 88 75 80 80 82 80 84 82 82 78 82 82 84 87 88 82 83 83 94 80 85 84 85 85 88 90 83 96 92 85 88 87 90 90 90 83 83 87 85 80 78 80 87 80 85 85 87 85 85 82 85 86 87 83 83 85 94 95 90 95 85 88 90 90 85 90 88 90 88 85 88 85 86 90 85 80 90 80 92 90 94 85 90 90 92 90 87 85 90 92 78 90 87 90 87 90 90 94 88 90 90 90 92 90 84 84 83 80 87 84 85 83 92 91 85 85 88 90 88 90 90 90 91 92 88 82 88 92 88 86 84 87 88 89 90 87 84 90 90 90 88 88 85 84 88 90 86 80 92 92 83 80 90 88 90 93 94 90 84 93 88 90 88 90 86 86 90 88 88 86 92 84 92 90 92 80 90 90 89 92 89 92 91 94 92 94 87 88 82 86 84 86 88 80 88 80 85 80 88 85 86 90 91 86 85 95 94 90 92 86 87 91 88 90 88 90 88 90 90 91 90 90 89 94 90 85 90 90 90 90 93 92 92 100 90 94 94 82 95 93 92 95 89 90 93 93 93 98 91 92 90 95 90 95 96 92 100 95 96 95 95 87 90 92 92 93 91 92 92 82 87 92 94 90 91 88 91 87 88 90 84 93 94 84 96 88 90 84 86 88 92 91 92 92 92 88 85 80 87 86 83 84 88 90 86 90 92 90 90 91 90 90 88 90 89 85 88 90 92 82 90 88 89 87 85 87 91 98 93 90 88 88 88 85 84 82 90 86 90 84 85 88 90 84 ; PROC FORECAST DATA=blood0 METHOD=EXPO TREND=1 lead=10 OUTESTALL OUTFULL OUTEST=out OUT=out2; VAR pressure; ID TIME; PROC PRINT DATA=out; DATA out3; SET out2; RETAIN time2; IF time=. THEN time=time2; time2=time; IF time>420 THEN OUTPUT; PROC PLOT DATA=out3; PLOT pressure*time=_type_/HEXPAND; WHERE _type_='FORECAST' or _type_='ACTUAL'; TITLE; PROC PLOT DATA=out3; PLOT pressure*time=_type_/HEXPAND; WHERE _type_='FORECAST' or _type_='L95' or _TYPE_='U95'; SYMBOL1 color=black value=star height=1; SYMBOL2 color=black interpol=join value=none line=1 height=1; SYMBOL3 color=black interpol=join value=none line=4 height=1; SYMBOL4 color=black interpol=join value=none line=4 height=1; PROC GPLOT DATA=out2; PLOT pressure*time=_type_; run; SYMBOL1 color=black line=1 height=1 interpol=SM25; PROC GPLOT DATA=blood0; PLOT pressure*time=1 pressure*time=2/overlay; SYMBOL1 color=black line=1 height=1 interpol=SM50; PROC GPLOT DATA=blood0; PLOT pressure*time=1 pressure*time=2/overlay; run; data sales; input sales @@; date = intnx( 'month', '01sep1978'd, _n_); format date monyy7.; datalines; 112 118 132 129 121 135 148 148 136 119 104 118 115 126 141 135 125 149 170 170 158 133 114 140 145 150 178 163 172 178 199 199 184 162 146 166 171 180 193 181 183 218 230 242 209 191 172 194 196 196 236 235 229 243 264 272 237 211 180 201 204 188 235 227 234 264 302 293 259 229 203 229 242 233 267 269 270 315 364 347 312 274 237 278 284 277 317 313 318 374 413 405 355 306 271 306 315 301 356 348 355 422 465 467 404 347 305 336 340 318 362 348 363 435 491 505 404 359 310 337 360 342 406 396 420 472 548 559 463 407 362 405 417 391 419 461 472 535 622 606 508 461 390 432 run; proc x11 data=sales noprint; monthly date=date; var sales; tables b1 d11; output out=out b1=series d10=d10 d11=d11 d12=d12 d13=d13; run; symbol1 i=join v='star'; symbol2 i=join v='circle'; legend1 label=none value=('original' 'adjusted'); proc gplot data=out; plot series * date = 1 d11 * date = 2 / overlay legend=lengend1; run; symbol1 i=join v=dot; proc gplot data=out; plot ( d10 d12 d13 ) * date; run; LIBNAME ts 'c:\bremer'; DATA ts.electricuse; INPUT usage; Time=_N_; date = intnx( 'month', '01sep1978'd, _n_); CARDS; 227.86 198.24 194.97 184.88 196.79 205.36 226.72 226.05 202.50 194.79 192.43 219.25 217.47 192.34 196.83 186.07 197.31 215.02 242.67 225.17 206.69 197.75 196.43 213.55 222.75 194.03 201.85 189.50 206.07 225.59 247.91 247.64 213.01 203.01 200.26 220.50 237.90 216.94 214.01 196.00 208.37 232.75 257.46 267.69 220.18 210.61 209.59 232.75 232.75 219.82 226.74 208.04 220.12 235.69 257.05 258.69 227.15 219.91 219.30 259.04 237.29 212.88 226.03 211.07 222.91 249.18 266.38 268.53 238.02 224.69 213.75 237.43 248.46 210.82 221.40 209.00 234.37 248.43 271.98 268.11 233.88 223.43 221.38 233.76 243.97 217.76 224.66 210.84 220.35 236.84 266.15 255.20 234.76 221.29 221.26 244.13 245.78 224.62 234.80 211.37 222.39 249.63 282.29 279.13 236.60 223.62 225.86 246.41 261.70 225.01 231.54 214.82 227.70 263.86 278.15 274.64 237.66 227.97 224.75 242.91 253.08 228.13 233.68 217.38 236.38 256.08 292.83 304.71 245.57 234.41 234.12 258.17 268.66 245.31 247.47 226.25 251.67 268.79 288.94 290.16 250.69 240.80 ; run;