前言:时间序列预测模型适用于含有时间变量的模型预测,对中短期的预测有着较好的结果,对长期预测不适用。本文重点介绍ARIMA模型的原理及代码实现。
其他模型总结:【Python】Python中的经典时间序列预测模型总结_风度78的博客-CSDN博客
1、概念介绍:
A. 平稳性:序列的均值和方差不发生明显变化,即数据在平行于x轴的某条直线上下波动
严平稳:严平稳表示的分布不随时间的改变而改变(例如白噪声)
弱平稳:期望与相关系数不变(未来某个时刻的预测依赖于过去的数据)
B. 差分法:时间序列在t与t-k时刻的差值为k阶差分序列
pandas数据类型 :df.diff(n) n为差分阶数
2、ARIMA(差分自回归移动平均模型)
AR(自回归模型):描述当前值和历史值之间的关系,用变量自身的历史时间数据对自身进行预测。
使用要求:
·必须满足平稳性的要求
·必须具有自相关性(自相关系数如果小于0.5,不可使用)
MA(移动平均模型):移动平均模型关注的是自回归模型中误差项的累加,移动平均法能够有效消除预测中的随机波动问题。
ARMA:自回归移动平均模型
该模型适用于数据平稳的时间序列,如果非平稳则需要进行差分操作。差分的阶数视结果而定。
I:表示差分
(p,d,q): d表示差分阶数
p为自回归项
q为移动平均项
自相关函数(ACF):有序的随机变量序列与其自身相比较 取值在-1~+1
偏自相关函数(PACF)
ACF:确定q
PACF:确定p
截尾:数据落在置信区间内
时间序列预测——ARIMA(差分自回归移动平均模型)(1))_起飞的木木的博客-CSDN博客_差分整合移动平均自回归模型
3、如何确定p、q、d
方法一:读图确定(根据PACF图确定p,根据ACF图确定q,存在误差)
需要用到statsmodels.graphics.tsaplots模块中的plot_pacf和plot_acf函数
PACF图:plot_pacf(data);plt.show()
ACF图:plot_acf(data);plt.show()
方法二:BIC(贝叶斯信息准则)
画出热力图,根据颜色深浅找出颜色最深的块对应的系数,代码实现:p与q的最大值通过PACF和ACF图查看确定
步骤:
1、画出图像,初步判断数据平稳性
严格判断(ADF检验): sm.tsa.stattools.adfuller(data)
查看结果的p-value值,如果小于0.05则认为平稳
2、如果平稳跳过该步骤,非平稳采用差分操作后回到第一步,查看p-value,直到小于0.05
3、画出PACF和ACF图像,初步判断p、q值
严格判断:BIC
4、根据得到的p、d、q训练模型:
md=sm.tsa.arima.ARIMA(data,order=(p,d,q)).fit()
查看结果:md.summary()
预测:md.predict(data)
5、误差检验(Q-Q图)
两种方式:调用库函数和根据原理绘制
·调用库函数:from scipy.stats import probplot
probplot(data,plot=plt);plt.show()
·根据原理绘制:
先将数据从小到大排序:sd=sorted(data)
求出函数f的反函数:m=data.mean() ;s=data.std();n=len(data)
x=(np.arange(n)+1/2)/n; y=norm.ppf(x,m,s)
plt.plot(yi,sd,’o’,label=”Q-Q图”);plt.plot(sd,sd,label=”参照直线”);plt.show()
python使用ARIMA进行时间序列的预测(基础教程)_开始King的博客-CSDN博客_arima预测
建模时步骤:
1、画出函数图像(plt.plot(x,y)),给出p-value值说明稳定与否
2、若不稳定,给出差分公式 xi-x(i-1)=yi i=2,3…
3、给出PACF和ACF图,此时应该给出ARIMA函数表达式(如果使用BIC确定需要给出热度图)
4、误差检验(Q-Q)图,不需要公式