预测类问题中的时间序列预测模型

前言:时间序列预测模型适用于含有时间变量的模型预测,对中短期的预测有着较好的结果,对长期预测不适用。本文重点介绍ARIMA模型的原理及代码实现。

其他模型总结:​【Python】Python中的经典时间序列预测模型总结_风度78的博客-CSDN博客

1、概念介绍

A. 平稳性:序列的均值和方差不发生明显变化,即数据在平行于x轴的某条直线上下波动

严平稳:严平稳表示的分布不随时间的改变而改变(例如白噪声

弱平稳:期望与相关系数不变(未来某个时刻的预测依赖于过去的数据)

B. 差分法:时间序列在t与t-k时刻的差值为k阶差分序列

pandas数据类型 :df.diff(n)   n为差分阶数

2ARIMA(差分自回归移动平均模型)

AR(自回归模型):描述当前值和历史值之间的关系,用变量自身的历史时间数据对自身进行预测。

使用要求:

·必须满足平稳性的要求

·必须具有自相关性(自相关系数如果小于0.5,不可使用)

预测类问题中的时间序列预测模型_第1张图片

MA(移动平均模型):移动平均模型关注的是自回归模型中误差项的累加,移动平均法能够有效消除预测中的随机波动问题

预测类问题中的时间序列预测模型_第2张图片

ARMA:自回归移动平均模型

该模型适用于数据平稳的时间序列,如果非平稳则需要进行差分操作。差分的阶数视结果而定。

I:表示差分

(p,d,q): d表示差分阶数

         p为自回归项

         q为移动平均项

预测类问题中的时间序列预测模型_第3张图片

自相关函数(ACF):有序的随机变量序列与其自身相比较 取值在-1~+1

偏自相关函数(PACF)

ACF:确定q

PACF:确定p

截尾:数据落在置信区间内

时间序列预测——ARIMA(差分自回归移动平均模型)(1))_起飞的木木的博客-CSDN博客_差分整合移动平均自回归模型

3、如何确定pqd

方法一:读图确定(根据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图查看确定

预测类问题中的时间序列预测模型_第4张图片

预测类问题中的时间序列预测模型_第5张图片

步骤:

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)图,不需要公式

你可能感兴趣的:(数学建模,python,机器学习)