0x02 ARIMA模型
AR模型
AR(Autoregressive, 自回归)模型, 描述的是当前值与历史值之间的关系:
其中是AR模型拟合后的剩余部分(即其他因素造成的), 称为自回归部分的随机误差. 有如下的特征:
所有时间点对应的都是一个期望值为0的正态分布, 但每个时间的对应正态分布的方差不同
不同时间点之间的, 相互之间没有任何联系
MA模型
MA(Moving Average, 移动平均)模型, 公式如下:
可以看出, MA模型描述的是自回归模型在每个时间点上的误差的累计模型. 之所以成为移动平均, 首先是每个当前值只考虑若干个之前的误差, 体现了移动; 另外, 由于每个时间点上自回归模型的误差如上面所说, 是独立的, 因此可以代表对应时间的序列, 对它们使用带权值的加和体现了平均的性质.
ARIMA模型
ARIMA(Autoregressive Integrated Moving Average model)模型就是将上面两个模型进行综合, 并在使用ARMA模型拟合之前, 进行差分(Integrated)操作.
上式中的是经过阶差分之后的序列, 这点需要注意, 差分并没有在公式中体现出来.
因此ARIMA的需要调整的参数为, 对应于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()
方法预测时间序列的未来:
最后更新于
这有帮助吗?