使用动态 ARIMA 预测未来
Forecasting into the future with dynamic ARIMA
假设我正在尝试使用动态 ARIMA 回归预测未来四个月的变量 y
。我提前知道四个月的 xreg 变量。我不完全确定 forecast
函数是如何进行预测的,例如我可以用缺少的 y 值来输入它吗?如果只输入那几个月的 xreg,它会自动假设我正在尝试预测训练期后的四个月?
下面的代码对预测未来四个月有意义吗?
library(dplyr)
library(fable)
library(tsibble)
set.seed(1)
r <- rnorm(36)
r2 <- rnorm(4)
x <- data.frame(index = yearmonth(seq.Date(as.Date("2017-01-01"),
as.Date("2020-04-01"),
"1 month")),
y = cumprod(c(r, rep(NA, 4))),
a = c(1.8 * r + rnorm(36), 1.8 * r2 + rnorm(4)),
b = c(0.5 * r + rnorm(36), 1.5 * r2 + rnorm(4))) %>%
as_tsibble()
a1 <- x %>%
model(ARIMA(y ~ a + b))
a1 %>% forecast(x[37:40, ])
不,预测函数将假定您要预测训练数据之后的月份。如果您的训练数据以缺失的观察结束,这仅意味着它是从最后一个可用观察开始预测,经过缺失的时间段,然后进入训练数据之后的时间段。
这里有一些代码可以做你想做的事。
x %>%
filter(index <= yearmonth("2019 Dec")) %>%
model(ARIMA(y ~ a + b)) %>%
forecast(new_data = filter(x, index > yearmonth("2019 Dec")))
假设我正在尝试使用动态 ARIMA 回归预测未来四个月的变量 y
。我提前知道四个月的 xreg 变量。我不完全确定 forecast
函数是如何进行预测的,例如我可以用缺少的 y 值来输入它吗?如果只输入那几个月的 xreg,它会自动假设我正在尝试预测训练期后的四个月?
下面的代码对预测未来四个月有意义吗?
library(dplyr)
library(fable)
library(tsibble)
set.seed(1)
r <- rnorm(36)
r2 <- rnorm(4)
x <- data.frame(index = yearmonth(seq.Date(as.Date("2017-01-01"),
as.Date("2020-04-01"),
"1 month")),
y = cumprod(c(r, rep(NA, 4))),
a = c(1.8 * r + rnorm(36), 1.8 * r2 + rnorm(4)),
b = c(0.5 * r + rnorm(36), 1.5 * r2 + rnorm(4))) %>%
as_tsibble()
a1 <- x %>%
model(ARIMA(y ~ a + b))
a1 %>% forecast(x[37:40, ])
不,预测函数将假定您要预测训练数据之后的月份。如果您的训练数据以缺失的观察结束,这仅意味着它是从最后一个可用观察开始预测,经过缺失的时间段,然后进入训练数据之后的时间段。
这里有一些代码可以做你想做的事。
x %>%
filter(index <= yearmonth("2019 Dec")) %>%
model(ARIMA(y ~ a + b)) %>%
forecast(new_data = filter(x, index > yearmonth("2019 Dec")))