【时间序列】ARMA 时序模型形式、理解、统计特性

时间序列系列的相关介绍,从零梳理时序概念、相关技术、和实战案例,欢迎订阅 👉玩转时间序列 跟踪全部内容。

ARMA基本形式

wold分解定理:任何平稳序列都可以分解为确定性序列(多项式确定趋势)和随机序列(平稳的零均值误差)之和。它是现代时间序列分析理论的灵魂,是构造 ARMA 模型拟合平稳序列的理论基础。[1]

是时间序列方法中最经典的模型之一,全称为自回归移动平均模型(Autoregressive moving average model),根据wold分解定理,模型有以下三种形式:

  1. 自回归模型()

  2. 移动平均模型()

  3. 自回归移动平均模型()

模型和模型均为模型的特殊形式,即对于,若阶数, 则退化为自回归模型;若阶数, 则退化为移动平均模型。

更直白地理解就是,模型是把随机序列简化,保留历史序列;对偶地,模型则是将历史序列简化,保留随机序列。和分别对应这wold分解定理中的确定性序列和随机序列。

AR模型

AR模型主要是根据历史观测值来预测未来时序。

具体为时间序列历史时点的线性组合加上当前白噪声的形式,它是随机游走的一个简单扩展,公式如下:

其中, 为 阶滞后的时序,为预测误差,为自回归系数。

1、平稳性判断

模型并不都是平稳的。有两种判断方法:特征根、平稳域

  • 特征根判断

模型平稳的充要条件是它的 个特征根都在单位圆内,即。单位根假设检验方法及Python实现可以参考:时间序列平稳性检验方法

  • 平稳域判断

平稳域是使得特征根都在单位圆内的系数集合,即

单位根都在单位圆内

对于低阶的模型可采用平稳域的办法判定平稳性。

2、统计特性

如果模型是平稳定的,那么有以下几个统计特性。

  • 均值为常数

  • 方差为常数

  • 自相关系数有拖尾性,呈负指数衰减

    此特性说明平稳时序具有短期相关性,即只有近期序列值对现时值的影响比较明显,间隔越远的过去值对现时值的影响越小。

    证明过程不详细展开,感兴趣可以参考AR自相关系数拖尾[2]

  • 偏自相关系数具有p步截尾性

下面通过一组实例分析AR模型的特性。

首先根据AR的公式我们手动制造几组数据,造出滞后1/2/3/4阶的时序数据,如下:

# 生成N(0,1)随机正态分布(白噪声)
np.random.seed(12)
noise = np.random.randn(200)
wnoise = (noise-np.mean(noise))/np.std(noise)

# AR(1):X(t)=0.5X(t-1)
AR1 = [1]  # 初始值
for i in range(200):
    x = 0.5*AR1[i]+wnoise[i]
    AR1.append(x)

# AR(2):X(t)=-0.4X(t-1)+0.5X(t-2)
AR2 = [1,0.8]  # 初始值
for i in range(200):
    x = -0.4*AR2[i+1]+0.5*AR2[i]+wnoise[i]
    AR2.append(x)

# AR(3):X(t)=0.1X(t-1)-0.4X(t-2)+0.5X(t-3)
AR3 = [1,0.8,0.9]  # 初始值
for i in range(200):
    x = 0.1*AR3[i+2] - 0.4*AR3[i+1] + 0.5*AR3[i] + wnoise[i]
    AR3.append(x)

# AR(4):X(t)=-0.1X(t-1)+0.1X(t-2)-0.4X(t-3)+0.5X(t-4)
AR4 = [1,0.8,0.9,1]  # 初始值
for i in range(200):
    x = -0.1*AR4[i+2] + 0.1*AR4[i+2] - 0.5*AR4[i+1] + 0.5*AR4[i] + wnoise[i]
    AR4.append(x)

对以上4组数据进行可视化。

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(15, 8))
fig.subplots_adjust(hspace=0.5)
ax1.plot(AR1)
ax1.set_title('AR(1): X(t)=0.5X(t-1)')
ax2.plot(AR2)
ax2.set_title('AR(2): X(t)=-0.4X(t-1)+0.5X(t-2)')
ax3.plot(AR3)
ax3.set_title('AR(3): X(t)=0.1X(t-1)-0.4X(t-2)+0.5X(t-3)')
ax4.plot(AR4)
ax4.set_title('AR(4): X(t)=-0.1X(t-1)+0.1X(t-2)-0.4X(t-3)+0.5X(t-4)')
plt.show()
94079ed8706285540532b0c0c02b6766.png

