Смещение auto.arima на 1 период. Нужно ли выравнивать для соответствия? - PullRequest
0 голосов
/ 20 сентября 2019

С осознанием вопроса здесь: прогноз :: ets, auto.arima смещено на единицу , у меня немного другой вопрос.

Я пытаюсь построить временной рядмодель прогнозирования, объединяющая стандартную линейную модель для экзогенных переменных, затем использующая модель Arima для понимания сезонных трендов в невязках из этой модели.

library(forecast)
library(ggplot2)

set.seed(40)

# Two dummy variables, a and b, and a seasonal component d
a <- runif(80, min = 100, max = 130)
b <- runif(80, min = 150, max = 180)
d <- c(runif(20, min = 10, max = 30), 
       runif(20, min = 20, max = 40), 
       runif(20, min = 10, max = 30), 
       runif(20, min = 20, max = 40))
df <- data.frame(a,  y = a + b + d)


mdl <- lm(y ~ a + b, data = df)
res <- residuals(mdl)
res.ts <- ts(res, frequency = 20)
arm=auto.arima(res.ts)


g <- data.frame(timeline = seq.int(1, 80),
                actuals = res,
                arima = fitted(arm))

ggplot(data = g, aes(x=timeline)) +
    geom_line(aes(y = g$actuals), colour = 'blue') +
    geom_line(aes(y = g$arima), colour = 'red')

Когда я запускаю приведенный выше код и изучаю модель ARIMA FIT ( не прогноз), я вижу, что точки данных отображаются смещенными на одно значение.например,

head(g, n = 6)

 timeline    actuals      arima
1        1  -4.075725 -0.5356218
2        2 -11.442000 -2.1542217
3        3 -12.664534 -4.5565574
4        4   2.489054 -4.0989912  # << Actuals big uptick here
5        5   1.671467 -1.0104559  # << Arima uptick here - 1 period removed
6        6 -10.831153 -4.9099150

Я понимаю, что прогноз может сделать это, так как он прогнозирует ценность данных вплоть до, но не включая точку интереса, но я ожидал бы, что FITвыровнять.

Когда я показываю эти диаграммы, бизнес-пользователи сразу же задаются вопросом, не смещены ли значения неправильно.Такое поведение не встречается в других моделях, например

f <- data.frame(timeline = seq.int(1, 80),
                actuals = df$y,
                linear = predict(mdl))

ggplot(data = f, aes(x=timeline)) +
    geom_line(aes(y = f$actuals), colour = 'blue') +
    geom_line(aes(y = f$linear), colour = 'red')

, где вы можете увидеть пики и впадины почти все в одном ряду.

Поэтому мои вопросы:

  • почему подгонка смещается на единицу?
  • Должен ли я заново выравнивать график вручную?
  • Если я делаю прогнозные прогнозы, используя mdl + arima для точки данных 81, действителен ли я вдобавление прогноза из линейной модели () к прогнозу (h = 1)?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...