使用Auto.arima预测多变量数据

时间:2013-03-19 09:17:49

标签: r forecasting

我正在尝试预测每周数据的销售情况。数据包括这些变量,周数为no,sales,avgprice / perunit,holiday(无论该周是否包含假期)和促销(如果有任何促销),为期104周。所以基本上最后6个数据集的视图如下:

 Week     Sales       Avg.price.unit Holiday    Promotion

  101     8,970             50       0         1

  102    17,000             50       1         1

  103    23,000             80       1         0

  104    28,000            180       1         0

  105                      176       1         0

  106                      75        0         1

现在我要预测第105周和第106周。所以我使用ts函数创建了单变量时间序列x,然后通过发出命令运行auto.arima函数:

x<-ts(sales$Sales, frequency=7)
>  fit<-auto.arima(x,xreg=external, test=c("kpss","adf","pp"),seasonal.test=c("ocsb","ch"),allowdrift=TRUE)
>fit
ARIMA(1,1,1)                    

**Coefficients:
          ar1      ma1  Avg.price.unit   Holiday  Promotion

      -0.1497  -0.9180          0.0363  -10.4181    -4.8971

s.e.   0.1012   0.0338          0.0646    5.1999     5.5148

sigma^2 estimated as 479.3:  log likelihood=-465.09
AIC=942.17   AICc=943.05   BIC=957.98**

现在,当我想预测过去2周(第105周和第6周)的值时,我会提供第105周和第106周的回归量的外部值:

forecast(fit, xreg=ext)

where ext consists of future values of regressors for last 2 weeks.

The output comes as:

 Point         Forecast    Lo 80    Hi 80    Lo 95    Hi 95

15.85714       44.13430 16.07853 72.19008 1.226693 87.04191

16.00000       45.50166 17.38155 73.62177 2.495667 88.50765

输出看起来不正确,因为预测的销售价值非常低,因为先前价值(培训)值的销售价值通常在数千的范围内。

如果有人能告诉我为什么它会变得不正确/意外,那就太棒了。

2 个答案:

答案 0 :(得分:0)

如果您事先知道一年中的某些星期或一年中的某些事件可能很重要,那么您可以形成一个有用的转移功能。您可能必须包含一些ARIMA结构来处理短期自回归结构和/或某些脉冲/电平转换/局部趋势以处理未指定的确定性序列(省略变量)。如果您想发布所有数据,我很乐意证明您为此提供零点帮助。或者,您可以通过dave@autobox.com将其发送给我,我将对其进行分析并将数据和结果发布到列表中。关于这个问题的其他评论员可能也想对比较分析做同样的事情。

答案 1 :(得分:-3)

模特中每周有51个假人?没有它们你就无法捕捉季节性。