auto.arima使用xreg和一起预测几个ts

时间:2014-07-30 12:34:06

标签: r time-series modeling forecasting

我试图在auto.arima中给出一组变量来运行xreg。我的代码是:

xregvars <- cbind(df$V1,df$V2,df$V3) 
xregvars1 <- as.matrix(sapply(xregvars , as.numeric))
sales <- ts(df$sales, frequency=7)
arimaxFits <- group_by(df, df$region) %>% do(fit=auto.arima((sales), xreg = xregvars1))

其中df包含变量:week, region, sales, V1, V2, V3。有65个不同的地区,我试图预测每个地区的销售情况。此外,每个地区有120个观测值。数据看起来像这样:

head(df)
  week     region  sales     V1       V2         V3             
02/01/2011 Albany 55.48295 32.08712 42.02820 0.62777576        
09/01/2011 Albany 56.27815 32.13170 42.12087 0.00000000      
16/01/2011 Albany 58.38205 32.13313 42.20314 1.45937474 
23/01/2011 Albany 55.40233 32.12635 42.08676 0.01351126 
30/01/2011 Albany 57.09780 32.10210 42.04645 0.92708561 
06/02/2011 Albany 59.62308 32.10204 42.12536 0.47682755 

我提到Rob Hyndman教授的解决方案给出here,但我仍然得到这个错误:

Error in model.frame.default(formula = x ~ xreg, drop.unused.levels = TRUE) : 
  variable lengths differ (found for 'xreg')

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为您不需要进行as.matrix(sapply(xregvars, as.numeric))转换。当我读入您的示例数据(我放入CSV)时,xregvars已经是数字矩阵。 as.matrix调用使它成为18个元素的向量,而不是我从数据中获得的6x3矩阵。也许这就是为什么auto.arima抱怨长度的原因。如果您确实需要转换,请尝试:

xregvars1 <- matrix(as.numeric(xregvars), ncol=3)