python - pm AutoARIMA 没有找到合适的型号
问题描述
我正在尝试使用 pmdarima 的 AutoARIMA 创建季节性 ARIMA (SARIMA) 模型。原因是新数据将在项目的生命周期内变得可用,并且需要自动找到最佳时间序列模型的代码。不幸的是,我当前的代码似乎正在产生垃圾:
import pmdarima as pm
import pandas as pd
train_data = pd.read_csv("test.csv", header=None, names=["Value"])["Value"]
model = pm.AutoARIMA(seasonal=True, m=168, trace=True)
model.fit(train_data.fillna(0))
输出(到目前为止,在大型服务器上经过相当长的一段时间后):
Performing stepwise search to minimize aic
ARIMA(2,1,2)(1,0,1)[168] intercept : AIC=inf, Time=4041.19 sec
ARIMA(0,1,0)(0,0,0)[168] intercept : AIC=-35451.160, Time=1.07 sec
ARIMA(1,1,0)(1,0,0)[168] intercept : AIC=inf, Time=15118.06 sec
ARIMA(0,1,1)(0,0,1)[168] intercept : AIC=-35951.886, Time=3805.77 sec
ARIMA(0,1,0)(0,0,0)[168] : AIC=-35453.123, Time=0.56 sec
ARIMA(0,1,1)(0,0,0)[168] intercept : AIC=-35723.198, Time=2.69 sec
ARIMA(0,1,1)(1,0,1)[168] intercept : AIC=inf, Time=61326.67 sec
ARIMA(0,1,1)(0,0,2)[168] intercept : AIC=inf, Time=39971.60 sec
ARIMA(0,1,1)(1,0,0)[168] intercept : AIC=-36054.745, Time=4211.60 sec
ARIMA(0,1,1)(2,0,0)[168] intercept : AIC=-36344.782, Time=30668.84 sec
数据有两种季节性模式(一种每天和一种每周)。包括每日模式会给出合理的结果(使用m=24
),但每周往往会导致AIC=inf
如上例所示。
解决方案
问题似乎是 pmdarima 会在一段时间后超时,并插入一个 inf 的 AIC 作为非计算 AIC 的替代品。我最终进行了常规分析,并选择了一个稍微过大的 SARIMA 模型,它需要更长的时间才能适应,但肯定包括所有相关的影响。
推荐阅读
- git - 更改并未反映在 Visual Studio 通过 GIT 的 bitbucket 中
- python - 点对应的基本矩阵
- c++ - 调用类的静态成员传递参数并获取返回值
- javascript - 谷歌分析实时 API 从响应中访问“totalsForAllResults”属性
- python - 如何使用 Vispy 将视觉图像转换为极坐标
- python - 如果一组字符串为空,如何使用循环检查?
- sql - SQL Server 代理作业安全密码
- wordpress - 如何将affiliatewp 选择会员字段添加到最终会员注册表
- python - Pandas - 删除 x 列中带有字符串 a 和 y 列中带有字符串 b 的行
- python - 拆分列表列表中的元素,该列表是一个字符串