Mihael - 1 year ago 83
R Question

# How to specify minimum or maximum possible values in a forecast?

Is there a way to specify minimum or maximum possible values in a forecast done with ETS/ARIMA models?

Such as when forecasting a trend in % that can only go between 0% and 100%.

I am using R package

`forecast`
(and function
`forecast`
).

If your time series `y` has a natural bound `[a, b]`, you should take a "logit-alike" transform first:

``````f <- function (x, a, b) log((x - a) / (b - x))
yy <- f(y, a, b)
``````

Then the resulting `yy` is unbounded on `(-Inf, Inf)`, suitable for Gaussian error assumption. Use `yy` for time series modelling, and take back-transform later on the prediction / forecast:

``````finv <- function (x, a, b) (b * exp(x) + a) / (exp(x) + 1)
y <- finv(yy, a, b)
``````

Note, the above transform `f` (hence `finv`) is monotone, so if the 95%-confidence interval for `yy` is `[l, u]`, the corresponding confidence interval for `y` is `[finv(l), finv(u)]`.

If your `y` is only bounded on one side, consider "log-alike" transform.

• bounded on `[a, Inf)`, consider `yy <- log(y - a)`;
• bounded on `(-Inf, a]`, consider `yy <- log(a - y)`.

Wow, I didn't know Rob Hyndman has a blog. Thanks to @ulfelder for providing it. I added it here to make my answer more solid: Forecasting within limits.

This one is more specific, which I have not covered. What to do when data need a log transform but it can take 0 somewhere. I would just add a small tolerance, say `yy <- log(y + 1e-7)` to proceed.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download