如何在预测中指定最小或最大可能值?
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)
继续。
有没有办法在使用 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)
继续。