我正在尝试建立一个10年长时间序列的ARIMA模型,并用它来预测未来的一年。为了测试模型,我训练了9年的数据,预测了1年的数据,然后将预测值与该年的实际值进行比较。
问题:我告诉Forecast()将其预测期限限制为365,即1年。但是,当我绘制输出时,它似乎输出了9年或大约为3285的“ h =“。为什么会发生这种情况?
##The time series is 3650 daily observations of rainfall
x <- ts(x$obs, start=c(2007, 10), end=c(2017, 9), frequency = 365)
##create training set - first 9 years of observations
x_train <- subset(x, start = 1, end = 3285)
##test set - last year of observations
x_test <- subset(x, start = 3286, end = 3650)
##fit the model
x_train_fit <- auto.arima(x_train, seasonal=FALSE, xreg=fourier(x_train, K=1))
##forecast using the model
x_fcast_test <- forecast(x_train_fit,h=365, xreg=fourier(x_train, K=1))
plot(x_fcast_test, col="black")
lines(x_test,col="red")
更新:Rob Hyndman在下面的回答是正确的。预测期间的数量将设置为xreg的行数,因为使用xreg时,它的使用将有利于h =,因此未使用我的h =。因此,将整个训练集作为exreg传入会产生与训练集长度相等的预测。
x_fcast_test <- forecast(x_train_fit,h=365, xreg=fourier(x_test, K=1))
plot(x_fcast_test, col="black")
lines(x_test,col="red")
答案 0 :(得分:1)
始终值得阅读所提供的帮助文件。在这种情况下:
h
: 预测的周期数。如果使用xreg
,则会忽略h
,并将预测周期数设置为xreg
的行数。
您在xreg
参数中传递了训练数据,因此您得到的预测与观察到的一样多。
大概您打算将测试数据用于xreg
参数。