We are forecasting some series where after a level shift down multiplicative seasonality is revealed. PROC UCM's additive seasonality results in negative forecasts as the variance of the low seasonal points is too high. I would like to determine if we can hack multiplicative seasonality in some way.
My understanding is that if our model was log(Y) = log(Season) + ... this would accomplish multiplicative seasonality. We can leave level, trend, and predictors as additive. Logging Y is easy! If I am right so far, then the real issue is how to do the equivalent of logging seasonality. There is no option to do so. Is there something that would be, perhaps not equivalent, but close enough, in the form of an adjustment post-forecast that could be applied algorithmically using the season values in the OUTFOR= data set?
Modelling log(Y) instead of Y does provide a way to get multiplicative seasonality:
log(Y) = level + regression-effects + season + error
translates into:
Y = exp(level) * exp(regression effects) * exp(season) * exp(error)
When you use log(Y) as the response series in PROC UCM, the OUTFOR data set contains the forecasts and estimates of different components (level, season, error, etc). You will need to manually (DATA step) back-transform them to get their multiplicative versions (see "Example 7.2 Seasonal Model for the Airline Series" in the PROC ARIMA doc to see this type of back-transforming of the log transformation).
Is this what you want?
Modelling log(Y) instead of Y does provide a way to get multiplicative seasonality:
log(Y) = level + regression-effects + season + error
translates into:
Y = exp(level) * exp(regression effects) * exp(season) * exp(error)
When you use log(Y) as the response series in PROC UCM, the OUTFOR data set contains the forecasts and estimates of different components (level, season, error, etc). You will need to manually (DATA step) back-transform them to get their multiplicative versions (see "Example 7.2 Seasonal Model for the Airline Series" in the PROC ARIMA doc to see this type of back-transforming of the log transformation).
Is this what you want?
Yes-- in fact, we have subsequently figured that out. At the moment I am working on the transformation back of variables that are in the OUTFOR and ods forecasts tables. We are transforming back with the EXP() function.
By doing this, we now have ETS(M,M or N,M or N) models, correct? We're thinking through the implications of multiplicative errors and trend as we consider which models on which to apply the log transformation. We would want to be careful with any positive, exponential trends. We may build multiplicative damping on as a post-hoc adjustment if we end up with models that require mult season and a trend, but where the exponential trend is too steep.
Are those reasonable steps/assumptions?
I do not want to venture into ETS modeling framework popularized by Hyndman and others because even though it is similar to the decompositions provided by PROC UCM, there are many important differences (e.g., they deal with multiplicative and other nonlinear models by specific techniques). Currently, SAS/ETS (the software and not the modeling methodology) offers a few of the ETS models via PROC ESM. However, PROC ESM does not support regressors in the model.
Now questions whether exponential trends are too steep and such depend on particular application and as with any data analysis project some trial and error is needed.
Fair enough. We use PROC ESM as well but prefer UCM because we do have regressors. We believe we can functionally achieve 12 of the 30 models in the Hyndman framework by selectively using log(Y) and/or doing trend-dampening adjustments, and that's plenty. We just want to make sure that we understand the potential drawbacks of these transformations.
As far as I can see, what you are doing is routinely done in forecasting projects and after taking care to not forecast too far into the future things should be fine. My two cents!
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.