2015-12-21 88 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的第一列就足夠了。