上回书说到,预测模型中的插值与拟合已经讲述完毕。现在我们研究的是时间序列模型。
分类
与普通的数值拟合不同,时间序列的拟合需要考虑多种因素,本质上是一种高级的拟和方式。同时也是一种黑箱模型,
小结一下:多参数对多/单结果:神经网络模型
单/复参数-单结果:线性回归模型
参数极度短缺:灰色模型。
定义
可以简单理解为自变量为时间的数据拟合模型。
底层逻辑
承认事物发展的延续性,运用过去的时间序列数据进行统计分析,推测出事物的发展趋势;另一方面充分考虑到由于偶然因素影响而产生的随机性,为了消除随机波动产生的影响,利用历史数据进行统计分析,并对数据进行适当处理,进行趋势预测。即认真考虑时间流逝的规律性。
分析方法
与普通黑箱模型不同,时间序列要考虑的有:
1.长期趋势(这也是所有黑箱模型考虑的)
2,季节变动
3.循环变动(根据某些规律产生)
4。不规则变动(如某些特殊节假日、特殊事件等)、
建模中一般用加法模型和惩罚模型,或者综合两者,底层逻辑就是将这些变动/趋势量化后叠加、
解决方法
1.kalman filter
可以参见上一讲的链接,了解卡尔曼滤波法。
2.时间序列平均水平法
比较简单的算法,通过每年熟知的平均值预测;改进方法为通过每年的增长量加权平均。说句实话意义不是很大,只是列出。也可以改为微分方程预测。
3.指数平滑法
相比于方法2,指数平滑法进一步加强了观察期近期观察值对预测值的作用,对不同时间的观察值所赋予的权数不等,从而加大了近期观察值的权数,使预测值能够迅速反映市场实际的变化。模型中参数a越大,那么近期所占的权重就越大。
S(t)=aY+(1-a)S(t-1).因此该模型需要自己设初始值S(0)和a.
可以用excel等软件直接实现,平滑预测基于的更像是人口模型等的底层逻辑。当一次指数平滑后曲线有线性特征时,考虑二次(当平滑成直线)、三次平滑(当平滑成抛物线)加强稳定性。在一般的数据中勉强够用了。
改进方法:当数据有一个明显上升/下降趋势时,可以加一个趋势补偿函数,由此来弥补原本预测带来的滞后效应。X补偿=bX原+(1-b)(\delta Y)。就是根据最近的趋势以及原本的函数分权相加。如果已经进行过二、三阶平滑,可以考虑留下最近5组数据作为实验组来裁定是否有滞后,
前面三种基本还是线性回归/神经网络/微分方程的思路,对于时间导致的周期性的考虑不大。
4.ARIMA模型
在实际中遇到的时间序列往往有趋势性、季节性等, 本节主要采用差分方法,有时还要用时间序列的变换方法,消除其趋势性、季节性,使得变换后的序列是平稳序列,并用ARMA 序列的方法去研究。
ARMA分为AR和MA
AR(p阶):X(t)=其余X(n)的加权和+白噪声
MA(q阶):X(t)=其余X(n)的移动量加权和—+白噪声
差分方法可消除正相关但同时引入负相关
AR项可消除正相关,MA项消除负相关
AR项和MA项作用会相互抵消,通常包含两种要素时可尝试减少某项,避免过拟合。
(1)差分法去掉周期性、趋势性以及随机性
(2)取参数ARIMA(p,d,q)
(3)带入数据求解。
mat代码如下:
clc,clear
a = text read(<