笔记说明
在datacamp网站上学习“Time Series with R ”track
“ARIMA Modeling with R”课程 做的对应笔记。
学识有限,错误难免,还请不吝赐教。
学习的课程为“ARIMA Modeling with R”,主要用astsa包。
如无特殊说明,笔记中所使用数据均来自datacamp课程。
ARMA模型拟分为(一)(二)两部分发布,第一部分主要包括ARMA模型简介,模拟ARMA数据、拟合ARMA模型,单纯的AR模型或MA模型的定阶。第二部分主要包括ARMA模型的定阶策略、模型选择、残差分析。模型预测部分见ARIMA模型的笔记。
ARMA模型的定阶策略
在时间序列笔记-ARMA模型(一)中,我们提到如果数据符合单纯AR或MA模型,则根据ACF和PACF图的截尾情况可以比较方便的确定AR阶数或MA阶数:
AR(p) | MA(q) | ARMA(p,q) | |
---|---|---|---|
ACF | 拖尾 | 在lag q处截尾 | 拖尾 |
PACF | 在lag p处截尾 | 拖尾 | 拖尾 |
但是如果p q都不为0,那么ACF和PACF图均为拖尾表现,p、q的值就无法一眼看出来了,例如我们模拟一个ARMA数据:
x <- arima.sim(model = list(order = c(2, 0, 1), ar = c(1, -.9), ma = .8), n = 250)
# Plot x
plot(x)
# Plot the sample P/ACF of x
acf2(x)


可以看出,从ACF和PACF图中很难判断p q的值。
推荐的定阶策略:从最低阶开始拟合模型,每次增加一个参数并观察拟合结果的变化。
The best approach to fitting ARMA is to start with a low order model, and then try to add a parameter at a time to see if the results change.
模型选择
根据推荐的定阶策略,我们实际上要拟合很多不同模型,根据拟合结果从中选择最优模型作为最终模型。判断模型拟合优劣的指标有很多,这里我们简单介绍2个最为常用的指标:AIC BIC
简单来说,AIC或BIC会计算模型在训练数据上的误差:
该项越小越好,为防止过拟合,再加上对模型复杂性的惩罚项:
随着模型复杂度越大,Error项会减小但是惩罚项会增加。
AIC和BIC对于模型拟合效果的判断都是越小越好。二者对于Error项的计算是一样的,不同在于惩罚项设置不同:AIC中,BIC中
我在简书上看到一篇讲AIC BIC比较详细的博客,推荐阅读:AIC和BIC准则
在进行模型拟合时,sarima()函数会生成模型的AIC值和BIC值,帮助我们我们选择适当的模型。
残差分析(residual analysis)
ARMA模型假定残差是一个高斯白噪声,进行残差分析可以考察这个假定。
用sarima()函数拟合模型时会自动输出一个残差分析图,包括四个部分:
- 标准化残差图 应该表现为均值为0方差为1的白噪声
- 残差的样本自相关函数图 应该表现为白噪声的自相关图(无明显自相关)
- 残差的正态性Q-Q图。Q-Q用来辅助检查数据的正态性。残差的正态性是ARMA模型的一个重要假定。如果残差满足正态性时,Q-Q图上的点应该大致上沿对角线分布
- Q-统计量的P值图 Ljung-Box检验可以检验一些列观测值是否是随机的独立观测值,可用于检验ARIMA模型残差是否彼此独立,Q-统计量图绘制了Ljung-Box检验下各lag值对应的P值,应该表现为约有95%的P值大于0.05(点位于蓝色线以上)
下例中对同一个数据分别拟合两个ARMA模型并考察残差情况:

# Fit an MA(1) to dl_varve. Examine the residuals
sarima(dl_varve,p=0,d=0,q=1)
# Fit an ARMA(1,1) to dl_varve. Examine the residuals
sarima(dl_varve,p=1,d=0,q=1)


残差分析是建模的重要环节,也有助于我们进行模型选择。
网友评论