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
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
finv) is monotone, so if the 95%-confidence interval for
[l, u], the corresponding confidence interval for
y is only bounded on one side, consider "log-alike" transform.
[a, Inf), consider
yy <- log(y - a);
(-Inf, a], consider
yy <- log(a - y).
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.