指定的预测期不限制预测输出

时间:2018-12-01 21:22:40

标签: r time-series forecasting arima

我正在尝试建立一个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")

enter image description here

更新: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")

enter image description here

1 个答案:

答案 0 :(得分:1)

始终值得阅读所提供的帮助文件。在这种情况下:

  

h:   预测的周期数。如果使用xreg,则会忽略h,并将预测周期数设置为xreg的行数。

您在xreg参数中传递了训练数据,因此您得到的预测与观察到的一样多。

大概您打算将测试数据用于xreg参数。