如何在预测中指定最小或最大可能值?

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

有没有办法在使用 ETS/ARIMA 模型进行的预测中指定最小或最大可能值?

例如在预测只能介于 0% 和 100% 之间的百分比趋势时。

我正在使用 R 包 forecast(和函数 forecast)。

如果您的时间序列 y 具有自然界限 [a, b],您应该先进行 "logit-alike" 转换:

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

则得到的yy(-Inf, Inf)上无界,适合高斯误差假设。使用 yy 进行时间序列建模,稍后对预测/预测进行反向转换:

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

注意,上面的变换f(因此finv)是单调的,所以如果yy的95%置信区间是[l, u],相应的置信度y 的间隔是 [finv(l), finv(u)].


如果您的 y 仅在一侧有界,请考虑 "log-alike" 变换。

  • [a, Inf) 为界,考虑 yy <- log(y - a)
  • (-Inf, a] 为界,考虑 yy <- log(a - y)

哇,我不知道 Rob Hyndman 有博客。感谢 @ulfelder for providing it. I added it here to make my answer more solid: Forecasting within limits.

这个比较具体,我没有涉及。 What to do when data need a log transform but it can take 0 somewhere。我只想增加一个小的公差,说 yy <- log(y + 1e-7) 继续。