【问题标题】:forecast::ets, auto.arima offset by oneForecast::ets, auto.arima 偏移 1
【发布时间】:2018-11-22 01:48:52
【问题描述】:

我不确定这是否是预期行为。考虑以下代码的 sn-p -

library(forecast)
x <- c(
  0, 0, 0, 0, 0.00217764964493354, 0.00339032724317772, 0.00357374918778428, 
  0.00282328811130057, 0.00272679331678393, 0.0030360769697858, 
  0.00316665914235777, 0.00163300219677676, 0.00249817841157489, 
  0.00207838479809976, 0.00192104504850639, 0.00209700948212983, 
  0.00216356555603635, 0.00250983016815862, 0.0017474879860201
)
tsData <- ts(data = x, start = 2000, frequency = 1)
df <- data.frame(
  x = x, 
  fittedets = fitted(forecast(ets(tsData), h = 7)), 
  fittedarima = fitted(forecast(auto.arima(tsData), h = 7))
)
df

             x     fittedets fittedarima
1  0.000000000 -6.997521e-07 0.000000000
2  0.000000000 -7.065016e-11 0.000000000
3  0.000000000 -7.133162e-15 0.000000000
4  0.000000000 -7.201966e-19 0.000000000
5  0.002177650  0.000000e+00 0.000000000
6  0.003390327  2.177430e-03 0.002007587
7  0.003573749  3.390205e-03 0.003125561
8  0.002823288  3.573731e-03 0.003294659
9  0.002726793  2.823364e-03 0.002602805
10 0.003036077  2.726803e-03 0.002513846
11 0.003166659  3.036046e-03 0.002798976
12 0.001633002  3.166646e-03 0.002919360
13 0.002498178  1.633157e-03 0.001505474
14 0.002078385  2.498091e-03 0.002303084
15 0.001921045  2.078427e-03 0.001916074
16 0.002097009  1.921061e-03 0.001771022
17 0.002163566  2.096992e-03 0.001933245
18 0.002509830  2.163559e-03 0.001994603
19 0.001747488  2.509795e-03 0.002313826

在第五个值之前,实际值是 0,而对于两个模型,拟合值大约是 0,直到第六个值。

对于前五个值,我假设它们大约为 0,例如 x 列。我错过了一些基本的东西吗?

【问题讨论】:

  • 预测是根据截至该点的已知信息进行的,这意味着第五个值的预测是使用前四个观察值进行的(嗯,取决于所选的 c 模型)。由于到那时历史数据为0,所以不会有趋势。如果也没有截距,则预测也为 0。
  • 有道理,谢谢!
  • 看看这篇文章会有帮助 - stackoverflow.com/questions/35448610/…

标签: r forecasting forecast


【解决方案1】:

它还与 auto.arima 适合您的数据的 ARIMA 模型有关。如果您查看正在安装的模型:

Series: tsData 
ARIMA(1,0,0) with zero mean 

Coefficients:
         ar1
      0.9219
s.e.  0.0638

sigma^2 estimated as 6.076e-07:  log likelihood=108.59
AIC=-213.17   AICc=-212.42   BIC=-211.28

请记住,ARIMA 代表自回归综合移动平均线,输出告诉我们只拟合了模型的 AR 部分,这使其成为 AR(1) 模型:

y[t] = c + p1 * y[t-1]

通过这个等式,您可以了解这里发生了什么:

             x     fittedets fittedarima
1  0.000000000 -6.997521e-07 0.000000000
2  0.000000000 -7.065016e-11 0.000000000 # .9219 * 0 = 0
3  0.000000000 -7.133162e-15 0.000000000 # .9219 * 0 = 0
4  0.000000000 -7.201966e-19 0.000000000 # .9219 * 0 = 0
5  0.002177650  0.000000e+00 0.000000000 # .9219 * 0 = 0
6  0.003390327  2.177430e-03 0.002007587 # .9219 * .00217 = .002007
7  0.003573749  3.390205e-03 0.003125561 # .9219 * .00339 = .003125

您还可以通过绘图来观察这种行为:

library(ggplot2)
fcast <- forecast(auto.arima(tsData), h = 7)

autoplot(fcast) + 
  autolayer(fitted(fcast))

对于 ets 模型,也会发生类似的事情,但我希望这能说明为什么 auto.arima 会产生这样的结果。下次您可以探索更多包含在 forecast 包中的预测模型。

希望这有帮助!

【讨论】:

  • 感谢您的回复。请问:当数据被绘制为拟合比较时,它“看起来”明显偏移。我的模型得到了类似的结果,我们的业务用户问 - “当然这应该推迟一段时间”。为了演示模型拟合,为什么“拟合”没有自动向后移动一个句点?
  • @Jon,对于这个特定的模型,拟合值看起来会因为模型而偏移。拟合的 Arima 模型是具有 0 均值的 (1, 0, 0) 模型。这基本上意味着该模型预测的方式是将最后看到的值乘以它的唯一估计值,因为估计值接近 1 (.9219),它基本上意味着预测是 ~92%最后一次看到的价值。这会导致偏移行为。这是auto.arima 找到的最佳模型,显然不是最合适的,最好尝试其他模型并比较它们的结果。
  • 灯泡时刻。谢谢你。假设具有(例如)MA 项的更复杂的模型可能会产生 + x% 的影响,然后将拟合推回直线......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2022-01-02
相关资源
最近更新 更多