从图中大致来看都是平稳的,我们进一步通过ADF假设检验再进行平稳性的确认。

from arch.unitroot import ADF
ar1_adf = ADF(AR1)
ar2_adf = ADF(AR2)
ar3_adf = ADF(AR3)
ar4_adf = ADF(AR4)

print(ar1_adf.summary().as_text())
print(ar2_adf.summary().as_text())
print(ar3_adf.summary().as_text())
print(ar4_adf.summary().as_text())
f135b9cebd82a446d7bcb40c200d6b34.png

4组数据的检验结果p值均为0(这里只展示一组结果),拒绝原假设,所以可判断数据都是平稳的。

接着我们进行ACF和PACF的可视化分析。

from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

fig, ax = plt.subplots(4, 2, figsize=(15, 12))
fig.subplots_adjust(hspace=0.5)

plot_acf(AR1, lags=40, ax=ax[0][0])
ax[0][0].set_title('ACF(AR(1))')
plot_pacf(AR1, lags=40, ax=ax[0][1])
ax[0][1].set_title('PACF(AR(1))')

plot_acf(AR2, lags=40, ax=ax[1][0])
ax[1][0].set_title('ACF(AR(2))')
plot_pacf(AR2, lags=40, ax=ax[1][1])
ax[1][1].set_title('PACF(AR(2))')

plot_acf(AR3, lags=40, ax=ax[2][0])
ax[2][0].set_title('ACF(AR(3))')
plot_pacf(AR3, lags=40, ax=ax[2][1])
ax[2][1].set_title('PACF(AR(3))')

plot_acf(AR4, lags=40, ax=ax[3][0])
ax[3][0].set_title('ACF(AR(4))')
plot_pacf(AR4, lags=40, ax=ax[3][1])
ax[3][1].set_title('PACF(AR(4))')
plt.figure(figsize=(20, 6))

plt.show()
16f0928baa72556fdcd28d1fcae4267e.png

通过以上可视化发现:

  • ACF 拖尾:不管是滞后多少阶,自相关性ACF都是在较短的滞后期中丝滑地下降至蓝色区域(置信区间)并稳定在该范围内浮动,这种特性我们称之为拖尾特性

  • PACF p阶截尾:PACF会在对应的滞后期突然截断,然后迅速下降至蓝色区间,中间没有任何连续性,我们称之为截尾特性。比较有意思的是,对于不同阶的数据,截断的位置不一样。例如,对于AR(1)模型截断发生在滞后一阶的位置,所以也叫做1阶截尾,对于AR(2)模型就是2阶截尾,其他同理。

MA模型

MA模型主要是根据历史预测误差来预测未来时序的。

它并非像模型一样是历史时序值的线性组合,而是历史白噪声的线性组合,公式如下:

以上结构称为阶移动平均模型,简记模型。

其中,为当前的白噪声干扰项,为滞后阶的白噪声干扰项,为干扰项系数。

模型是基于历史白噪声的线性组合,因为白噪声本身是平稳的,所以 MA模型天生就是平稳的,不需要判断。但是是有可逆性的。

1、可逆性

什么是可逆性?

定义:如果一个模型能表示成收敛的模型形式,那么该模型就是可逆模型,一个自相关系数唯一对应一个可逆模型。

我们用滞后算子来表示和两个模型。

  • 模型:,

  • 模型:,

如果模型可逆,即存在 ,那么模型可以写成 ,这和模型的算子形式 是一样的,也就是前面说的可以表示成收敛的模型形式。[3]

通过以上我们也可以发现模型和模型是存在内在联系的, 模型的可逆概念和模型的平稳概念是完全对偶的概念

模型的可逆性判断条件是:,或者模型的系数多项式的根都在单位圆外,二者等价。

为什么要判断可逆性?

为了得到唯一解。如果可逆,过程可以用当前期和往期数据来表达模型;如果不可逆,过程是用当前期和未来期数据来表达的模型,大部分情况下非常不方便,因为未来期的数据我们是得不到的。

