r - auto.arima 使用 xreg 并一起预测多个 ts

标签 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')

我做错了什么?

最佳答案

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

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

关于r - auto.arima 使用 xreg 并一起预测多个 ts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25036986/

相关文章:

c# - 动态数据模型

r - R中的日期时间转换错误-重复的第一时间点

r - 收到错误 "' xreg' 和 'newxreg' 有不同的列数”

python - 绘制 Pandas 时间序列数据框的线性回归线的置信区间

modeling - 数据流图中的推/拉可视化

list - 将主体集转换为 NetLogo 中的列表

r - 聚合/Group_by R中的第二个最小值

r - "Globe"形状的俄罗斯 map

python - 在 python 中使用时间序列进行预测

c# - 时间序列趋势数据的重采样、聚合和插值