如何解决使用 ARIMA 的预测时间序列似乎没有考虑活动结束
我有不同的时间序列 ts_values
转向列表,我想使用 ARIMA 模型预测下一个项目,但它似乎不关心零:
row['shop_id']: 5 row['item_id']: 5037
[2599.0,2599.0,3998.0,1299.0,1499.0,2997.5,749.5,0.0,0.0]
predicted: 2599.019975890905
-------------------
row['shop_id']: 5 row['item_id']: 5320
predicted: 0
-------------------
row['shop_id']: 5 row['item_id']: 5233
[2697.0,1198.0,599.0,2997.0,1199.0,0.0]
predicted: 2697.000099353263
-------------------
row['shop_id']: 5 row['item_id']: 5232
predicted: 0
-------------------
row['shop_id']: 5 row['item_id']: 5268
predicted: 0
-------------------
row['shop_id']: 5 row['item_id']: 5039
[5198.0,6597.0,5197.0,0.0]
predicted: 5198.0926378541535
所以我想知道我在那里做错了什么。
这是我的代码:
import statsmodels.tsa.arima.model as smt
ranges = range(1,5)
for difference in ranges:
# try:
tmp_model = smt.ARIMA(ts_values,order=(0,1,0),trend='t').fit()
tmp_aic = tmp_model.aic
if tmp_aic < best_aic:
best_aic = tmp_aic
best_difference = difference
best_model = tmp_model
# except Exception as e:
# print(e)
# continue
if best_model is not None:
y_hat = best_model.forecast()[0]
我知道 difference
在那里没有用。它用于 ARIMA 的系数。但有人告诉我,就我的列表的最大大小为 32 而言,我应该使用简单的时间预测 (0,0)。
解决方法
编辑:Statsmodels 0.12.2 版本已经发布,所以您的原始代码现在应该可以工作了。
不幸的是,这是 v0.12.1 中 ARIMA
的一个已知错误。在 v0.12.2 发布之前,一种选择是改用 SARIMAX
:
from statsmodels.tsa.statespace import sarimax as smt
...
tmp_model = smt.SARIMAX(ts_values,order=(0,1,0),trend='t').fit()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。