此外,如果可逆,一些参数估计和预测的算法才会有效。例如,使用条件最大似然法求解模型系数时会假设往期误差为零,如果不可逆(参数绝对值大于1),那么假设误差为零显然会带来似然函数和精确似然函数相差太大,导致条件似然方法不再有效。[4]

2、残差序列

模型根据历史时序数据进行预测,历史时序数据可以直接观测到的。但是历史的残差我们是无法观测到的,这里就产生一个问题:历史的残差序列是如何获取的?

好多初学时间序列的朋友都有这样的疑问。关于这个问题《时间序列分析:预测与控制(第3版)》一书[5] 给出了答案,通过以下公式递归计算出来。

对于 ,有

可以通过相关系数公式求得,而可以通过似然函数求得,这样就估算出了 ,然后再基于得到的结果递归求 最后得整个残差序列。

具体计算过程不详细展开,感兴趣的可以参考一下这个帖子或者原书籍:

https://stats.stackexchange.com/questions/26024/moving-average-model-error-terms

3、统计特性

模型的统计特征与模型正好成对偶关系,我们还是先抛出结论:

  • 当时,模型一定为平稳模型

  • 模型的偏自相关系数拖尾,自相关系数阶截尾

下面通过一组实例分析模型的ACF和PACF特性。

我们假设已经获取了一组白噪声序列,通过公式造出了1/2/3/4阶的4组模型数据,如下:

num = 500
np.random.seed(32)
noise = np.random.randn(num)
wnoise = (noise-np.mean(noise))/np.std(noise)

MA1 = [-0.9*wnoise[i] + wnoise[i+1] for i in range(num) if i<num-1]
MA2 = [-0.2*wnoise[i] + 0.5*wnoise[i+1] + wnoise[i+2] for i in range(num) if i<num-2]
MA3 = [-0.4*wnoise[i] + 0.9*wnoise[i+1] + 0.8*wnoise[i+2] + wnoise[i+3] for i in range(num) if i<num-3]
MA4 = [-0.7*wnoise[i] + 0.5*wnoise[i+1] + 0.8*wnoise[i+2] + 0.4*wnoise[i+3] + wnoise[i+4] for i in range(num) if i<num-4]
86e8d8d0ea3d0549c355cfc9ddf6f747.png

同样对4组模型数据进行ACF和PACF的可视化。

0086e08ad042806bce53cc173cf93918.png

通过观察发现:

  • ACF q阶截尾:自相关系数在对应阶数位置出现突然截断,之后进入蓝色区域保持稳定。

  • PACF 拖尾:偏自相关系数会平滑降低至蓝色区域(2倍标准差)并保持在该范围之内,是明显的拖尾特征。

ARMA模型

模型结合了和模型,是模型和模型的线性函数,公式如下:

引入延迟算子,模型简记为:

,为阶自回归系数多项式

,为阶移动平均系数多项式

如前面介绍,

  • 当时,退化成了

  • 当时,退化成了

所以,和都是的特例,都属于模型。

由于是个混合体,因此继承了和两个模型的体质,在平稳性上继承了模型,在可逆性上继承了模型,判断过程与各模型一样。

1、统计特性

模型的自相关系数和偏自相关系数均为拖尾的特性。

至此,模型的三种形式均已介绍完毕,其统计特性总结如下。

ab7ec6d0f4278437d9b276ca9808f3d6.png

截尾:从某阶开始均为(接近)0的性质

拖尾:指数级逐渐衰减为(接近)0的性质

了解三种模型的统计特性对于时序建模定阶有很大帮助,关于平稳时序的建模我们下一篇继续介绍。

完整代码请移步知识星球👇

95810d7083ca4b41dac5967194023ba9.jpeg

参考

[1]    

百度百科: wold分解定理

[2]

王燕.应用时间序列分析[M].中国人民大学出版社.201907: AR自相关系数拖尾公式推导

[3]

应用时间序列分析笔记: https://zhuanlan.zhihu.com/p/349855440

[4]

为什么MA过程要求可逆: https://zhuanlan.zhihu.com/p/520118295

[5]

时间序列分析:预测与控制-3rd: 如何得到时序残差序列

 
 

e12e86db63afe56ebfd2f36bb4d511a6.jpeg

 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑机器学习交流qq群955171419,加入微信群请扫码
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值