Forecasting using SAS Forecast Server, SAS/ETS, and more

FORECAST BASED ON HOURLY DATA

Reply
Contributor
Posts: 35

FORECAST BASED ON HOURLY DATA

Good morning,

 

I have a time process based on 14 hours and I am trying to forecast for each store
the sales based on historical hourly data.


DATA Production;
Store="A";  hour =1 ; sales =9127513; output;
Store="A";  hour =2 ; sales =7632319; output;
Store="A";  hour =3 ; sales =5272615; output;
Store="A";  hour =4 ; sales =7632319; output;
Store="A";  hour =5 ; sales =13160441; output;
Store="A";  hour =6 ; sales =4332659; output;
Store="A";  hour =7 ; sales =6687890; output;
Store="A";  hour =8 ; sales =21424791; output;
Store="A";  hour =9 ; sales =9810671; output;
Store="A";  hour =10 ; sales =5272615; output;
Store="A";  hour =11 ; sales =21989117; output;
Store="A";  hour =12 ; sales =59998842; output;
Store="A";  hour =13 ; sales =527261542; output;
Store="A";  hour =14 ; sales =599986000; output;run;

and so on for 17 stores.

 

The following process does not work and I get the following error :
%let currenthour=6;

%let lead = %eval(14 - &Currenthour)

 

proc forecast data =production lead = &lead outactual outlimits
  out = AFORECASTOUTPUT outfull outest = AFORECASTOUTPUT2    interval =hour
  method=STEPAR trend = 2 alpha=0.05;
  by store;
  id hour;
  var sales; run;

 

ERROR: Duplicate time interval found at observation number 2 according to the INTERVAL=HOUR
       option and the ID variable values. The current ID is date=2 and the previous is date=1,
       which are within the same HOUR interval.

Respected Advisor
Posts: 4,919

Re: FORECAST BASED ON HOURLY DATA

interval=hour refers to SAS time intervals, not the name of your variable. Just remove that option and the procedure should use your ID statement variable (hour) as a time value with a default increment of one. 

PG
Contributor
Posts: 35

Re: FORECAST BASED ON HOURLY DATA

[ Edited ]

If I do that, I get the following error :

 

ERROR: Observation number 14 is out of order according to the ID variable values. The current ID

is hour=1, the previous ID was hour=13.

 

Respected Advisor
Posts: 4,919

Re: FORECAST BASED ON HOURLY DATA

You need

 

BY STORE DAY;

PG
SAS Employee
Posts: 416

Re: FORECAST BASED ON HOURLY DATA

Hello -

It may be worthwhile to run PROC ESM instead on PROC FORECAST.

Here is an example which should work for your data (even when adding several stores):

 

proc esm data=production plot=forecasts lead=&lead outfor=work.AFORECASTOUTPUT;

forecast sales/model=damptrend;

by store;

run;

 

Of course ESM will assume the same model for all stores (in my code I used a damped trend exponential smoothing model, which seems to be appropriate for your example), but at least the parameters for each store will be different.

 

Thanks,

Udo

 

SAS Super FREQ
Posts: 93

Re: FORECAST BASED ON HOURLY DATA

the variable HOUR is just a doule, not a datetime variable, You can either change the format of HOUR to datetime or trick the proc with the option interval = day

 

proc forecast data =production lead = 12 outactual outlimits
out = AFORECASTOUTPUT outfull outest = AFORECASTOUTPUT2 interval =hour
method=STEPAR trend = 2 alpha=0.05 interval = day;
by store;
id hour;
var sales;
run;

Ask a Question
Discussion stats
  • 5 replies
  • 347 views
  • 0 likes
  • 4 in conversation