- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hello
I would like to use a given statistical time series function to forecast a variable (y) from a specific date forward (e.g. starting from April 1st 2021). The y variable has the actual data while y_forecast is the estimate based on a function. The function needs to use the lag of the predicted variable (y_forecast) from April 1st 2021 forward. Also, I need to compare the y_forecast to y and determine the variance.
In my below attempt I have not been able to generate any values for the forecast period.
data data; input date date9. y x; format date date9.; cards; 26MAR2021 2.41 1.791 27MAR2021 2.34 1.783 28MAR2021 2.46 1.874 29MAR2021 2.52 1.867 30MAR2021 2.55 1.901 31MAR2021 2.50 1.851 01APR2021 2.61 1.920 02APR2021 2.65 1.932 03APR2021 2.69 1.944 04APR2021 2.74 1.951 ; run; data model; set data; x_lag = lag(x); x_chg = dif(x); y_lag = IFN(Date le '31MAR2021'd ,lag(y),lag(y_forecast)); y_chg_lag = IFN(Date le '31MAR2021'd ,lag(y) - lag2(y), lag(y_forecast) - lag2(y_forecast)); bx1 = 0.2; bx2 = 0.4; bc0 = 0.1; by1 = 0.3; y_forecast = y_lag + bx1 * x_lag * x_chg + bx2 + bc0 + by1 * y_chg_lag; variance = y - y_forecast; run;
Any thoughts how to achieve this are appreciated. Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Why aren't you using one of the many procedures SAS offers for forecasting (=extrapolating dependent variable time series into the future)?
Do you have SAS/ETS or SAS Econometrics or Forecast Server or Visual Forecasting?
Thanks,
Koen
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hello @dzurov ,
Which version of SAS are you running?
Submit
%PUT &=sysvlong4;
to find out (look in the LOG).
If you have SAS 9.4 Mx (Maintenance Level something), then submit:
proc setinit; run;
proc product_status; run;
to find out if you have SAS/ETS or SAS Forecast Server.
If you have SAS VIYA (VIYA 3.5 or VIYA 4), then submit :
cas; /* connect to CAS session */
proc cas;
getLicensedProductInfo;
quit;
to find out if you have SAS/ETS or SAS Econometrics or SAS Visual Forecasting.
Doing the same with a data step will be a pale imitation of real forecasting (where you correctly take autocorrelation into account).
See also this blog :
How to find release and licensing information in SAS Viya?
By @Rick_SAS on The DO Loop February 28, 2022
https://blogs.sas.com/content/iml/2022/02/28/release-license-sas-viya.html
Thanks,
Koen
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I'm on version, 9.04 according to the statement below
%PUT &=sysvlong4;
I was hoping my objective can be achieved with some other (stats) procedure instead of a data step, since the data step does not seem to remember the prior value of the y_forececast variable.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Try something like this ( auto-regression ).
proc autoreg data=sashelp.citiday;
model SNYDJCM = / nlag=1 method=ml;
run;
Koen