最近又有好些朋友来咨询掌柜关于使用ARIMA模型对时间序列进行预测的👉这篇博客 中遇到了一些问题,这里掌柜再次收集大家的问题来一一解答。
PS: 本博客假定大家已经具备ARIMA模型的基础知识!!!
问题汇总如下:
- 怎么判断我的数据是否适合ARIMA模型呢?
- 得到的时序预测图是负值,明显不对。怎样保证为正值?
- 想要最后预测的数据,而不是预测的平稳数据,怎么拿到?
- 想获取预测点的值应该怎么做的,没有API接口呀,可以告知一下吗?
- 不需要做ADF检验吗?
- 怎么确定ARMA/ARIMA的最优模型?
- 还原到原始时间序列那一步应该是要加在平稳序列预测的结果上吧。代码第95行中的ts_record,运行完之后是原始数据呀,这样还是对非平稳的原始序列进行预测的?
- 在pr = result.predict(‘1988’, ‘2020’,typ=‘levels’) 里面加入了typ参数 就和这个结果是一样的。请问是不是typ这个参数控制输出预测值的类型呢?
- 最后用真实值预测的时候,真实值和预测值的线性变化图趋势很接近。但是用 result.predict(‘1988’, ‘2020’)想将模型的预测值导出来的时候,发现输出结果和真实值差别很大,将真实值和输出值单独做线图也差别很大,是为什么?
- statsmodels的版本是多少?
- AttributeError: ‘NoneType’ object has no attribute 'fit’报错如何解决?
该篇博客先解决前面六个问题,
1. 怎么判断我的数据是否适合(非季节性)ARIMA模型呢?
答:
一般需要遵循两点:
- 时序数据本身具有一定的趋势性,差分过后可以去除趋势,让时序呈现平稳状态;
- 可以通过历史数据的较强自相关性(自相关性指时间序列滞后值之间的线性关系)对未来进行预测;且受随机噪声的影响不大。
2. 得到的时序预测图是负值,明显不对。怎样保证为正值?
答:
首先思考一下,为何时序预测会出现负值?不同案例中可能存在多个客观因素干扰,但是大致会有这么几种情况:
- 第一种:你的时序数据本身是呈现递减趋势,而且差分后波动幅度不大,那么预测就会出现负值的情况;
- 第二种:预测的步长太长,超过实际可预测区间;
- 第三种:时序数据中存在缺失值或NULL值,你之前处理缺失值或NULL值的时候,用 0填充过,所以才会后面