时间序列预测 - ARIMA/ARIMAX 与 R 中的每日数据

Posted

技术标签:

【中文标题】时间序列预测 - ARIMA/ARIMAX 与 R 中的每日数据【英文标题】:Time series forecast - ARIMA/ARIMAX with daily data in R 【发布时间】:2019-08-10 17:46:36 【问题描述】:

enter code here我正在做一个项目来分析和预测客户销售和收入的时间序列。为了准确性,我想测试各种模型 - 即 Holt 线性方法、Holt Winter 方法、ARIMA、季节性 ARIMA 和 ARIMAX(因为我还想考虑数据中的分类变量)。 数据是每日形式的,因此我选择频率为 7。

startW <- as.numeric(strftime(head(revenue$date, 1), format = "%W"))
startD <- as.numeric(strftime(head(revenue$date, 1) + 1, format =" %w")) 
revenue <- ts(revenue$amount, start = c(startW, startD), frequency = 7)

然后我将其拆分为训练和测试,将上个月作为保留集。

我已经为 ARIMA 模型使用了 auto.arima() 函数,它给出了 ARIMA(0,0,0)(2,1,0)[7]。这意味着什么?残差图看起来像这样

在此之后,我将假期添加为外生变量

encoded_regressors <- sparse.model.matrix(amount~holiday, data = train_set)
encoded_regressors <- (encoded_regressors[,-1])
model2 <- auto.arima(revenue.train, xreg = encoded_regressors)

我现在得到的模型是 ARIMA(0,0,1)(2,1,0)[7],这里是残差图。

对于这两种情况,如果我看到预测值和观察值的差异,则百分比差异平均在 3%-50% 之间。如何改进我的模型并了解 ARIMA 模型的输出?

谢谢!

【问题讨论】:

【参考方案1】:

您似乎正在使用forecast 包中的auto.arima()。你可以在 Rhere 中找到很多关于使用这个包和时间序列预测的好信息。对于您给出的输出,第一个括号中的 3 个值是指 ARIMA 模型中 p、d 和 q 的顺序。 p 是自回归项,d 是差分阶数,q 是移动平均项。第二个括号中的 3 个值指的是季节性分量 P、D 和 Q,其中每一个分别指的是自回归、差分和移动平均项。括号中的数字 7 表示您选择的频率。

一般来说,要找到最好的 ARIMA 模型,您会查看 Akaike 信息准则 (AIC) 或贝叶斯信息准则 (BIC),并尝试将它们最小化。再次,查看链接了解更多详情。

【讨论】:

感谢您的链接,我已经将其用作参考,但有一些困惑。根据上面的图,这个模型是一个好的模型吗?为每日数据设置频率 = 7 是否合适? 您是否尝试过为auto.arima() 使用stepwise = FALSE 选项?我认为对每日数据使用 30 的频率可能更合适。这大概是每月的频率。通常,您应该遵循 Box-Jenkins 程序进行模型选择。这涉及使用 ACF 和 PACF 分别选择移动平均和自回归项的顺序。有关nice 的说明,请参见此处。 是的,但我看到残差 ACF 图中出现峰值。【参考方案2】:

时间序列的 ACF 和 PACF 图如下

如果我的理解是正确的,ACF 建议 q = 7,PACF 建议 p = 7?

【讨论】:

以上是关于时间序列预测 - ARIMA/ARIMAX 与 R 中的每日数据的主要内容,如果未能解决你的问题,请参考以下文章

与 foreach 并行预测 nnet 输出时 R 内存爆炸

计算机与通信行业发展趋势时间序列预测R分析

R数据分析:生存数据的预测模型建立方法与评价

R e1071 预测与 libsvm 不同

如何在 R 中绘制回归树的预测值与实际值? [关闭]

在 R 中查看随机森林的预测值与实际值