0x02 ARIMA模型
AR模型
AR(Autoregressive, 自回归)模型, 描述的是当前值与历史值之间的关系:
Xt=c+i=1∑pφiXt−i+εi
其中εi是AR模型拟合后的剩余部分(即其他因素造成的), 称为自回归部分的随机误差. 有如下的特征:
所有时间点t对应的εt都是一个期望值为0的正态分布, 但每个时间的对应正态分布的方差σt2不同
不同时间点之间的εt, 相互之间没有任何联系
MA模型
MA(Moving Average, 移动平均)模型, 公式如下:
Xt=μ+εt+i=1∑qθiεt−i
可以看出, MA模型描述的是自回归模型在每个时间点上的误差的累计模型. 之所以成为移动平均, 首先是每个当前值只考虑若干个之前的误差, 体现了移动; 另外, 由于每个时间点上自回归模型的误差如上面所说, 是独立的, 因此可以代表对应时间的序列, 对它们使用带权值的加和体现了平均的性质.
ARIMA模型
ARIMA(Autoregressive Integrated Moving Average model)模型就是将上面两个模型进行综合, 并在使用ARMA模型拟合之前, 进行差分(Integrated)操作.
Xt=φ0+∑i=1pφiXt−i+εt−∑j=1qθjεt−j
上式中的Xt是经过d阶差分之后的序列, 这点需要注意, 差分并没有在公式中体现出来.
因此ARIMA的需要调整的参数为(p,d,q), 对应于AR模型参数, 差分阶数, MA模型参数.
另外需要注意的是ARIMA模型是对平稳时间序列建模的工具, 因此需要通过差分, 将非平稳序列转换为平稳序列.
ARIMA模型参数的确定
通过ACF(Autocorrelation Function, 自相关函数)和PACF(Partial Autocorrelation Function, 偏自相关函数), 做出两张图, 根据ACF图和PACF的表现, 主观的确定
评价函数衡量, 如使用AIC赤池信息量和BIC贝叶斯信息量来衡量当前参数对应的ARIMA模型的拟合效果, 综合选取拟合效果更好的参数作为最优的参数组合. 类似于机器学习中的调参过程.
Python中的ARIMA模型
ARIMA模型的初始化参数有:
endog: 现有的时间序列
order: 模型参数, 以(p, d, q)组成的三元
tuple形式传递exog: 外部变量, 作为时间变量之外的参数为拟合模型所使用. 如果使用外部变量, 模型就变为了ARIMAX, X指的是外部变量
ARIMA模型通过.fit()方法进行拟合训练. .fit()函数接受的参数为:
disp: 打印轮数, 如果
disp<0, 则不打印信息
.fit()方法返回一个statsmodels.tsa.arima.ARIMAResults对象, 作为拟合的结果. 该对象包含了多种信息:
ARIMAResults.fittedvalues: 拟合历史的结果
以及通过.predict()方法预测时间序列的未来:
最后更新于