R语言时序-AR、MA与ARMA的判断及定阶


模型判断:

ACF拖尾ACF截尾
PACF拖尾ARMA(p,q)MA(q)
PACF截尾AR(p )序列本身不存在明显的自相关性,ARMA类模型可能不适用
  • Step1 看ACF图:
    – ACF截尾:判断为MA(q)模型,q为最后一个超出2倍标准差(蓝线)的阶数,即超出水平蓝线的纵向线水量-1。
    – ACF拖尾:可能为AR( p)模型也可能为ARMA(p,q)模型
  • Step2 看PACF图:
    – PACF截尾:AR( p)模型,p为最后一个超出2倍标准差(蓝线)的阶数,即超出水平蓝线的纵向线数量 。
    – PACF拖尾:ARMA(p,q)模型,ACF和PACF看不出阶数,通过eacf定阶

【注1】传统R语言绘制的ACF图第一根竖线的阶数为零,MA(1)有两根竖线超出蓝线,但第二根的阶数不是2是1,以此类推


(1) MA
MA(1): x t = ε t + 0.4 ε t − 1 x_t = \varepsilon_t + 0.4\varepsilon_{t-1} xt=εt+0.4εt1
MA(2): x t = ε t + 0.4 ε t − 1 − 0.7 ε t − 2 x_t = \varepsilon_t + 0.4\varepsilon_{t-1} - 0.7\varepsilon_{t-2} xt=εt+0.4εt10.7εt2
MA(3): x t = ε t + 0.4 ε t − 1 − 0.7 ε t − 2 + 0.5 ε t − 3 x_t = \varepsilon_t + 0.4\varepsilon_{t-1} - 0.7\varepsilon_{t-2} + 0.5\varepsilon_{t-3} xt=εt+0.4εt10.7εt2+0.5εt3

ma1 <- arima.sim(n=1000, list(ma=0.4))
ma2 <- arima.sim(n=1000, list(ma=c(0.4,-0.7)))
ma3 <- arima.sim(n=1000,list(ma=c(0.4,-0.7, 0.5)))
par(mfcol=c(2,3))
ma1a <- acf(ma1)
ma1p <- pacf(ma1)
ma2a <- acf(ma2)
ma2p <- pacf(ma2)
ma3a <- acf(ma3)
ma3p <- pacf(ma3)

在这里插入图片描述
看ACF图,首先可判断上三幅ACF都是截尾,均为MA模型 。
左边ACF图第1条线对应滞后阶数为0,第2条线对应滞后阶数为1,以超出2倍标准差的最大滞后阶数作为MA模型的阶数,此时ACF超出蓝线的最大滞后阶数为1,故左边第一组应为MA(1)模型;
中间ACF图最后1条超出2被标准差水平线的纵向线阶数为2,有3条纵向线超出2倍标准差线,判断为MA(2)模型;
右边ACF图最后1条超出2被标准差水平线的纵向线阶数为3,有4条纵向线超出2倍标准差线,判断为MA(3)模型;

(2) AR
AR(1): x t = 0.8 x t − 1 + ε t x_t = 0.8x_{t-1}+\varepsilon_t xt=0.8xt1+εt
AR(2): x t = − x t − 1 − 0.5 x t − 2 + ε t x_t = -x_{t-1}-0.5x_{t-2}+\varepsilon_t xt=xt10.5xt2+εt
AR(3): x t = x t − 1 − 0.5 x t − 2 + 0.3 x t − 3 + ε t x_t = x_{t-1} - 0.5x_{t-2} + 0.3x_{t-3}+\varepsilon_t xt=xt10.5xt2+0.3xt3+εt

ar1 <- arima.sim(n=1000, list(ar=0.8))
ar2 <- arima.sim(n=1000, list(ar=c(-1,-0.5)))
ar3 <- arima.sim(n=1000, list(ar=c(1,-0.5,0.3)))

在这里插入图片描述
从图倒推,首先ACF图皆为拖尾,可判断未AR或者ARMA模型;再看PACF图:
左边PACF图明显截尾状态,最后一个超出2倍标准差(蓝线)的阶数为1(有1根纵向线超过2倍标准差),故为AR(1)模型;
中间PACF图截尾,最后一个超出2倍标准差(蓝线)的阶数为2,判断为AR(2)模型;
右变PACF图中最后一个超出2倍标准差(蓝线)的阶数为3,判断为AR(3)模型。

(3) ARMA(p,q)
ARMA(1,1): x t = 0.8 x t − 1 + ε t + 0.4 ε t − 1 x_t = 0.8x_{t-1} + \varepsilon_t + 0.4\varepsilon_{t-1} xt=0.8xt1+εt+0.4εt1
ARMA(2,1): x t = 0.8 x t − 1 − 0.4 x t − 2 + ε t + 0.4 ε t − 1 x_t = 0.8x_{t-1} - 0.4x_{t-2} + \varepsilon_t + 0.4\varepsilon_{t-1} xt=0.8xt10.4xt2+εt+0.4εt1
ARMA(1,2): x t = 0.8 x t − 1 + ε t + 0.4 ε t − 1 + 0.7 ε t − 2 x_t = 0.8x_{t-1} + \varepsilon_t + 0.4\varepsilon_{t-1} + 0.7\varepsilon_{t-2} xt=0.8xt1+εt+0.4εt1+0.7εt2

arma11 <- arima.sim(n=1000,list(sr=0.8,ma=0.4))
arma21 <- arima.sim(n=1000,list(ar=c(0.8, -0.4),ma=0,4))
arma12 <- arima.sim(n=1000,list(ar=0.8, ma=c(0.4,0.7)))

在这里插入图片描述
ACF图皆为拖尾,判断为AR模型或ARMA模型;
PACF图也为拖尾,判断为ARMA模型,阶数无法通过ACF和PACF图看出。

  • 23
    点赞
  • 229
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
ARMA模型是一种在时间序列分析中常用的模型,它由自回归(AR)和滑动平均(MA)两个部分组成。AR部分表示当前值与过去值之间的线性关系,而MA部分表示当前值与随机误差项之间的线性关系。ARMA模型可以用来预测未来时间序列的值。 建立ARMA模型的过程包括以下几个步骤: 1. 平稳性检验:首先需要确认时间序列是否满足平稳性条件。可以通过绘制时序和使用统计量(如自相关函数)来判断序列是否平稳[3]。 2. 确定阶数:确定ARMA的阶数,即p和q。可以使用自相关函数和偏自相关函数来帮助确定合适的阶数。 3. 参数估计:使用最小二乘法或最大似然估计来估计模型的参数。 4. 模型检验:对模型进行检验,包括检查残差的自相关性、正态性和异方差性等。 5. 模型预测:使用已建立的ARMA模型来进行时间序列的预测。 在实际应用中,可以使用R语言中的TSA包来进行ARMA模型的建模和预测。要建立ARMA模型,首先需要确认时间序列的平稳性,可以绘制时序来观察序列的趋势和波动。接下来,可以使用自相关函数来确定ARMA的阶数。然后,通过最小二乘法或最大似然估计来估计模型的参数。最后,对模型进行检验,包括检查残差的自相关性和正态性等。完成模型检验后,可以使用已建立的ARMA模型来进行时间序列的预测。 总结起来,建立ARMA模型的过程包括平稳性检验、阶数的确定、参数估计、模型检验和模型预测。通过这一过程,我们可以建立一个合适的ARMA模型来预测时间序列的未来值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值