Я обрабатываю набор данных uschange из пакета fpp2 и выполняю функции из пакета прогноза auto.arima. Поскольку я прогнозировал несколько временных рядов одновременно, я использовал собственную функцию, которая делает несколько проекций одновременно.
#
library(fpp2) # data
library(dplyr)
library(forecast)
MY_DATA<-uschange[,1:4]
Trening_set<-subset(MY_DATA,start=1,end=150) # Training set
Test_set<-subset(MY_DATA,start=151,end=187) # Test set 20% of observations
# 1.Own functions for forecasting
FORECASTING_FUNCTION_ARIMA <- function(Z, hrz = 16) {
timeseries <- msts(Z, start = 1970, seasonal.periods = 4)
forecast <- auto.arima(timeseries)
#ic = c("bic")
}
FORECASTING_LIST_ARIMA <- lapply(X = Trening_set, FORECASTING_FUNCTION_ARIMA)
ARIMA_MODELS_FORECAST<-lapply(FORECASTING_LIST_ARIMA, forecast,h=37)
Чтобы увидеть точность этих моделей, я использовал функцию lapply. Так что код и результаты вы можете увидеть ниже :
# Accurancy test
ACCURANCY_ARIMA <- lapply(FORECASTING_LIST_ARIMA, accuracy)
Таким образом, следующим шагом должно быть использование той же функции для получения тех же ошибок точности, что и в предыдущем примере, но теперь с тестовым набором. Я пытаюсь с кодом ниже, но что-то не так, и я не могу получить хорошие результаты.
ACCURANCY_ARIMA1<-lapply(FORECASTING_LIST_ARIMA, accuracy(forecast(ARIMA_MODELS_ALL,h=37),x=Test_set))
Если эта функция работает правильно, вывод должен выглядеть следующим образом (цифры приведены только для иллюстрации).
Кто-нибудь может мне помочь, как исправить эту строку кода и получить вывод, похожий на последний пи c выше.