1

我正在尝试预测每周数据的销售量。数据由以下变量组成:周数、销售额、平均价格/单位、假期(该周是否包含假期)和促销(如果有促销活动),共 104 周。所以基本上最后 6 个 obs 的数据集看起来像:

 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 周和第 1o6 周)的值时,我提供第 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

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

如果有人能告诉我为什么它会不正确/出乎意料,那就太好了。

4

2 回答 2

1

如果您事先知道一年中的某些周或一年中的某些事件可能很重要,您可以形成一个可能有用的传递函数。您可能必须包含一些 ARIMA 结构来处理短期自回归结构和/或一些 Pulse/Level Shift/Local Trends 来处理未指定的确定性序列(省略变量)。如果您想发布所有数据,我很乐意为您证明这一点,从而提供零基础帮助。或者,您可以通过 dave@autobox.com 将其通过电子邮件发送给我,我将对其进行分析并将数据和结果发布到列表中。关于这个问题的其他评论员可能也希望对比较分析做同样的事情。

于 2013-03-21T14:00:48.230 回答
-3

您的模型中的 51 个每周假人在哪里?没有它们,您将无法捕捉季节性。

于 2013-03-19T11:35:42.520 回答