2015-12-21 128 views
1

我正在尝试在GTS对象使用ARIMA模型回归时,此错误:ARIMA模型预测的分层数据回归

错误...傅立叶(X,K,长度(X)+( 1:h)): K不得大于period/2

下面是一段简单的重复性代码。我应该怎样设置k?我尝试过不同的价值观,但似乎没有任何工作。

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)) 
+0

对不起,通过添加i更正了代码。 gts来自hts包 - https://cran.r-project.org/web/packages/hts/hts.pdf – jjreddick

+0

您的时间系列还需要频率属性。 –

回答

2

这里有几个问题。首先,你的时间序列只包含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的第一列就足够了。