简体   繁体   中英

forecast::ets, auto.arima offset by one

I'm not sure if this is intended behaviour. Consider the following snippet of code -

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

The actual values are 0 until the fifth value, while in case of both models, the fitted values are about 0 until the sixth value.

I would assume them to be approximately 0 for the first five values, like the x column. Am I missing something basic?

It also has to do with the ARIMA model that auto.arima is fitting to your data. If you look at the model that it's being fitted:

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

Remember that ARIMA stands for Autoregressive Integrated Moving Average, and the output tells us that only the AR part of the model was fitted, which makes it an AR(1) model:

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

With this equation you can get a sense of what happened here:

             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

You can also observe this behavior with a plot:

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

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

在此处输入图片说明

For the ets model a similar thing happens, but I hope this made it clear why auto.arima had such result. Next time you could explore more forecasting models that are included in the forecast package.

Hope this helped!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM