【目标数据】
ARMA: 针对弱平稳/宽平稳时间序列分析
ARIMA: 针对非平稳非周期性时间序列分析
SARIMA: 针对非平稳周期性时间序列分析。
【自协方差与自相关系数】
时间序列在t时刻记作Xt,在s时刻记作Xs,那么这两个时刻对应的时间序列的自协方差的计算公式为:
假设时间间隔t-s=k, 并且假设时间序列的均值为常数u, 那么上述公式可以写成
自相关系数的表达式为:
如果方差恒定,上述公式可以写成:
【平稳性】
满足以下三个条件即为宽平稳:
1)均值为常数
2)自协方差仅与时间差相关,与具体时刻无关
3)自相关系数仅与时间差相关,与具体时刻无关。或者说方差为常数。
非平稳的时间序列可以通过差分使其变为平稳的时间序列。
【平稳性检验】
ADF检验(单位根检验):
单位根检验是指检验序列中是否存在单位根,如果存在单位根就说明是非平稳时间序列。
python的statsmodels.tsa.stattools.adfuller提供了单位根检验方法。
【滞后算子表示法】
时间序列中,通常用L或者B表示之前的若干值,假设时间序列为:
那么对于t>1:
或者
或者
或者
以及
【ARMA】
Autoregressive–moving-average model 自回归移动平均
包含对过去值的p阶回归以及过去error误差的q阶移动平均。
如果用AR(p)来描述,公式可以写成:
其中是高斯白噪声。
用MA(q)来描述,公式为:
μ 是 的均值 (often assumed to equal 0), , ,... 是白噪声.
将AR与MA综合起来,可以表示为:
忽略常数项c,将X移至等号左侧,用滞后算子表示法:
简化表示:
或者
其中:
【ARIMA】
Autoregressive integrated moving average
对于非平稳并且非周期的时间序列,可以通过差分操作使之变为平稳时间序列,差分是指将当前时刻的值减去前一时刻的值,得到的时间序列还可以继续差分下去,比如总共进行了d次差分操作,那么叫做d阶差分,因此ARIMA在ARMA的基础上进行了d阶差分操作以后的公式为:
【SARIMA】
周期性时间序列,可以作为ARIMA的扩展,因此,首先需要去除周期性,去除的方式是在周期间隔上做一次ARIMA,此时可以得到一个非平稳非周期性的时间序列,然后在此基础之上再一次使用ARIMA进行分析。可以表示为:
ARIMA(p, d, q) × (P, D, Q)S ,其中各参数含义为:
p,d,q的含义与上面的ARIMA里面含义相同。
举个例子:对于周期为12的非平稳时间序列,那么ARIMA(3,1,0) x (2,1,0)12的含义为:
D=1意味着当前时刻t的值与过去一个周期时间点t-12的1阶差分,
P=2意味着当前时刻t的值是过去两个周期时间点t-12以及t-24的回归。
处理以后得到的时间序列再通过ARIMA(3,1,0)进行分析。
参考:
https://en.wikipedia.org/wiki/Autoregressive%E2%80%93moving-average_model
https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average
https://en.wikipedia.org/wiki/Lag_operator
https://machinelearningmastery.com/sarima-for-time-series-forecasting-in-python/