分层数据预测的带回归的 ARIMA

ARIMA with regressions for Hierarchical data forecast

我在尝试对 gts 对象使用 ARIMA 回归时遇到此错误:

Error in ...fourier(x, K, length(x) + (1:h)) : K must be not be greater than period/2

这是一段简单的可重现代码。我应该将 k 设置为什么?我尝试了不同的值,但 none 似乎有效。

library(hts)
y3 <- ts(matrix(rnorm(300),ncol=60,nrow=5))
blnames3 <- paste0(rep(c("CA", "NY"), each = 30), # State
               rep(c("AL", "LA", "CL", "ES"), each = 15), # County
               rep(c("O", "O", "O", "C", "C"), 12), # Industry
               rep(c("p", "q", "r", "p", "q"), 12),  # Sub-industry
               rep(504:507, 15)) # Product
colnames(y3) <- blnames3

gy3 <- gts(y3, characters=list(c(2,2),c(1,1,3)))

i=5
fc <- forecast(gy3, fmethod="arima", seasonal=FALSE, h=6, xreg=fourier(gy3, K=i), newxreg=fourierf(gy3, K=i, h=6))

这里有几个问题。首先,您的时间序列仅包含 5 个观测值,每个观测值太少而无法适合任何用于预测目的的模型。其次,您没有在 ts() 调用中指定数据的频率。第三,您不能将 gts 对象作为第一个参数传递给 fourier()。

下面是一些有效的代码:

library(hts)
y3 <- ts(matrix(rnorm(3000),ncol=60), frequency=12)
blnames3 <- paste0(rep(c("CA", "NY"), each = 30), # State
                   rep(c("AL", "LA", "CL", "ES"), each = 15), # County
                   rep(c("O", "O", "O", "C", "C"), 12), # Industry
                   rep(c("p", "q", "r", "p", "q"), 12),  # Sub-industry
                   rep(504:507, 15)) # Product
colnames(y3) <- blnames3

gy3 <- gts(y3, characters=list(c(2,2),c(1,1,3)))

i <- 5
fc <- forecast(gy3, fmethod="arima", seasonal=FALSE, h=6,
        xreg=fourier(y3[,1], K=i), newxreg=fourierf(y3[,1], K=i, h=6))

请注意,fourierfourierf 的第一个参数仅用于确定傅立叶预测变量的频率和长度。所以只使用 y3 的第一列就足够了。