提问者:小点点

指定预测期不限制预测产出


我试图建立一个长达10年的时间序列的ARIMA模型,并用它来预测未来一年。为了测试我的模型,我在9年的数据上进行训练,预测1年的数据,并将预测值与当年的实际值进行比较。

问题:我告诉预测()将其预测的期限限制为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")

更新:罗布·海曼下面的答案是正确的。预测周期的数量将被设置为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")


共1个答案

匿名用户

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

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

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

您可能打算将测试数据用于xreg参数。