Инициализация прогноза с помощью пакета fable
Предположим, я оцениваю с помощью пакета fable следующую модель, используя ежедневные данные за 2019 год, где x - экзогенная независимая переменная. Условияpdq(p = 1, d = 0, q = 0)
а также PDQ(P = 0, D = 0, Q = 0)
означают, что это авторегрессивная модель.
library(tidyverse)
library(fable)
load(file, "Some data.RData")
fit <- dta_2019 %>%
tsibble() %>%
model(ar = ARIMA(y ~ x + pdq(p = 1, d = 0, q = 0) + PDQ(P = 0, D = 0, Q = 0)))
Теперь мне нужно использовать эту модель для прогнозирования ежедневных данных на 2020 год, но предположим, что данные начнутся в феврале 2020 года.
forecast_2020 <- fit %>%
forecast(new_data = tsibble(dta_2020))
Я понимаю, что значение запаздывания y для прогноза, которое требуется, учитывая, что это авторегрессивная модель, будет последним значением, наблюдаемым в наборе данных оценки (dta_2019). Могу ли я инициализировать значение y чем-нибудь другим? Я попытался включить в dta_2020 строку, которая в данном конкретном примере содержит наблюдение за 31 января, но это приводит к тому, что прогноз начинается 31 января.
2 ответа
Для модели ARIMA (с использованием fable::ARIMA()
) вам также потребуется сделать прогноз на январь 2020 года, чтобы получить интересующие прогнозы на февраль 2020 года. Если экзогенный регрессор доступен для обоих месяцев, тогда прогнозы могут быть рассчитаны. Предоставление будущих значений вашего экзогенного регрессораx
требуется, но будущие значения y
не нужны для прогнозирования.
Небольшое обновление, если оно еще актуально.
Я обнаружил, что используя функциюfabletools::refit()
сreestimate = FALSE
позволяет обновить модель до последних соответствующих значений, предоставленных черезnew_data
сохраняя при этом оценки, полученные с использованием исходного набора данных.
Таким образом, вы можете указать значение, с которого следует начать на январь 2020 года.
require(fpp3)
dsub <- us_change[1:190, ]
m <- model(dsub, ARIMA(Consumption))
report(m)
#> Series: Consumption
#> Model: ARIMA(1,0,3)(1,0,1)[4] w/ mean
#>
#> Coefficients:
#> ar1 ma1 ma2 ma3 sar1 sma1 constant
#> -0.3474 0.5684 0.3274 0.4123 -0.1367 0.3775 1.1352
#> s.e. 0.1579 0.1486 0.0938 0.0798 0.2164 0.1833 0.1313
#>
#> sigma^2 estimated as 0.3412: log likelihood=-164.12
#> AIC=344.25 AICc=345.04 BIC=370.22
forecast(m)
#> # A fable: 8 x 4 [1Q]
#> # Key: .model [1]
#> .model Quarter Consumption .mean
#> <chr> <qtr> <dist> <dbl>
#> 1 ARIMA(Consumption) 2017 Q3 N(0.66, 0.34) 0.657
#> 2 ARIMA(Consumption) 2017 Q4 N(0.7, 0.36) 0.698
#> 3 ARIMA(Consumption) 2018 Q1 N(0.69, 0.38) 0.689
#> 4 ARIMA(Consumption) 2018 Q2 N(0.71, 0.42) 0.709
#> 5 ARIMA(Consumption) 2018 Q3 N(0.72, 0.42) 0.724
#> 6 ARIMA(Consumption) 2018 Q4 N(0.73, 0.42) 0.727
#> 7 ARIMA(Consumption) 2019 Q1 N(0.74, 0.42) 0.741
#> 8 ARIMA(Consumption) 2019 Q2 N(0.75, 0.43) 0.748
mfull <- refit(m, new_data = us_change, reestimate = FALSE)
report(mfull)
#> Series: Consumption
#> Model: ARIMA(1,0,3)(1,0,1)[4] w/ mean
#>
#> Coefficients:
#> ar1 ma1 ma2 ma3 sar1 sma1 constant
#> -0.3474 0.5684 0.3274 0.4123 -0.1367 0.3775 1.1352
#> s.e. 0.1579 0.1486 0.0938 0.0798 0.2164 0.1833 0.1313
#>
#> sigma^2 estimated as 0.3207: log likelihood=-168.58
#> AIC=339.17 AICc=339.19 BIC=342.46
forecast(mfull)
#> # A fable: 8 x 4 [1Q]
#> # Key: .model [1]
#> .model Quarter Consumption .mean
#> <chr> <qtr> <dist> <dbl>
#> 1 ARIMA(Consumption) 2019 Q3 N(0.68, 0.32) 0.676
#> 2 ARIMA(Consumption) 2019 Q4 N(0.64, 0.34) 0.638
#> 3 ARIMA(Consumption) 2020 Q1 N(0.87, 0.36) 0.869
#> 4 ARIMA(Consumption) 2020 Q2 N(0.73, 0.39) 0.729
#> 5 ARIMA(Consumption) 2020 Q3 N(0.74, 0.4) 0.737
#> 6 ARIMA(Consumption) 2020 Q4 N(0.76, 0.4) 0.755
#> 7 ARIMA(Consumption) 2021 Q1 N(0.81, 0.4) 0.807
#> 8 ARIMA(Consumption) 2021 Q2 N(0.71, 0.4) 0.714
Создано 1 апреля 2023 г. пакетом reprex (v2.0.1).