我试图在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')
我做错了什么?
答案 0 :(得分:1)
我认为您不需要进行as.matrix(sapply(xregvars, as.numeric))
转换。当我读入您的示例数据(我放入CSV)时,xregvars
已经是数字矩阵。 as.matrix
调用使它成为18个元素的向量,而不是我从数据中获得的6x3矩阵。也许这就是为什么auto.arima抱怨长度的原因。如果您确实需要转换,请尝试:
xregvars1 <- matrix(as.numeric(xregvars), ncol=3)