时间序列数据无处不在,伴随着时间的延续,人们希望通过对过去时间段数据的统计去预测未来时间段相应指标的变化情况,由此时间序列预测模型应运而生。这里我们将着重讲一下利用python进行的传统时序预测模型。
首先导入数据,为保证数据的有效性先进行数据的清洗。检验数据有无缺失(根据结果无缺失),检验有无异常值(可采用Hampel滤波器进行时序异常识别与处理,这里数据无异常没处理)。
这里提供3中传统时间序列预测方法,分别为arima,prophet以及结合前两个模型输出作为输入的树模型
arima要求数据是平稳的(经过adf检验)且为白噪声,否则需要对原始数据进行差分。这里输入原始数据利用相应代码进行检验,确定差分次数与结果
对arima模型,可通过自动寻参确定p,d,q的值,并进行建立。观察建立模型的模型诊断图模型诊断图包括拟合残差的折线图,密度分布图,qq图,与自相关。arima模型认为模型拟合残差应为白噪声且非自相关的,这才是好的模型。这里给出arima模型的拟合情况供参考
prophet模型由Facebook开创,简单易上手,使用要求并无arima一定要为平稳时间序列,用原始数据建模结果如下
在实际应用中,arima模型预测更偏向数值精确度,而prophet模型更偏向预测趋势。我们可以用树模型将两种模型进行结合,采用回归预测的方式得到更优异的结果,如下图所示
结果令人十分满意,具体数据及代码可供参考:https://mbd.pub/o/bread/ZZyXlpxq。