ARIMA模型的定阶原理与建模分析

  • 前言
  • 一:AR(p)(p)(p)模型的定阶原理
  • 二:MA(q)(q)(q)模型的定阶原理
  • 三:ARMA模型
  • 四:实际建模运用
  • 五:建模结果比较分析
  • 六:总结

前言

ARIMA模型是很经典的自回归模型,这篇文章将全面的讲述ARIMA的建模步骤。从定阶原理解释到实际数据代码编写模型来进行回归预测。基于理论推导和代码编写一气呵成!

岁月如云,匪我思存,写作不易,望路过的朋友们点赞收藏加关注哈,在此表示感谢!

一:AR(p)(p)(p)模型的定阶原理

AR模型是一个线性模型,p阶自回归模型的一般表达式为:

xt=ϕ0+ϕ1xt−1+ϕ2xt−2+...+ϕpxt−p+εt(#)x_t=\phi_0+\phi_1x_{t-1}+\phi_2x_{t-2}+...+\phi_px_{t-p}+\varepsilon_t(\#)xt​=ϕ0​+ϕ1​xt−1​+ϕ2​xt−2​+...+ϕp​xt−p​+εt​(#) ,

其中 {εt}\{\varepsilon_t\}{εt​} 是一个白噪声序列,既然AR模型被建立,此AR模型是满足弱平稳条件的,则存在 ∣ϕp∣<1\left| \phi_p \right|<1∣ϕp​∣<1和自相关系数,以及E(εt)=0;Var(εt)=σ2;E(εsεt)=0,∀s≠tE(\varepsilon_t)=0;Var(\varepsilon_t)=\sigma^2;E(\varepsilon_s\varepsilon_t)=0,\forall s\ne tE(εt​)=0;Var(εt​)=σ2;E(εs​εt​)=0,∀s​=t。

  • 首先我们先建立AR(2)模型

xt=ϕ0+ϕ1xt−1+ϕ2xt−2+εt,∣ϕ1∣<1,∣ϕ2∣<1(∗)x_t=\phi_0+\phi_1x_{t-1}+\phi_2x_{t-2}+\varepsilon_t,\left| \phi_1 \right|<1,\left| \phi_2\right|<1(*)xt​=ϕ0​+ϕ1​xt−1​+ϕ2​xt−2​+εt​,∣ϕ1​∣<1,∣ϕ2​∣<1(∗)

那么我们对上式 (*) 左右两边各减去 uuu 得:
xt−μ=ϕ0+ϕ1(xt−1−u)+ϕ2(xt−2−u)+(ϕ1+ϕ2−1)μ+εt(1)x_t-\mu=\phi_0+\phi_1(x_{t-1}-u)+\phi_2(x_{t-2}-u)+(\phi_1+\phi_2-1)\mu+\varepsilon_t (1)xt​−μ=ϕ0​+ϕ1​(xt−1​−u)+ϕ2​(xt−2​−u)+(ϕ1​+ϕ2​−1)μ+εt​(1) ,

又由弱平稳性质, (∗)(*)(∗) 两边取均值可得:

μ=ϕ0+ϕ1E(xt−1)+ϕ2E(xt−2)+E(εt)\mu=\phi_0+\phi_1E(x_{t-1})+\phi_2E(x_{t-2})+E(\varepsilon_t)μ=ϕ0​+ϕ1​E(xt−1​)+ϕ2​E(xt−2​)+E(εt​) ,

即 μ=ϕ0+ϕ1μ+ϕ2μ+0⇒μ=ϕ01−ϕ1−ϕ2\mu=\phi_0+\phi_1\mu+\phi_2\mu+0\Rightarrow \mu=\frac{\phi_0}{1-\phi_1-\phi_2}μ=ϕ0​+ϕ1​μ+ϕ2​μ+0⇒μ=1−ϕ1​−ϕ2​ϕ0​​ ,

那么把此结果带入 (1)(1)(1) 式可得:

xt−μ=ϕ1(xt−1−μ)+ϕ2(xt−2−u)+εt(2)x_t-\mu=\phi_1(x_{t-1}-\mu)+\phi_2(x_{t-2}-u)+\varepsilon_t(2)xt​−μ=ϕ1​(xt−1​−μ)+ϕ2​(xt−2​−u)+εt​(2) ,

(2)(2)(2) 式两边乘以 (xt−1−u)(x_{t-1}-u)(xt−1​−u):

(xt−μ)(xt−1−u)=ϕ1(xt−1−μ)(xt−1−u)+ϕ2(xt−2−u)(xt−1−u)+εt(xt−1−u)(3)(x_t-\mu)(x_{t-1}-u)=\phi_1(x_{t-1}-\mu)(x_{t-1}-u)+\phi_2(x_{t-2}-u)(x_{t-1}-u)+\varepsilon_t(x_{t-1}-u)(3)(xt​−μ)(xt−1​−u)=ϕ1​(xt−1​−μ)(xt−1​−u)+ϕ2​(xt−2​−u)(xt−1​−u)+εt​(xt−1​−u)(3)

(3)(3)(3) 式两边同时取期望后得:

E[(xt−μ)(xt−1−u)]=ϕ1E[(xt−1−μ)(xt−1−u)]+ϕ2E[(xt−2−u)(xt−1−u)](4)E\left[ (x_t-\mu)(x_{t-1}-u) \right]=\phi_1E\left[ (x_{t-1}-\mu)(x_{t-1}-u) \right]+\phi_2E\left[ (x_{t-2}-u)(x_{t-1}-u) \right](4)E[(xt​−μ)(xt−1​−u)]=ϕ1​E[(xt−1​−μ)(xt−1​−u)]+ϕ2​E[(xt−2​−u)(xt−1​−u)](4)

对 (4)(4)(4) 式两边再除以方差 σ0\sigma_0σ0​ 之后得 ρ1=ϕ1+ϕ2ρ1\rho_1=\phi_1+\phi_2\rho_1ρ1​=ϕ1​+ϕ2​ρ1​ ,这里的 ρ1\rho_1ρ1​ 为自相关系数。
则可得 ρ1=ϕ1/(1−ϕ2)\rho_1=\phi_1/(1-\phi_2)ρ1​=ϕ1​/(1−ϕ2​) ,同理 (2) 式两边同时乘以 (xt−2−μ)(x_{t-2}-\mu)(xt−2​−μ)

可得 ρ2=ϕ1ρ1+ϕ2\rho_2=\phi_1\rho_1+\phi_2ρ2​=ϕ1​ρ1​+ϕ2​。

同理我们推广 (2)(2)(2) 式两边乘以 (xt−k−μ)(k≥3)(x_{t-k}-\mu)(k\geq3)(xt−k​−μ)(k≥3) ,

可得 ρk=ϕ1ρk−1+ϕ2ρk−2\rho_k=\phi_1\rho_{k-1}+\phi_2\rho_{k-2}ρk​=ϕ1​ρk−1​+ϕ2​ρk−2​ 。

从 ρk\rho_kρk​ 的表达式我们容易发现尽管 ∣ϕ1∣<1,∣ϕ2∣<1\left| \phi_1 \right|<1,\left| \phi_2\right|<1∣ϕ1​∣<1,∣ϕ2​∣<1 ,但 ρk\rho_kρk​ 永远不会为0,所以会出现拖尾现象。

  • 接着我们拓展至AR(p)(p)(p)模型

在平稳的前提下,我们容易得 μ=ϕ01−ϕ1−ϕ2−...−ϕp\mu=\frac{\phi_0}{1-\phi_1-\phi_2-...-\phi_p}μ=1−ϕ1​−ϕ2​−...−ϕp​ϕ0​​ ,

将 (#)(\#)(#) 两边减去均值 μ\muμ 可得: xt−μ=ϕ1(xt−1−μ)+ϕ2(xt−2−u)+...+ϕp(xt−p−μ)+εt(5)x_t-\mu=\phi_1(x_{t-1}-\mu)+\phi_2(x_{t-2}-u)+...+\phi_p(x_{t-p}-\mu)+\varepsilon_t(5)xt​−μ=ϕ1​(xt−1​−μ)+ϕ2​(xt−2​−u)+...+ϕp​(xt−p​−μ)+εt​(5) ,

那么对 (5)(5)(5) 左右两边同乘以 (xt−μ)、(xt−1−μ)、...、(x_t-\mu)、(x_{t-1}-\mu)、...、(xt​−μ)、(xt−1​−μ)、...、 并除以方差 σ0\sigma_0σ0​ 可得:

1=ϕ1ρ1+ϕ2ρ2+...+ϕpρp,ρ1=ϕ1+ϕ2ρ2+ϕ3ρ3+...+ϕpρp−1,ρ2=ϕ1ρ1+ϕ2+ϕ3ρ3+...+ϕpρp−2,...,ρp=ϕ1ρp−1+ϕ2ρp−2+ϕ3ρp−3+...+ϕp1=\phi_1\rho_1+\phi_2\rho_2+...+\phi_p\rho_p , \rho_1=\phi_1+\phi_2\rho_2+\phi_3\rho_3+...+\phi_p\rho_{p-1} , \rho_2=\phi_1\rho_1+\phi_2+\phi_3\rho_3+...+\phi_p\rho_{p-2 },..., \rho_p=\phi_1\rho_{p-1}+\phi_2\rho_{p-2}+\phi_3\rho_{p-3}+...+\phi_p1=ϕ1​ρ1​+ϕ2​ρ2​+...+ϕp​ρp​,ρ1​=ϕ1​+ϕ2​ρ2​+ϕ3​ρ3​+...+ϕp​ρp−1​,ρ2​=ϕ1​ρ1​+ϕ2​+ϕ3​ρ3​+...+ϕp​ρp−2​,...,ρp​=ϕ1​ρp−1​+ϕ2​ρp−2​+ϕ3​ρp−3​+...+ϕp​ ,

根据这些关系式,模仿AR(2)的递推关系式可得:
ρk=ϕ1ρk−1+ϕ2ρk−2+...+ϕkρk−p(k≥p)\rho_k=\phi_1\rho_{k-1}+\phi_2\rho_{k-2}+...+\phi_k\rho_{k-p}(k\geq p)ρk​=ϕ1​ρk−1​+ϕ2​ρk−2​+...+ϕk​ρk−p​(k≥p) ,

因此符合AR(p)AR(p)AR(p)的平稳序列模型,其自相关系数在ppp 阶之后一直不会为0,存在所谓拖尾现象。

二:MA(q)(q)(q)模型的定阶原理

MA(q)MA(q)MA(q)模型被称为移动平均模型,一个 qqq 阶的移动平均模型可以用数学式表达为:
xt=μ+εt+θ1εt−1+θ2εt−2+...+θqεt−qx_t=\mu+\varepsilon_t+\theta_1\varepsilon_{t-1}+\theta_2\varepsilon_{t-2}+...+\theta_q\varepsilon_{t-q}xt​=μ+εt​+θ1​εt−1​+θ2​εt−2​+...+θq​εt−q​ ,

那么满足的性质有

E(εt)=0;Var(εt)=σ2;E(εsεt)=0,∀s≠tE(\varepsilon_t)=0;Var(\varepsilon_t)=\sigma^2;E(\varepsilon_s\varepsilon_t)=0,\forall s\ne tE(εt​)=0;Var(εt​)=σ2;E(εs​εt​)=0,∀s​=t;

E(xt)=μ;Var(xt)=(1+θ12+θ22+...+θq2)σ2E(x_t)=\mu;Var(x_t)=(1+\theta_1^2+\theta_2^2+...+\theta_q^2)\sigma^2E(xt​)=μ;Var(xt​)=(1+θ12​+θ22​+...+θq2​)σ2

  • 首先我们还是建立MA(2)MA(2)MA(2)模型

如xt=μ+εt+θ1εt−1+θ2εt−2x_t=\mu+\varepsilon_t+\theta_1\varepsilon_{t-1}+\theta_2\varepsilon_{t-2}xt​=μ+εt​+θ1​εt−1​+θ2​εt−2​ ,

则 E(xt)=μ,Var(xt)=(1+θ12+θ22)σϵ2E(x_t)=\mu,Var(x_t)=(1+\theta_1^2+\theta_2^2)\sigma_\epsilon^2E(xt​)=μ,Var(xt​)=(1+θ12​+θ22​)σϵ2​

对于 Var(xt)Var(x_t)Var(xt​) ,两边同时被 σ1=Cov(xt,xt−1)\sigma_1=Cov(x_t,x_{t-1})σ1​=Cov(xt​,xt−1​) 相除有

ρ1=Cov(xt,xt−1)(1+θ12+θ22)σ2\rho_1=\frac{Cov(x_t,x_{t-1})}{(1+\theta_1^2+\theta_2^2)\sigma^2}ρ1​=(1+θ12​+θ22​)σ2Cov(xt​,xt−1​)​ ,

又Cov(xt,xt−1)=E[(xt−μ)(xt−1−μ)]=E[(εt+θ1εt−1+θ2εt−2)(εt−1+θ1εt−2+θ2εt−3)]=Cov(x_t,x_{t-1})=E\left[ (x_t-\mu)(x_{t-1}-\mu) \right]=E\left[ (\varepsilon_t+\theta_1\varepsilon_{t-1}+\theta_2\varepsilon_{t-2})(\varepsilon_{t-1}+\theta_1\varepsilon_{t-2}+\theta_2\varepsilon_{t-3}) \right]=Cov(xt​,xt−1​)=E[(xt​−μ)(xt−1​−μ)]=E[(εt​+θ1​εt−1​+θ2​εt−2​)(εt−1​+θ1​εt−2​+θ2​εt−3​)]=

E(εt−1εt+θ1εt−2εt+θ2εt−3εt+θ1εt−2εt−1+θ1θ2εt−3εt−1+θ2εt−2εt−1+θ2εt−3εt−2+θ1εt−12+θ1θ2εt−22)E\left( \varepsilon_{t-1}\varepsilon_t+\theta_1\varepsilon_{t-2}\varepsilon_t+\theta_2\varepsilon_{t-3}\varepsilon_t+\theta_1\varepsilon_{t-2}\varepsilon_{t-1}+\theta_1\theta_2\varepsilon_{t-3}\varepsilon_{t-1}+\theta_2\varepsilon_{t-2}\varepsilon_{t-1}+\theta_2\varepsilon_{t-3}\varepsilon_{t-2}+\theta_1\varepsilon_{t-1}^2+\theta_1\theta_2\varepsilon_{t-2}^2\right)E(εt−1​εt​+θ1​εt−2​εt​+θ2​εt−3​εt​+θ1​εt−2​εt−1​+θ1​θ2​εt−3​εt−1​+θ2​εt−2​εt−1​+θ2​εt−3​εt−2​+θ1​εt−12​+θ1​θ2​εt−22​)
=θ1E(εt−12)+θ1θ2E(εt−22)=\theta_1E(\varepsilon_{t-1}^2)+\theta_1\theta_2E(\varepsilon_{t-2}^2)=θ1​E(εt−12​)+θ1​θ2​E(εt−22​)

那么最终 ρ1=θ1+θ1θ21+θ12+θ22\rho_1=\frac{\theta_1+\theta_1\theta_2}{1+\theta_1^2+\theta_2^2}ρ1​=1+θ12​+θ22​θ1​+θ1​θ2​​。

如果我们相同的方法求解 ρ2=θ21+θ12+θ22\rho_2=\frac{\theta_2}{1+\theta_1^2+\theta_2^2}ρ2​=1+θ12​+θ22​θ2​​ ,那么 ρ3=0\rho_3=0ρ3​=0 这是显然的。

  • 接着我们建立MA(q)MA(q)MA(q)模型

同理对于MA(q)MA(q)MA(q)模型,我们经过相同的运算可得最终表达式

ρl=θl+θ1θl+1+θ2θl+2+...+θq−lθq1+θ12+θ22+...+θq2\rho_l=\frac{\theta_l+\theta_1\theta_{l+1}+\theta_2\theta_{l+2}+...+\theta_{q-l}\theta_q}{1+\theta_1^2+\theta_2^2+...+\theta_q^2}ρl​=1+θ12​+θ22​+...+θq2​θl​+θ1​θl+1​+θ2​θl+2​+...+θq−l​θq​​ ,

那么当 l>ql>ql>q 时同理可得 ρl=0\rho_l=0ρl​=0 。

所以,通过上述推导我们有理由相信:MA(q)MA(q)MA(q)模型的自相关系数 qqq 阶截尾。所谓qqq 阶截尾意思是在 qqq 阶以后MA(q)MA(q)MA(q)模型的自相关系数立马截止, q+1q+1q+1 阶起就为0。

以上就是通过理论解释了AR§模型和MA(q)模型的拖尾和截尾的底层逻辑。

三:ARMA模型

  • 参数估计过程

当把AR(p)AR(p)AR(p)模型和MA(q)MA(q)MA(q)模型相结合时,我们得到ARMA(p,q)ARMA(p,q)ARMA(p,q)模型如下:

xt=ϕ0+ϕ1xt−1+...+ϕpxt−p+εt+θ1εt−1+...+θqεt−qx_t=\phi_0+\phi_1x_{t-1}+...+\phi_px_{t-p}+\varepsilon_t+\theta_1\varepsilon_{t-1}+...+\theta_q\varepsilon_{t-q}xt​=ϕ0​+ϕ1​xt−1​+...+ϕp​xt−p​+εt​+θ1​εt−1​+...+θq​εt−q​

相较于前两个模型,此模型是更具有普遍性。首先我们通过一些定阶模型确定 p,qp,qp,q,当阶数确定后,可以根据最小二乘最大似然估计或者梯度下降法更新所有方程系数。根据模型的表达式一直迭代下去即可完成“无穷的”预测。但是作为长期预测,理论上是可行的,实际确实长期预测所受的干扰因素太多了,除非你的预测数据是周期性、趋势性或者季节性的,那长期还是有点实际意义,否则任何回归模型,还是作为短期预测才有更大的实际意义。

  • 建模过程

1:序列判断

(a):判断我们需要建立的模型数据是否为平稳序列,若非平稳序列我们要对其进行变换处理(一般用差分方法即可)至平稳序列,

(b):接着再判断平稳序列时候为白噪声序列,若为白噪声序列则建模结束(白噪声序列无法构成ARMA模型),否则进行下一步。

2:模型估计与建立

(a):判断 ppp 和 qqq 的值。当我们建立好自回归模型时,为了得到最优的模型结构,我们需要定下 ppp 和 qqq 值。这里的定阶一是可以通过自相关系数ACFACFACF和偏自相关系数PACFPACFPACF大致决定。由上面的理论分析,我们知道AR(pAR(pAR(p)将出现 ppp 阶拖尾,MA(q)MA(q)MA(q)将出现 qqq 阶截尾,

(b):如果序列的ACFACFACF和PACFPACFPACF不是很明确的话,我们可以用其他模型来定阶。其中就包括AIC和BIC信息准备判别。AIC是一种用于模型选择的指标,同时考虑模型的拟合程度以及简单性,BIC是对AIC的改进,一般来说较小的AIC或者BIC表示在保持模型简单的同时,能够更好的对时间序列进行拟合

3:模型诊断

即对模型残差进行验证,确保其为服从正态分布的白噪声序列,当模型的残差为白噪声时,说明我们已经将序列的信息充分提取到模型中,建模彻底结束。

在上一篇文章我们对于ARMA模型 xt=∑i=1qθiεt−i+ϕ0+∑j=1pϕjLjxtx_t=\sum_{i=1}^{q}\theta_i{\varepsilon_{t-i}}+\phi_0+\sum_{j=1}^{p}{\phi_jL^jx_t}xt​=∑i=1q​θi​εt−i​+ϕ0​+∑j=1p​ϕj​Ljxt​ 分析发现,ARMA其实和AR模型在平稳性上的判断是一样的,都有这相同的特征方程,同样可以通过单位根方法判断是否平稳性成立。

上篇文章地址。。。

四:实际建模运用

我们接下来基于实际销量数据开始建立时序模型,首先观察下销量数据可视化结果,由曲线图发现销量的变化明显具有上涨的趋势性,符合自回归移动平均模型的建模直观要求。

图1

from statsmodels.graphics.tsaplots import plot_acf,plot_pacf
from statsmodels.tsa.stattools import adfuller as ADF
from statsmodels.stats.diagnostic import acorr_ljungbox
from statsmodels.tsa.arima_model import ARIMA
import statsmodels.api as sm
import matplotlib.pyplot as plt
import pandas as pd
import numpy as npyv = np.array([2800,2811,2832,2850,2880,2910,2960,3023,3039,3056,3138,3150,3198,3100,3029,2950,2989,3012,3050,3142,3252,3342,3365,3385,3340,3410,3443,3428,3554,3615,3646,3614,3574,3635,3738,3764,3788,3820,3840,3875,3900,3942,4000,4021,4055])
yv_serie = pd.Series(yv[:-10])##样本外数据def testwhitenoise(data):m = 10# 检验10个自相关系数acf,q,p = sm.tsa.acf(data,nlags=m,qstat=True)out = np.c_[range(1,m+1),acf[1:],q,p]output = pd.DataFrame(out,columns=['lag','自相关系数','统计量Q值','p_values'])output = output.set_index('lag')# 设置第一列索引名称,可省略重复索引列1print(output)def teststeady(data,count=0):res_ADF = ADF(data)print('ADF检验结果为:', res_ADF)Pv = res_ADF[1]if Pv > 0.05:print('\033[1;31mP值:%s,原始序列不平稳,要进行差分!\033[0m' % round(Pv,5))count = count + 1print('\033[1;32m进行了%s阶差分后的结果如下\033[0m' % count)data = data.diff(1).dropna()teststeady(data,count)else:print('\033[1;34mP值:%s,原始序列平稳,继续建模\033[0m'% round(Pv,5))
testwhitenoise(yv_serie)
teststeady(yv_serie)

图2

图2就是平稳性和自相关性(白噪声)检验的结果,我们发现当进行一阶差分后序列平稳,按照建模步骤我们接下来开始定阶。

def confirm_p_q(data):fig = plt.figure(figsize=(8,6))testwhitenoise(data)train = teststeady(data)ax1 = fig.add_subplot(211)fig = sm.graphics.tsa.plot_pacf(train, lags=10, ax=ax1)ax2 = fig.add_subplot(212)fig = sm.graphics.tsa.plot_acf(train, lags=10, ax=ax2)plt.show()  ###可视化定阶pmax = int(len(data) / 10)qmax = int(len(data) / 10)AIC = sm.tsa.arma_order_select_ic(train,max_ar=pmax,max_ma=qmax,ic='aic')['aic_min_order']BIC = sm.tsa.arma_order_select_ic(train,max_ar=pmax,max_ma=qmax,ic='bic')['bic_min_order']HQIC = sm.tsa.arma_order_select_ic(train,max_ar=pmax,max_ma=qmax,ic='hqic')['hqic_min_order']print('AIC:',AIC)print('BIC:',BIC)print('HQIC:',HQIC)return AIC
pq = confirm_p_q(yv_serie)##返回p,q值

图3

图4

由上面图4自相关函数图可知,定阶在 p,q=(1,1)p,q=(1,1)p,q=(1,1) 阶比较合理,再由相应的信息准则,我们最终定阶 p,q=(2,2)p,q=(2,2)p,q=(2,2) 也是合理的。

这里的定阶结果都是理论给的结果,实际中的定阶还是要根据模型表现不断调整,一般阶数越高越复杂,拟合效果越强,但过拟合概率也越高,所以要不断尝试不断调整。

接着我们正式开始预测

def prediction(data):tempmodel = ARMA(teststeady(data),pq).fit(disp=-1)print(tempmodel.summary())#num = 10#predictoutside1 = tempmodel.forecast(num)[0]#预测样本外的predictoutside2 = tempmodel.predict(len(tempmodel.predict()),len(tempmodel.predict()) + 9,dynamic=True)##也是样本外预测,预测结果一致predictinside = tempmodel.predict()##样本内预测init_value = yv[0]fig = plt.figure(figsize=(8, 6))predictinside = predictinside.cumsum()##差分还原pretrueinside = init_value + predictinsidestartprevalue = list(pretrueinside)[-1]predictoutside2 = predictoutside2.cumsum()##差分还原pretrueoutside = startprevalue + predictoutside2##作图plt.plot(yv,label='原始值')plt.plot([init_value] + list(pretrueinside),label='样本内预测值')X = [i for i in range(len(yv)-11,len(yv))]plt.plot(X,[startprevalue] + list(pretrueoutside), label='样本外预测值')allpredata = [init_value] + list(pretrueinside) + list(pretrueoutside)plt.legend()plt.show()return tempmodel,allpredata
preres = prediction(yv_serie)

最后我们对模型进行评价

def evaluate_model(model,apd):delta = model.fittedvalues - tsresscore = 1 - delta.var() / tsres.var()print('R^2:', score)allmse = mean_squared_error(apd,yv)##所有预测值跟所有原始值的MSEprint('ALLMSE:',allmse)###残差白噪声检验testwhitenoise(delta)
evaluate_model(preres[0],preres[1])

五:建模结果比较分析

  • 当我们选择阶数 p,q=(1,1)p,q=(1,1)p,q=(1,1) 时看下建模效果:

图5:p,q=(1,1)

图6

注:这里涉及两个评价指标,一个是拟合优度 R2R^2R2 值,公式如下: R2=1−Var残差Var样本内xtR^2=1-\frac{Var_{残差}}{Var_{样本内x_{t}}}R2=1−Var样本内xt​​Var残差​​ , VarVarVar 是方差意思, R2R^2R2 越接近1,说明拟合越好。 另一个是均方误差,公式如下: MSE=1n∑i=1n(xi−xiˉ)2MSE=\frac{1}{n}\sum_{i=1}^{n}{(x_i-\bar{x_i})^2}MSE=n1​∑i=1n​(xi​−xi​ˉ​)2 , xiˉ\bar{x_i}xi​ˉ​ 是样本估计量(预测值),此实验中,预测值指的是样本内预测值+样本外预测值,样本值是全体原数据值。

从残差检验是白噪声序列后,我们完整的建模算正式结束!

当我们选择阶数 p,q=(2,2)p,q=(2,2)p,q=(2,2) 时看下建模效果:

图7:p,q=(2,2)

图8

由图5和图6比较,直观上感觉图6总体拟合效果更好,再观察理论评价指标,也是 p,q=(2,2)p,q=(2,2)p,q=(2,2) 表现的更好,所以具体定阶时,我们不妨多个指标一起观察。

六:总结

  • 此篇文章涉及的内容很多,有详细的理论推导解释AR§拖尾和MA(q)截尾的缘故,并最终一步一步建立ARMA模型来解决实际问题,
  • 在上一篇文章我们也谈到ARMA对趋势性,周期性和季节性数据做短期预测是非常有效的,这篇文章主要是对趋势性数据做预测,周期性和季节性当然也是同理而得,
  • 对于阶数 p,qp,qp,q 的取定,一直是个非常重要的步骤,所以在实际中,我们一定要结合实际结合多种方法综合定阶

ARIMA模型的定阶原理与建模分析相关推荐

  1. R语言--模型的定阶、估计和显著性检验

    在前面,我们介绍了平稳非白噪声的检验方法.这章我们是在平稳非白噪声的前提下,对模型进行定阶.估计和检验. 模型的识别与定阶 ①直观识别 对于识别我们可以采用直观的识别方法,那就是通过自相关和偏自相关 ...

  2. 时间序列基础操作:使用python与eviews对AR与ARMA模型进行定阶与预报

    一般处理时间序列的基本过程: 几种基础时间序列模型: 目录 一.Python处理 1.1.step1:平稳性检验与白噪音检验 1.1.1平稳性检验:ADF检验 1.1.2差分修正: 1.1.3白噪音检 ...

  3. InVEST模型土壤保持模块原理及数据获取分析

    土壤保持服务作为一项重要的生态系统调节,是防止区域土地退化,降低洪涝灾害风险的重要保障.土壤保持服务是指生态系统防止土壤流失的侵蚀扩展能力以及对泥沙的储积保持能力.InVEST模型由于其与土地利用数据 ...

  4. ARIMA模型的R实现

    1.模型简介 ARIMA模型,全称差分自回归移动平均模型.可以看作是差分运算和ARMA模型的结合.主要是针对具有线性趋势的非平稳的时间序列,来进行建模预测. ARIMA模型的形式如下: Φ(B)∇?? ...

  5. 时间序列之ARIMA模型原理

    ARIMA模型 时间序列模型的意义: 在经典的回归模型中,主要是通过回归分析来建立不同变量之间的函数关系(因果关系),以考察事物之间的联系.本案例要讨论如何利用时间序列数据本身建立模型,以研究事物发展 ...

  6. ARIMA模型原理及实现

    https://www.jianshu.com/p/305c4961ee06 1.数据介绍 再介绍本篇的内容之前,我们先来看一下本文用到的数据.本文用到的中国银行股票数据下载:http://pan.b ...

  7. ARIMA模型(股价趋势预测)

    一.ARIMA模型的含义 ARIMA模型包括了三部分:  AR+ I + MA ,ARIMA模型针对非平稳时间序列模型,如果非平稳时间序列要建立ARMA模型,首先必须经过差分转换为平稳时间序列,然后建 ...

  8. ARIMA模型学习笔记

    ARIMA模型学习笔记 目录 ARIMA模型学习笔记 ARIMA模型 时间序列平稳性 什么是平稳性 严平稳 弱平稳 平稳性检验 ADF检验(Augmented Dickey-Fuller test) ...

  9. R语言 时间序列arima模型

    基本理论知识    ARMA模型称为自回归移动平均模型,是时间序列里常用的模型之一.ARMA模型是对不含季节变动的平稳序列进行建模.它将序列值表示为过去值和过去扰动项的加权和.模型形式如下: yt=c ...

  10. 数据分享|SAS与eviews用ARIMA模型对我国大豆产量时间序列预测、稳定性、白噪声检验可视化...

    全文链接:http://tecdat.cn/?p=31480 我国以前一直以来都是世界上大豆生产的第一大国.但由于各国的日益强大,导致我国豆种植面积和产量持续缩减.因此,预测我国的大豆产量对中国未来的 ...

最新文章

  1. c++中可以对类中私有成员中的静态变量初始化吗?
  2. BZOJ1103: [POI2007]大都市meg
  3. 免费申请Firefly-RK3288开源板
  4. stm32l0的停止模式怎么唤醒_「正点原子STM32Mini板资料连载」第十九章 待机唤醒实验...
  5. 你好,C++(34)有一只叫做多利的羊 6.2.4 拷贝构造函数
  6. mysql vfp_用 VFP 连接 MYSQL 数据库
  7. JPA+QueryDSL
  8. 阿里云开发笔记01——CuteFTP使用方法
  9. 怎样用excel剔除异常数据_如何剔除异常数据?
  10. 知识图谱中三元组抽取
  11. Java游戏培训机构哪家专业
  12. Latex常用符号表
  13. 关于打开浏览器jsp文件显示源代码的问题
  14. BUUCTFweb比赛做题记录
  15. java 处理大文件
  16. mysql 5.7 远程授权_MySQL5.7创建用户并授权,设置允许远程连接
  17. 计算机培训机构靠谱吗?能不能相信?
  18. deeplabv3+训练自己的数据集
  19. vue3 引用vue-ueditor-wrap中百度编辑器ueditor实例,字数统计
  20. 腾讯在线教育的小程序云开发实践

热门文章

  1. PushService开发分享
  2. XCTF 3rd-HITB CTF-2017 arrdeepee 复现
  3. ios 销毁当前页面重新开启_iOS - 切换rootViewController时,销毁之前的控制器
  4. TVS和ESD那些事儿
  5. 买书问题的动态规划实现
  6. https免费泛域名证书申请
  7. spring security面试
  8. Java 文件操作#常用io流方法解读
  9. iphone快捷指令蚂蚁森林能量_iPhone「快捷指令」怎么玩?玩法太多,别让这个功能吃灰...
  10. 模拟行走机器人-c语言