С осознанием вопроса здесь: прогноз :: 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)?
Спасибо!