我在每日时间序列上拟合 ARIMA 模型。数据从 2010 年 2 月 1 日到 2011 年 7 月 30 日每天收集,是关于报纸销售的。由于可以找到每周的销售模式(周一到周五的日均销量通常相同,然后在周六和周日增加),我试图捕捉这种“季节性”。给定销售数据“数据”,我创建时间序列如下:
salests<-ts(data,start=c(2010,1),frequency=365)
然后我使用 auto.arima(.) 函数通过 AIC 标准选择最佳 ARIMA 模型。结果始终是一个非季节性的 ARIMA 模型,但如果我尝试使用以下语法的一些 SARIMA 模型作为示例:
sarima1<-arima(salests, order = c(2,1,2), seasonal = list(order = c(1, 0, 1), period = 7))
我可以获得更好的结果。ts 命令/arima 规范有什么问题吗?每周模式非常强大,所以我预计在捕捉它时不会遇到这么多困难。任何帮助都会非常有用。谢谢你,朱莉娅·德皮耶里
更新:
我已经改变了一些论点。更准确地说,当我设置 时,程序选择 ARIMA(4,1,3) 作为最佳模型D=7
,但 AIC 和其他拟合优度指标和预测也没有改善。我想由于季节性和周期性之间的混淆而存在一些错误..?!
使用 Auto.arima 调用并获得输出:
modArima<-auto.arima(salests,D=7,max.P = 5, max.Q = 5)
ARIMA(2,1,2) with drift : 1e+20
ARIMA(0,1,0) with drift : 5265.543
ARIMA(1,1,0) with drift : 5182.772
ARIMA(0,1,1) with drift : 1e+20
ARIMA(2,1,0) with drift : 5137.279
ARIMA(2,1,1) with drift : 1e+20
ARIMA(3,1,1) with drift : 1e+20
ARIMA(2,1,0) : 5135.382
ARIMA(1,1,0) : 5180.817
ARIMA(3,1,0) : 5117.714
ARIMA(3,1,1) : 1e+20
ARIMA(4,1,1) : 5045.236
ARIMA(4,1,1) with drift : 5040.53
ARIMA(5,1,1) with drift : 1e+20
ARIMA(4,1,0) with drift : 5112.614
ARIMA(4,1,2) with drift : 4953.417
ARIMA(5,1,3) with drift : 1e+20
ARIMA(4,1,2) : 4960.516
ARIMA(3,1,2) with drift : 1e+20
ARIMA(5,1,2) with drift : 1e+20
ARIMA(4,1,3) with drift : 4868.669
ARIMA(5,1,4) with drift : 1e+20
ARIMA(4,1,3) : 4870.92
ARIMA(3,1,3) with drift : 1e+20
ARIMA(4,1,4) with drift : 4874.095
Best model: ARIMA(4,1,3) with drift
所以我假设 arima 函数应该用作:
bestOrder <- cbind(modArima$arma[1],modArima$arma[5],modArima$arma[2])
sarima1<-arima(salests, order = c(4,1,3))
没有季节性成分参数和周期规范。数据和探索性分析表明,每周可以大致考虑相同的每周模式,唯一的例外是 2010 年 8 月(销售额持续增长)。不幸的是,我根本没有时间序列建模方面的专业知识,实际上我正在尝试这种方法,以便找到其他参数和非参数模型的替代解决方案,我试图适应这些有问题的数据。我也有许多因数值变量,但它们在解释响应变量方面表现出低功效:毫无疑问,最难建模的部分是时间分量。此外,构建代表月份和工作日的虚拟变量并不是一个可靠的解决方案。