我正在尝试预测每周数据的销售量。数据由以下变量组成:周数、销售额、平均价格/单位、假期(该周是否包含假期)和促销(如果有促销活动),共 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
输出看起来不正确,因为销售的预测值非常小,因为先前值(训练)值的销售值通常在数千范围内。
如果有人能告诉我为什么它会不正确/出乎意料,那就太好了。