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