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

时间:2016-10-28 09:25:02

标签: r time-series forecasting

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

例如,以%为单位预测趋势时,只能在0%到100%之间。

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

1 个答案:

答案 0 :(得分:4)

如果您的时间序列y具有自然界限[a, b],则应该采用" logit-like等等#34;先变换:

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仅限于一方,请考虑&#34;类似日志&#34;变换。

  • [a, Inf)为界,请考虑yy <- log(y - a);
  • (-Inf, a]为界,请考虑yy <- log(a - y)
哇,我不知道Rob Hyndman有博客。感谢@ulfelder提供它。我在这里添加它以使我的答案更加可靠:Forecasting within limits

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