【发布时间】:2020-04-26 08:12:06
【问题描述】:
我正在从 fpp2 包中获取数据集 uschange,并从预测包 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))
如果此功能正常工作,输出应如下表所示(数字仅用于说明)。
那么任何人都可以帮助我如何修复此代码行并获得类似于上面最后一张图片的输出。
【问题讨论】:
-
如何为 1 个模型运行
accuracy?如果我这样做accuracy(forecast(FORECASTING_LIST_ARIMA[[1]],h=37), x = Test_set)它会给出错误Error in testaccuracy(object, x, test, d, D) : Not enough forecasts. Check that forecasts and test data match. -
我认为这是您问题的答案。这就是这个示例仅在一个没有自己功能的时间序列上的样子。这行代码可以正常工作 MY_DATA_1