有没有办法在使用ETS / ARIMA模型进行的预测中指定最小或最大可能值?
例如,以%为单位预测趋势时,只能在0%到100%之间。
我正在使用R包forecast
(和函数forecast
)。
答案 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)
。这个更具体,我没有涉及。 What to do when data need a log transform but it can take 0 somewhere。我只想添加一个小容差,比如yy <- log(y + 1e-7)
继续。