精华内容
下载资源
问答
  • 向量自回归模型建模步骤梳理(VAR、VMA、VARMA模型
  • 根据序列选模型(自回归AR模型、向量自回归VAR模型等)
  • Python变量 Python中的向量自回归模型
  • 向量自回归模型VAR

    2013-11-20 10:33:09
    向量自回归是一种很好的模型研究,要好好把握好,不然就很难做回归
  • VAR(向量自回归模型

    万次阅读 多人点赞 2020-06-14 10:03:34
    VAR(向量自回归模型是基于数据统计性质建立起来的模型,它把系统中的每个内生变量作为系统里所有其它内生变量滞后值的函数进行构建模型,从而把单变量的自回归模型推广到了多元时间序列组成的向量自回归模型。...

    一、简介

    1.1 内生变量与外生变量

    内生变量

    • 内生变量是具有某种概率分布的随机变量,它的参数是联立方程系统估计的元素,是由模型系统决定的,同时也对模型系统产生影响。
    • 内生变量–般都是明确经济意义变量。
    • 一般情况下,内生变量与随机项相关,即 C o v ( Y i , ε i ) ≠ 0 Cov\left( Y_i,\varepsilon _i \right) \ne 0 Cov(Yi,εi)=0
    • 在联立方程模型中,内生变量既作为被解释变量,又可以在不同的方程中作为解释变量。

    外生变量

    • 外生变量一般是确定性变量,或者是具有临界概率分布的随机变量,其参数不是模型系统研究的元素。
    • 外生变量影响系统,但本身不受系统的影响。
    • 外生变量一般是经济变量、政策变量、虚拟变量。
    • 一般情况下,外生变量与随机项不相关。

    注意:一个变量是内生变量还是外生变量,由经济理论和经济意义决定,不是从数学形式决定。

    1.2 VAR模型概念

    向量自回归模型,简称VAR模型,是AR 模型的推广,是一种常用的计量经济模型。在一定的条件下,多元MA和ARMA模型也可转化成VAR模型。

    VAR模型是用模型中所有当期变量对所有变量的若干滞后变量进行回归。

    向量自回归模型把系统中每-一个内生变量作为系统中所有内生变量的滞后值的函数来构造模型,从而实现了将单变量自回归模型推广到由多元时间序列变量组成的“向量”自回归模型。

    VAR模型常用于预测相互联系的时间序列系统以及分析随机扰动对变量系统的动态影响,主要应用于宏观经济学。是处理多个相关经济指标的分析与预测中最容易操作的模型之一。

    由于向量自回归模型把每个内生变量作为系统中所有内生变量滞后值的函数来构造模型,从而避开了结构建模方法中需要对系统每个内生变量关于所有内生变量滞后值的建模问题。

    1.3 VAR模型结构

    单变量的时间序列的分析模式可以推广到多变量时间序列,建立向量自回归模型。向量自回归模型通常用于描述多变量时间序列之间的变动关系,不需要经济理论作为基础,从数据出发建立模型,是一种非结构化的模型。

    非限制性向量自回归模型的一般表达式如下:

    模型的基本形式是弱平稳过程的自回归表达式,描述的是在同一样本期间内的若干变量可以作为它们过去值的线性函数。

    Y t = Φ 0 + Φ 1 Y t − 1 + ⋯ + Φ p Y t − p + B X t + ε t  ,  t = 1 , 2 , ⋯   , T Y_t=\varPhi _0+\varPhi _1Y_{t-1}+\cdots +\varPhi _pY_{t-p}+BX_t+\varepsilon _t\ \text{,\ }t=1,2,\cdots ,T Yt=Φ0+Φ1Yt1++ΦpYtp+BXt+εt  t=1,2,,T

    其中
    Y t = ( y 1 t y 2 t ⋮ y k t ) , ε t = ( ε 1 t ε 2 t ⋮ ε k t ) , Φ 0 = ( ϕ 10 ϕ 20 ⋮ ϕ k 0 ) Y_t=\left( \begin{array}{c} y_{1t}\\ y_{2t}\\ \vdots\\ y_{kt}\\ \end{array} \right) \text{,}\varepsilon _t=\left( \begin{array}{c} \varepsilon _{1t}\\ \varepsilon _{2t}\\ \vdots\\ \varepsilon _{kt}\\ \end{array} \right) \text{,}\varPhi _0=\left( \begin{array}{c} \phi _{10}\\ \phi _{20}\\ \vdots\\ \phi _{k0}\\ \end{array} \right) Yt=y1ty2tyktεt=ε1tε2tεktΦ0=ϕ10ϕ20ϕk0

    Φ i = ( ϕ 11 ( i ) ϕ 12 ( i ) ⋯ ϕ 1 k ( i ) ϕ 21 ( i ) ϕ 22 ( i ) ⋯ ϕ 2 k ( i ) ⋮ ⋮ ⋱ ⋮ ϕ k 1 ( i ) ϕ k 2 ( i ) ⋯ ϕ k k ( i ) )    ,    i = 1 , 2 , ⋯   , p \varPhi _i=\left( \begin{matrix} \phi _{11}\left( i \right)& \phi _{12}\left( i \right)& \cdots& \phi _{1k}\left( i \right)\\ \phi _{21}\left( i \right)& \phi _{22}\left( i \right)& \cdots& \phi _{2k}\left( i \right)\\ \vdots& \vdots& \ddots& \vdots\\ \phi _{k1}\left( i \right)& \phi _{k2}\left( i \right)& \cdots& \phi _{kk}\left( i \right)\\ \end{matrix} \right) \,\,\text{,\,\,}i=1,2,\cdots ,p Φi=ϕ11(i)ϕ21(i)ϕk1(i)ϕ12(i)ϕ22(i)ϕk2(i)ϕ1k(i)ϕ2k(i)ϕkk(i)i=1,2,,p

    • Y t Y_t Yt 表示 k 维内生变量列向量
    • Y t − i , i = 1 , 2 , ⋯   , p Y_{t-i}\text{,}i=1,2,\cdots ,p Ytii=1,2,,p 为滞后的内生变量
    • X t X_t Xt 表示 d 维外生变量列向量,它可以是常数变量、线性趋势项或者其他非随机变量
    • p 是滞后阶数
    • T 为样本数目
    • Φ i \varPhi _i Φi Φ 1 , Φ 2 ⋯   , Φ p \varPhi _1,\varPhi _2\cdots ,\varPhi _p Φ1,Φ2,Φp k × k k\times k k×k 维的待估矩阵
    • B 为 k × d k\times d k×d 维的待估矩阵
    • ε t ∼ N ( 0 , Σ ) \varepsilon _t\sim N\left( 0,\varSigma \right) εtN(0,Σ) 为 k 维白噪声向量,它们相互之间可以同期相关,但不与自己的滞后项相关(诸 ε t \varepsilon _t εt 独立同分布,而 ε t \varepsilon _t εt 中的分量不要求相互独立),也不与上式中右边的变量相关。 Σ \varSigma Σ ε t \varepsilon _t εt 的协方差矩阵, 是一个 k × k k\times k k×k 的正定矩阵。.

    比如 1 维 p 阶 向量自回归模型

    { y 1 t = ϕ 10 + ϕ 11 ( 1 ) y 1 , t − 1 + ϕ 12 ( 1 ) y 2 , t − 1 + ⋯ + ϕ 1 n ( 1 ) y n , t − 1          + ϕ 11 ( 2 ) y 1 , t − 2 + ϕ 12 ( 2 ) y 2 , t − 2 + ⋯ + ϕ 1 n ( 2 ) y n , t − 2          + ⋯          + ϕ 11 ( p ) y 1 , t − p + ϕ 12 ( p ) y 2 , t − p + ⋯ + ϕ 1 n ( p ) y n , t − p + ε t \left\{ \begin{array}{l} y_{1t}=\phi _{10}+\phi _{11}\left( 1 \right) y_{1,t-1}+\phi _{12}\left( 1 \right) y_{2,t-1}+\cdots +\phi _{1n}\left( 1 \right) y_{n,t-1}\\ \ \ \ \ \ \ \ \ +\phi _{11}\left( 2 \right) y_{1,t-2}+\phi _{12}\left( 2 \right) y_{2,t-2}+\cdots +\phi _{1n}\left( 2 \right) y_{n,t-2}\\ \ \ \ \ \ \ \ \ +\cdots\\ \ \ \ \ \ \ \ \ +\phi _{11}\left( p \right) y_{1,t-p}+\phi _{12}\left( p \right) y_{2,t-p}+\cdots +\phi _{1n}\left( p \right) y_{n,t-p}+\varepsilon _t\\ \end{array} \right. y1t=ϕ10+ϕ11(1)y1,t1+ϕ12(1)y2,t1++ϕ1n(1)yn,t1        +ϕ11(2)y1,t2+ϕ12(2)y2,t2++ϕ1n(2)yn,t2        +        +ϕ11(p)y1,tp+ϕ12(p)y2,tp++ϕ1n(p)yn,tp+εt

    不含常数项或线性趋势项的向量自回归模型表达式为:

    Y t = Φ 1 Y t − 1 + ⋯ + Φ p Y t − p + ε t  ,  t = 1 , 2 , ⋯   , T Y_t=\varPhi _1Y_{t-1}+\cdots +\varPhi _pY_{t-p}+\varepsilon _t\ \text{,\ }t=1,2,\cdots ,T Yt=Φ1Yt1++ΦpYtp+εt  t=1,2,,T

    1.4 VAR模型的特点

    1. 不以严格的经济理论为依据。在建模过程中只需明确两件事:①共有哪些变量是相互有关系的,把有关系的变量包括在VAR模型中;②确定滞后期 p。使模型能反映出变量间相互影响的绝大部分。
    2. VAR模型对参数不施加零约束。(对无显着性的参数估计值并不从模型中剔除,不分析回归参数的经济意义。)
    3. VAR模型的解释变量中不包括任何当期变量,所有与联立方程模型有关的问题在VAR模型中都不存在(主要是参数估计量的非一致性问题)。
    4. VAR模型的另一个特点是有相当多的参数需要估计。比如一个VAR模型含有三个变量,最大滞后期 p=3,则有27个参数需要估计。当样本容量较小时,多数参数的估计量误差较大。
    5. 无约束VAR模型的应用之一是预测。由于在VAR模型中每个方程的右侧都不含有当期变量,这种模型用于样本外一期预测的优点是不必对解释变量在预测期内的取值做任何预测。
    6. 用VAR模型做样本外近期预测非常准确。做样本外长期预测时,则只能预测出变动的趋势,而对短期波动预测不理想。

    二、模型的定阶(滞后阶数检验)

    滞后阶数检验需要考虑两个问题:

    • 第一,如果滞后阶数 p 比较小,那么随机误差项会出现自相关的问题;
    • 第二,在实际应用中,通常希望滞后阶数 p 足够大,进而能够更好的体现所构造的模型的动态特征,但是如果滞后阶数 p 过大时,那么模型所需要估计的参数就越多,将存在自由度太小的问题,如果没有足够多的样本数量,就会造成所需要估计参数不能有效的计算出来。

    所以,在做滞后阶数检验之前,需要把各种因素都考虑在内,这样才能保证检验结果是有效的。

    有两种方法可以做滞后阶数检验:

    • 第–种方法,分析各种准则,最后确定滞后阶数,AIC准则、SC准则、HQ准则、LogL准则、最终预测误差(FPE);.
    • 第二种方法,分析似然比(LR),这种方法不会出现第一-种方法的无效结果。

    第一种方法被学者们用的最多。.第一种方法中的五个指标在各个阶数的估计值,选取五个检验准则最小值数量最多的阶数即为模型的滞后期数。

    比如

    在这里插入图片描述

    三、模型的系数估计

    对于向量自回归模型系统中的每一个方程都可以采用OLS(最小二乘估计)方法进行估计,同时估计量具有一致性和无偏性。

    一个 k 维 p 阶向量自回归模型中,各方程中所有解释变量的滞后期是相同的,都为滞后 p 期,因此共估计得到 p × k 2 + k p\times k^2+k p×k2+k 个系数。

    四、单位根检验

    时间序列平稳性是指–组数列的统计值与时间无关,不会随时间推移而变化,它通常是以因果关系为基础的数学模型的假设条件。

    • 如果时间序列 y t y_t yt 是一组平稳序列,那么经过计算分析得到其均值 E ( y t ) E\left( y_t \right) E(yt) 不随时间变化而变化,其方差 V a r ( y t ) Var\left( y_t \right) Var(yt) 也不受时间的影响。
    • 如果时间序列 y t y_t yt 不是一组平稳序列,那么它的均值和方差都会受到时间t影响,随之改变。

    在VAR模型中,必须保证时间序列稳定。如果不能保证时间序列稳定,那么会导致两种结果:

    第一,向量自回归系数的估计值是负数,做完 t 检验后,得到的结果是无效的;
    第二,两个独立变量的相关关系或者回归关系是假的,使得模型的结果无效。

    (1)DF 检验

    DF 检验只适用于一阶自回归过程的平稳性检验

    在一阶自回归序列中,
    y t = ϕ 1 y t − 1 + ε t   ,   ε t ∼ N ( 0 , σ ε 2 ) y_t=\phi _1y_{t-1}+\varepsilon _t\ ,\ \varepsilon _t\sim N\left( 0,\sigma _{\varepsilon}^2 \right) yt=ϕ1yt1+εt , εtN(0,σε2)
    该序列的特征方程为:

    λ − ϕ 1 = 0 \lambda -\phi _1=0 λϕ1=0

    特征根为:
    λ = ϕ 1 \lambda =\phi _1 λ=ϕ1
    当特征根在单位圆内时: ∣ ϕ 1 ∣ < 1 \left| \phi _1 \right|<1 ϕ1<1,该序列平稳
    当特征根在单位圆上或单位圆外时: ∣ ϕ 1 ∣ ≥ 1 \left| \phi _1 \right|\ge 1 ϕ11,该序列非平稳

    所以可以通过检验特征根是在单位圆内还是在单位圆上(外),来检验序列的平稳性,这种检验就称为单位根检验。

    由于现实生活中绝大多数序列都是非平稳序列,所以单位根检验的原假设定为:

    H 0 : 序列  y t  非平稳 ⇔ H 0 : ∣ ϕ 1 ∣ ≥ 1 H_0:\text{序列\ }y_t\ \text{非平稳}\Leftrightarrow H_0:\left| \phi _1 \right|\ge 1 H0:序列 yt 非平稳H0:ϕ11

    相应的备择假设为: H 1 : 序列  y t  平稳 ⇔ H 1 : ∣ ϕ 1 ∣ < 1 H_1:\text{序列\ }y_t\ \text{平稳}\Leftrightarrow H_1:\left| \phi _1 \right|<1 H1:序列 yt 平稳H1:ϕ1<1
    检验统计量为: t ( ϕ 1 ) = ϕ ^ 1 − ϕ 1 S ( ϕ ^ 1 ) t\left( \phi _1 \right) =\frac{\hat{\phi}_1-\phi _1}{S\left( \hat{\phi}_1 \right)} t(ϕ1)=S(ϕ^1)ϕ^1ϕ1
    拒绝原假设,认为序列 y t y_t yt 显著平稳

    (2)ADF 检验

    因为 DF 检验只适用于1阶自回归过程的平稳性检验,但实际上绝大多数时间序列都不会是一个简单的AR(1)过程。为了使DF检验能适用于AR( p )过程的平稳性检验,对其进行了一定的修正,得到增广DF检验(augmented Dickey-Fuller),简记为ADF检验。

    对任一 AR ( p ) 过程

    y t = ϕ 1 y t − 1 + ⋯ + ϕ p y t − p + ε t y_t=\phi _1y_{t-1}+\cdots +\phi _py_{t-p}+\varepsilon _t yt=ϕ1yt1++ϕpytp+εt

    特征方程:
    λ p − ϕ 1 λ p − 1 − ϕ 2 λ p − 2 − ⋯ − ϕ p = 0 \lambda ^p-\phi _1\lambda ^{p-1}-\phi _2\lambda ^{p-2}-\cdots -\phi _p=0 λpϕ1λp1ϕ2λp2ϕp=0

    如果该方程所有的特征根都在单位圆内,即 ∣ λ i ∣ < 1 , i = 1 , 2 , ⋯   , p \left| \lambda _i \right|<1\text{,}i=1,2,\cdots ,p λi<1i=1,2,,p

    则序列 y t y_t yt 平稳

    如果有一个单位根存在,不妨设
    λ 1 = 1 \lambda _1=1 λ1=1

    则序列 y t y_t yt 非平稳,且自回归系数之和恰好等于1:
    { λ p − ϕ 1 λ p − 1 − ⋯ − ϕ p λ p − p = 0 ⇒ λ = 1 1 − ϕ 1 − ⋯ − ϕ p = 0 ⇒ ϕ 1 + ϕ 2 + ⋯ + ϕ p = 1 \left\{ \begin{array}{l} \lambda ^p-\phi _1\lambda ^{p-1}-\cdots -\phi _p\lambda ^{p-p}=0\\ \\ \xRightarrow{\lambda =1}\\ \\ 1-\phi _1-\cdots -\phi _p=0\\ \\ \Rightarrow\\ \\ \phi _1+\phi _2+\cdots +\phi _p=1\\ \end{array} \right. λpϕ1λp1ϕpλpp=0λ=1 1ϕ1ϕp=0ϕ1+ϕ2++ϕp=1

    因而,对于AR( p )过程,可以通过检验自回归系数之和是否等于1来考察该序列的平稳性.

    将.上述推广到 VAR( p ) 模型中,如果特征方程
    ∣ I N λ p − Φ 1 λ p − Φ 2 λ p − ⋯ − Φ p ∣ = 0 \left| I_N\lambda ^p-\varPhi _1\lambda ^p-\varPhi _2\lambda ^p-\cdots -\varPhi _p \right|=0 INλpΦ1λpΦ2λpΦp=0

    的所有特征根都落在单位圆内,即 ∣ λ i ∣ < 1 , ( i = 1 , 2 , ⋯   , p ) \left| \lambda _i \right|<1\text{,}\left( i=1,2,\cdots ,p \right) λi<1(i=1,2,,p),那么就说 VAR( p ) 模型是协方差稳定的。

    引入延迟算子B,如果 VAR( p ) 模型满足
    ∣ I N − Φ 1 B − Φ 2 B 2 − ⋯ − Φ p B p ∣ = 0 \left| I_N-\varPhi _1B-\varPhi _2B^2-\cdots -\varPhi _pB^p \right|=0 INΦ1BΦ2B2ΦpBp=0

    的所有根都在单位圆外,模型也是协方差稳定的。


    y t = ϕ 1 y t − 1 + ⋯ + ϕ p y t − p + ε t y_t=\phi _1y_{t-1}+\cdots +\phi _py_{t-p}+\varepsilon _t yt=ϕ1yt1++ϕpytp+εt
    进行等价变换:
    y t − y t − 1 = ϕ 1 y t − 1 + ⋯ + ϕ p y t − p − y t − 1 + ε t y_t-y_{t-1}=\phi _1y_{t-1}+\cdots +\phi _py_{t-p}-y_{t-1}+\varepsilon _t ytyt1=ϕ1yt1++ϕpytpyt1+εt

    整理得
    ▽ y t = ( ϕ 1 + ⋯ + ϕ p − 1 ) y t − 1 − ( ϕ 2 + ⋯ + ϕ p ) ▽ y t − 1 − ⋯ − ϕ p ▽ y t − p + 1 + ε t \triangledown y_t=\left( \phi _1+\cdots +\phi _{p-1} \right) y_{t-1}-\left( \phi _2+\cdots +\phi _p \right) \triangledown y_{t-1}-\cdots -\phi _p\triangledown y_{t-p+1}+\varepsilon _t yt=(ϕ1++ϕp1)yt1(ϕ2++ϕp)yt1ϕpytp+1+εt
    简记为
    ▽ y t = α y t − 1 + β 1 ▽ y t − 1 + ⋯ + β p − 1 ▽ y t − p + 1 + ε t \triangledown y_t=\alpha y_{t-1}+\beta _1\triangledown y_{t-1}+\cdots +\beta _{p-1}\triangledown y_{t-p+1}+\varepsilon _t yt=αyt1+β1yt1++βp1ytp+1+εt
    式中
    { α = ϕ 1 + ϕ 2 + ⋯ ϕ p − 1 β j = − ϕ j + 1 − ϕ j + 2 − ⋯ − ϕ p  ,  j = 1 , 2 , ⋯   , p − 1 \left\{ \begin{array}{l} \alpha =\phi _1+\phi _2+\cdots \phi _p-1\\ \\ \beta _j=-\phi _{j+1}-\phi _{j+2}-\cdots -\phi _p\ \text{,\ }j=1,2,\cdots ,p-1\\ \end{array} \right. α=ϕ1+ϕ2+ϕp1βj=ϕj+1ϕj+2ϕp  j=1,2,,p1

    若序列 y t y_t yt 平稳,则 ϕ 1 + ϕ 2 + ⋯ ϕ p < 1 \phi _1+\phi _2+\cdots \phi _p<1 ϕ1+ϕ2+ϕp<1等价于 α<0

    若序列 y t y_t yt 非平稳,则至少存在一个单位根,有
    ϕ 1 + ϕ 2 + ⋯ ϕ p = 1 \phi _1+\phi _2+\cdots \phi _p=1 ϕ1+ϕ2+ϕp=1
    等价于 α=0

    则AR( p )过程单位根检验的假设条件可以确定为:
    H 0 : α = 0 ( 序列非平稳 ) ⟷ H 1 : α < 0 ( 序列平稳 ) H_0:\alpha =0\left( \text{序列非平稳} \right) \longleftrightarrow H_1:\alpha <0\left( \text{序列平稳} \right) H0:α=0(序列非平稳)H1:α<0(序列平稳)

    构造ADF检验统计量:

    τ = α ^ S ( α ^ ) \tau =\frac{\hat{\alpha}}{S\left( \hat{\alpha} \right)} τ=S(α^)α^

    S ( α ^ ) S\left( \hat{\alpha} \right) S(α^) 为参数 α 的样本标准差

    通过蒙特卡洛方法,可以得到r检验统计量的临界值表,显然DF检验是ADF检验在自相关阶数为1时的一个特例,所以统称为ADF检验

    利用 EVIEWS 可以进行平稳性检验

    五、格兰杰因果检验

    在有些情况下,时间序列分析也会出现伪相关问题,也就是可以计算出较大的相关系数的变量实际上并不相关。

    针对此问题,格兰杰因果检验由此而生。格兰杰因果检验用于检验时间序列之间是否存在相关关系,它是能否建立脉冲函数的前提。

    在VAR模型中,格兰杰检验的因果关系不是通常所说的因果关系(并非真正汉语意义上的“因果关系”),而是说先发生的事情后发生的事情有–定的影响,或者说某个变量是否可以用来提高对其他相关变量的预测能力。所以,“格兰杰因果关系的实质是一-种“预测”关系

    其实质是考量一个变量的滞后量能否加入到其他变量的公式中。当一个变量确实受到其他变量的滞后量影响时,可以称这两个变量具有格兰杰因果关系。

    格兰杰因果检采取以下方式验证是否是真正的相关关系

    (1)估计当前的Y值被Y本身滞后期取值所能解释的程度;
    (2)检验加入X的滞后期后,Y的被解释程度是否提高;
    (3)如果满足条件(2),则X是Y的格兰杰成因,此时X的滞后期系数具有统计显著性。

    具体是通过在向量自回归模型系统中考察序列滞后项的系数是否全为零来进行检验。以一个2维p阶平稳向量自回归模型为例

    { y 1 t = ϕ 10 + ϕ 11 ( 1 ) y 1 , t − 1 + ϕ 11 ( 2 ) y 1 , t − 2 + ⋯ + ϕ 11 ( p ) y 1 , t − p          + ϕ 12 ( 1 ) y 2 , t − 1 + ϕ 12 ( 2 ) y 2 , t − 2 + ⋯ + ϕ 12 ( p ) y 2 , t − p + ε t \left\{ \begin{array}{l} y_{1t}=\phi _{10}+\phi _{11}\left( 1 \right) y_{1,t-1}+\phi _{11}\left( 2 \right) y_{1,t-2}+\cdots +\phi _{11}\left( p \right) y_{1,t-p}\\ \ \ \ \ \ \ \ \ +\phi _{12}\left( 1 \right) y_{2,t-1}+\phi _{12}\left( 2 \right) y_{2,t-2}+\cdots +\phi _{12}\left( p \right) y_{2,t-p}+\varepsilon _t\\ \end{array} \right. {y1t=ϕ10+ϕ11(1)y1,t1+ϕ11(2)y1,t2++ϕ11(p)y1,tp        +ϕ12(1)y2,t1+ϕ12(2)y2,t2++ϕ12(p)y2,tp+εt
    { y 2 t = ϕ 20 + ϕ 21 ( 1 ) y 1 , t − 1 + ϕ 21 ( 2 ) y 1 , t − 2 + ⋯ + ϕ 21 ( p ) y 1 , t − p          + ϕ 22 ( 1 ) y 2 , t − 1 + ϕ 22 ( 2 ) y 2 , t − 2 + ⋯ + ϕ 22 ( p ) y 2 , t − p + ε t \left\{ \begin{array}{l} y_{2t}=\phi _{20}+\phi _{21}\left( 1 \right) y_{1,t-1}+\phi _{21}\left( 2 \right) y_{1,t-2}+\cdots +\phi _{21}\left( p \right) y_{1,t-p}\\ \ \ \ \ \ \ \ \ +\phi _{22}\left( 1 \right) y_{2,t-1}+\phi _{22}\left( 2 \right) y_{2,t-2}+\cdots +\phi _{22}\left( p \right) y_{2,t-p}+\varepsilon _t\\ \end{array} \right. {y2t=ϕ20+ϕ21(1)y1,t1+ϕ21(2)y1,t2++ϕ21(p)y1,tp        +ϕ22(1)y2,t1+ϕ22(2)y2,t2++ϕ22(p)y2,tp+εt

    可以写成
    ∣ [ y 1 t y 2 t ] = [ ϕ 10 ϕ 20 ] + [ ϕ 11 ( 1 ) ϕ 12 ( 1 ) ϕ 21 ( 1 ) ϕ 22 ( 1 ) ] [ y 1 , t − 1 y 2 , t − 1 ] + [ ϕ 11 ( 2 ) ϕ 12 ( 2 ) ϕ 21 ( 2 ) ϕ 22 ( 2 ) ] [ y 1 , t − 2 y 2 , t − 2 ]                 + ⋯ + [ ϕ 11 ( p ) ϕ 12 ( p ) ϕ 21 ( p ) ϕ 22 ( p ) ] [ y 1 , t − p y 2 , t − p ] + [ ε 1 t ε 2 t ] \left| \begin{array}{l} \left[ \begin{array}{c} y_{1t}\\ y_{2t}\\ \end{array} \right] =\left[ \begin{array}{c} \phi _{10}\\ \phi _{20}\\ \end{array} \right] +\left[ \begin{matrix} \phi _{11}\left( 1 \right)& \phi _{12}\left( 1 \right)\\ \phi _{21}\left( 1 \right)& \phi _{22}\left( 1 \right)\\ \end{matrix} \right] \left[ \begin{array}{c} y_{1,t-1}\\ y_{2,t-1}\\ \end{array} \right] +\left[ \begin{matrix} \phi _{11}\left( 2 \right)& \phi _{12}\left( 2 \right)\\ \phi _{21}\left( 2 \right)& \phi _{22}\left( 2 \right)\\ \end{matrix} \right] \left[ \begin{array}{c} y_{1,t-2}\\ y_{2,t-2}\\ \end{array} \right]\\ \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ +\cdots +\left[ \begin{matrix} \phi _{11}\left( p \right)& \phi _{12}\left( p \right)\\ \phi _{21}\left( p \right)& \phi _{22}\left( p \right)\\ \end{matrix} \right] \left[ \begin{array}{c} y_{1,t-p}\\ y_{2,t-p}\\ \end{array} \right] +\left[ \begin{array}{c} \varepsilon _{1t}\\ \varepsilon _{2t}\\ \end{array} \right]\\ \end{array} \right. [y1ty2t]=[ϕ10ϕ20]+[ϕ11(1)ϕ21(1)ϕ12(1)ϕ22(1)][y1,t1y2,t1]+[ϕ11(2)ϕ21(2)ϕ12(2)ϕ22(2)][y1,t2y2,t2]               ++[ϕ11(p)ϕ21(p)ϕ12(p)ϕ22(p)][y1,tpy2,tp]+[ε1tε2t]

    检验原假设: H 0 :   y 2 t 不是 y 1 t 的格兰杰原因 H_0:\ y_{2t}\text{不是}y_{1t}\text{的格兰杰原因} H0: y2t不是y1t的格兰杰原因

    则通过F检验来检验联合假设
    ϕ 12 ( 1 ) = ϕ 12 ( 2 ) = ⋯ = ϕ 12 ( p ) = 0 \phi _{12}\left( 1 \right) =\phi _{12}\left( 2 \right) =\cdots =\phi _{12}\left( p \right) =0 ϕ12(1)=ϕ12(2)==ϕ12(p)=0

    若检验结果拒绝原假设,即拒绝 y 2 t y_{2t} y2t 不是 y 1 t y_{1t} y1t 的格兰杰原因,则通常称 y 2 t y_{2t} y2t y 1 t y_{1t} y1t 的格兰杰原因。

    由于格兰杰因果关系检验是在向量自回归模型的基础上进行的,因此向量自回归模型本身的合理性对格兰杰因果关系检验的结果也是非常重要的。例如,向量自回归模型本身应当具有恰当的滞后期。

    六、脉冲响应分析

    在VAR模型中,脉冲响应分析的作用是可以分析某个变量对另一个变量的影响时间和幅度。研究当扰动项发生变化时,对整个模型系统产生的影响,用来描述一个变量的变动怎样影响模型其他所有的变量。

    如果时间序列是稳定的,虽然前几期受到外部冲击的影响,该变量会处于一个变化的状态,但经过一段时间,最终会处于-一个平稳的状态。

    由于向量自回归模型表达式中所需要估计的参数非常多,并且一个系数只能反应局部关系。

    也就是,VAR模型中的各个等式中的系数并不是研究者最终关注的对象,对模型表达式中的系数的研究意义并不大。但是如果考虑一个扰动项变动,或者受到一个干扰或冲击,各个变量之间的动态关系,也就是系统的动态反应,是具有–定意义的。

    脉冲响应函数

    在参数估计量的评价标准中,一般包含无偏性、有效性、相合性和一致性,而VAR模型参数的普通最小二乘法估计量只具有–致性,因此要解释复杂的经济问题,单个参数估计值是很难完成的。

    一个有效的对VAR模型进行分析的方法就是脉冲响应函数。

    脉冲响应函数研究的是随机干扰项遭受冲击后内生变量的反应,用来描述对随机干扰项施加一一个冲击后对内生变量的当期值和未来值造成的影响

    在实际的应用中,由于VAR模型是一种非理论性的模型,因此在对VAR模型的分析中,很少研究一个变量的变化对另-一个变量的影响,而是专注于当一个随机误差项变化时(对随机误差项施加冲击),对系统的动态影响。

    七、方差分解

    在VAR模型中,得到了某个变量对另一个变量的解释度后,能够分析出该变量的重要性。变量会产生一些随机误差项,这些随机误差项都包含着重要的信息,方差分解的结果能够把这些信息全部说明出来。方差分解的作用非常大,这个过程的作用是能够分析某个变量对另-一个变量的解释度。

    如果说脉冲响应函数是来描述数学模型中的任一内生变量的正交冲击对其他变量造成的影响,那么方差分解就是分析各个内生变量的正交冲击对目标内生变量冲击的贡献比例,进而判断分析各个变量的重要性。

    参考:

    《浅析中国对美贸易额的影响因素》_张康琦
    《基于VAR模型的GDP和CPI对居民生活水平的影响分析》_陈小龙
    《向量自回归模型扰动分布的光滑检验及其应用》_钟嫕姝

    展开全文
  • VAR模型代码R语言

    2020-02-14 17:16:10
    金融计量VAR(向量自回归模型,R语言代码。 #数据检验:平稳性、时间序列趋势 adfTest(aucl,lag=1,type="nc") adfTest(agcl,lag=1,type="nc") adfTest(agvo,lag=1,type="nc") #不平稳取对数 lnau(aucl) ...
  • R语言写的VAR预测模型

    2017-08-15 13:11:56
    R语言写的 var模型 最新出炉
  • 文章基于向量自回归(VAR)模型,选取中国1999-2010年的季度时间序列数据,采用单位根、协整及Granger检验对中国股票市场发展和经济增长的相关关系进行实证研究。实证结果表明中国的经济增长与股票市场发展之间存在长期...
  • 在做PVAR模型的时候就是百度(主要时经管之家)还有知乎、公众号(如计量经济服务中心)然后研究这个模型怎么做,我用的是stata16中文版的。首先,做这个要有个PVAR的包,当时找这个包找了好几天,一个是国外love...

    这几个月在写论文,论文中用到了面板数据,并且需要做面板向量自回归模型,同时我又是个stata小白&计量小白(有学计量这门课,只是我太菜了)。在做PVAR模型的时候就是百度(主要时经管之家)还有知乎公众号(如计量经济服务中心)然后研究这个模型怎么做,我用的是stata16中文版的。

    首先,做这个要有个PVAR的包,当时找这个包找了好几天,一个是国外love学者的PVAR

    包(PVAR这个程序最初是由Inessa Love编写的),另一是国内的连玉君老师的PVAR2包。两个都可以,我时不太会用love的那个,然后用连老师的那个包感觉挺好用的。

    5283d8f2ddd5cfd2afc3d992b1bf02c4.png

    84c3b52388513b11ba33e5e83cfc9756.png

    导入方式:把上面的第三个pvar放进STATA的如下位置ado——base——p文件夹下面,然后就可以用了

    81e8213e6719f8ab15076eced25f7085.png

    PAVR模型一共是要做以下几个步骤:

    1、平稳性检验

    2、协整

    3、滞后阶数的选择

    4、PVAR模型系数估计

    5、格兰杰因果检验

    6、脉冲响应分析

    7、方差分解(这一部分我省略了)


    PVAR模型前的准备:

    第一步:导入数据

    import excel C:UserscuteOneDriveexcelnewsta2015.xlsx,sheet("Sheet1")firstrow ///导入数据

    stata软件是区分大小写的,所以在输入路径时,文件名中的大小写一定要注意区分,但是D盘和d盘是一样的。firstrow表示将表格中的第一行数据规定为变量名。

    5c1745187b045ab70f88c6be003f2b4d.png

    注意数据的格式:行是变量名,最重要的一点:数据一定要整理成面板的情况再导入!而不是下面这种或者是其他的

    0bfb5eaba1dd851be621b425bad464c0.png

    第二步:调整数据格式

    在PVAR模型中,我们导入的数据前两列要分别是个体变量(如地区、国家)和时间变量(如年度、季度、月度)。但是大多时候,我们直接导入进来的数据中,这两列数据的格式不正确的,在stata中无法识别,之后的统计分析中也会出现诸多问题,所以我们要先调整数据格式。正常情况下,个体变量的数据类型应该是long时间变量的数据类型应该是float,如下图所示,我们可以在查看数据界面右下角的Properties窗口中看到。

    8b29756538c9fa4c0155b5e54c2710a5.png
    encode city, gen(id) 其中city是原来的个体变量名,id是新生成的变量名。这是对个体变量进行数据类型更改为long
    gen month=mofd(time) /// month是新生成的时间变量名,time是原来数据的时间变量名。这是对时间变量的数据类型进行更改。

    然后注意调整数据的位置,然后记得删除原来的数据

    第三步:将数据变成面板数据(也就是让系统识别数据成为面板数据)

    xtset id month ///对面板数据中的个体变量和时间变量进行设定,告诉stata该数据为面板数据。

    进行完面板数据的导入后可以做一些描述性统计(虽然没有什么用,但是论文好像都都得有这个步骤)

    xtdes // 显示面板数据的结
    xtsum 变量名1 变量名2 变量名3 // 显示面板数据的统计特征

    第四步:平稳性检验

    经常使用LLC和IPS方法,但是如果两种检验结果出现冲突,再运用其他方法进行检验。

    LLC检验方法可以有以下三种选择:

    xtunitroot llc 变量名 , trend demean lags(bic 12) // 对变量IP进行面板单位根LLC检验,这里假设变量IP既包含线性时间趋势项又包含个体固定效应项,是条件最苛刻的一种检验
    xtunitroot llc 变量名, demean lags(bic 12) // 这里假设变量IP仅含个体固定效应项
    xtunitroot llc 变量名, noconstant demean lags(bic 12) // none 的情形,即假设变量IP既不包含线性时间趋势项,也不包含个体固定效应项,是条件最宽松的一种检验

    IPS检验有以下两种选择:

    xtunitroot ips 变量名, trend demean lags(bic 8) // 对变量IP进行面板单位根IPS检验,这里假设变量IP既包含线性时间趋势项又包含个体固定效应项,是条件最苛刻的一种检验
    xtunitroot ips 变量名, demean lags(bic 8) // 这里假设变量IP仅含个体固定效应项

    原假设是面板数据含有单位根(面板数据不平稳),备择假设是面板数据平稳。结果中P值越小越好

    tip:如果你的面板数据是有时间序列数据,就是某一个变量是时间序列数据,需要用时间序列数据的检验方法,时间序列数据就不用面板数据的检验方法,而是用时间序列的方法,如ADF单位根检验

    //单独对时间序列数据(变量M2)平稳性检验
    import excel C:UserscuteOneDriveexcelnewstaM2.xlsx,sheet("Sheet1")firstrow ///导入数据,我这里是只有光秃秃的一列数据,没有时间
    gen t=tm(2016m1)+_n-1 ///设置数据的开始时间
    tsset t, monthly ///告诉系统这是一个时间序列数据
    dfgls M2 //根据SBC和AIC原则进行选择最优的滞后阶数
    dfuller M2, lag(10) //单位根检验

    第五步:协整检验

    在上面的平稳性检验一般原始变量是不会平稳的,一般都是要做个一阶差分或者是二阶差分才会平稳(一般二阶就差不多了)。如果各变量不同差分都是平稳的,那么可以直接进行格兰杰因果检验、确定最优滞后阶数等程序,但是如果全部或部分变量不平稳,这个时候我们就需要进行面板协整分析,来考察变量间是否存在长期均衡关系。

    当所有变量都是一阶差分后平稳或者是其他阶数的平稳,也就是同阶单整。此时要做协整检验。我们要保证所有的变量序列在同一差分阶数上都是平稳的,不然会伪回归。常用的协整检验方法包括三种:Kao、Pedroni和Johansen,如果变量总个数少于或等于六个,三种方法都可以使用,如果变量总个数多于六个,Pedroni检验方法将不再适用。这里一定要用原始数据!

    xtcointtest kao 原始变量名 原始变量名 原始变量名 ///这是kao检验

    第六步:确定PVAR模型的滞后阶数

    pvar2 变量名1 变量名2 变量名3,lag(5) soc ///我是用的连老师的pvar2的包做的,所以命令里面是pvar2

    8f78ef37cc238f8fca6b931886cf4793.png

    第七步:格兰杰因果检验

    格兰杰检验时一种用于分析各经济变量之间因果关系的检验方法。格兰杰检验定义如下:有两个经济变量 X、Y,在包 含了 X、Y 两个变量的过去信息的条件下对 Y 的 预测效果一定会优于仅在变量 Y 的过去信息条件下对 Y 所做出的预测效果,则我们可以认为变 量 X 是变量 Y 的 Granger 原因

    pvar2 变量名1 变量名2 变量名3 ,lag(number) granger //格兰杰因果检验,其中滞后阶数根据上面的原则选择,比如上面那个图的结果告诉我是五阶最优,所以这里的number就可以改成5

    然后这里的话,stata用的这个命令好像是因为是pvar模型里面的因果检验,所以用的是卡方统计量;var模型里面也有个因果检验,命令是vargranger,也是使用的卡方检验统计量。大部分还是用的F统计量。如果说你不用这个命令做因果检验,你也可以用下面两种办法做因果检验。

    这是第二种:

    807c8f0ca05349717ae3d0988f981700.png

    这是第三种

    23c63edee590328c4dce45055bd0dd59.png

    第八步:进行GMM系数估计同时进行脉冲响应

    pvar2 变量名1 变量名2 变量名3,lag(5) irf(10) // 这是对pvar模型进行系数的估计,lag()里面的数字是上面根据soc命令选出来的,irf()里面的数字是脉冲响应的期数。

    最后一步:进行方差分解

    pvar2 变量名1 变量名2 变量名3 ,lag(5) decomp(30) //decomp()里面的数字指的是方差分解的期数

    (其实还有一步是模型的稳定性检验,只是我没做这步骤,我看大部分的论文也没做)


    距离我接触这个模型到写这篇文章有一个半月的时间了,写出来感觉还是挺容易的(理论方面懂得不是很多),就几个命令的事情,但是我记得当时跑这几行代码总是报错,一报错就百度,经常都是在经管论坛得到解答。写下这个文章希望能够对你有些帮助吧!

    展开全文
  • 此例程将向量自回归 (VAR) 的参数估计映射到相应移动平均 (MA) 模型的参数估计中。 此函数的输出可用于构建 VAR 模型的结构脉冲响应函数。
  • 用Lasso估计和预测VAR模型。 该软件包是glmnet软件包的包装,旨在促进VAR模型的估计和预测。 该软件包用于: 免责声明 该软件包正在进行中。 用法 lassovar函数可通过套索或自适应套索(使用套索,OLS或岭回归...
  • Python实现向量自回归VAR模型——完整步骤

    万次阅读 多人点赞 2019-02-01 15:20:14
    1. 首先啥是VAR模型,我这里简略通俗的说一下,想看代码的童鞋直接跳到第3部分就好了: 以金融价格为例,传统的时间序列模型比如ARIMA,ARIMA-GARCH等,只分析价格自身的变化,模型的形式为: 其中称为自身的滞后...

    废话不多说,先开始分享:

    20210127补充--------------------------------------

    很多童鞋都问我要源代码和数据,本来是因为工作原因不想公开的,后来越来越多的人私信跟我反映说没有参照物实在太抽象了,那鉴于时间也比较久了,很多细节我也有点模糊了,一个一个解释不过来,因此,就发布一下原来我项目的源代码和当时用的数据,真的有需要的童鞋可以下载做参考。附下载地址:

    https://download.csdn.net/download/mooncrystal123/14945452

    ------------------------------------------------------------------------------------------------------------------

    1. 首先啥是VAR模型,我这里简略通俗的说一下,想看代码的童鞋直接跳到第3部分就好了:

    以金融价格为例,传统的时间序列模型比如ARIMA,ARIMA-GARCH等,只分析价格自身的变化,模型的形式为:

    y_{t} = \beta _{1}\cdot y_{t-1} + \beta _{2}\cdot y_{t-2} + ...

    其中y_{t-1}称为自身的滞后项。

    但是VAR模型除了分析自身滞后项的影响外,还分析其他相关因素的滞后项对未来值产生的影响,模型的形式为:

    y_{t} = \beta _{1}\cdot y_{t-1} + \alpha _{1}\cdot x_{t-1} +\beta _{2}\cdot y_{t-2} + \alpha _{2}\cdot x_{t-2} + ...

    其中x_{t-1}就是其他因子的滞后项。

    总结一下,就是可以把VAR模型看做是集合多元线性回归的优点(可以加入多个因子)以及时间序列模型的优点(可以分析滞后项的影响)的综合模型。

    VAR其实是一类模型,以上是最基础的VAR模型形式,其他还有SVAR,CVAR,VECM,同统称为VAR类模型。

    2. VAR模型的建模步骤

    这种数学模型都有固定的建模步骤:

    1)画N个因子的序列相关图,计算相关系数 correlation coiffiant,查看一下线性相关度。(相关系数大小只反映线性相关程度,不反应非线性相关,如果等于0,不能排除存在非线性相关的可能。)

    2)对N个因子的原始数据进行平稳性检验,也就是ADF检验。

    VAR模型要求所有因子数据同阶协整,也就是N个因子里面如果有一个因子数据不平稳,就要全体做差分,一直到平稳为止。

    3)对应变量(yt)和影响因子(Xt)做协整检验

    一般就是EG协整关系检验了,为了看看Y和各个因子Xi之间是否存在长期平稳的关系,这个检验要放在所有数据都通过ADF检验以后才可以做。如果那个因子通不过协整检验,那基本就要剔除了。

    4)然后就是通过AIC,BIC,以及LR定阶。

    一般来说是综合判断三者。AIC,BIC要最小的,比如-10的AIC就优于-1AIC,LR反之要最大的。但是具体偏重那个,就看个人偏好,一般来说,博主的经验是看AIC和LR,因为BIC的惩罚力度大于AIC,大多数时间不太好用。

    具体的实现步骤一般是,把滞后项的阶数列一个范围,比如1-5,然后直接建模,其他啥都不看,先看AIC,BIC,LR的值。一般符合条件的不会只有一个,可以挑2-3个最好的,继续进行。

    5)定阶完成后,就是估计参数,看参数的显著性。

    好的模型所有参数的要通过显著性检验。

    6)对参数进行稳定性检验

    VAR除了对原始数据要进行平稳处理,估计出来的参数还需要检验参数稳定性。

    这是为了查看模型在拟合时,数据样本有没有发生结构性变化。

    有两张检验方法,这两种方法的基本概念是:

    第一个是:AR根,VAR模型特征方程根的绝对值的倒数要在单位圆里面。

    第二个是:cusum检验,模型残差累积和在一个区间内波动,不超出区间。

    这里要注意的是CUSUM检验的原价设(H0):系数平稳,备择假设才是不平稳。所以CUSUM结果要无法拒绝原假设才算通过。

    只有通过参数稳定性检验的模型才具有预测能力,进行脉冲响应和方法分解分析才有意义。

    7)使用乔里斯基正交化残差进行脉冲响应分析

    举例:要分析和预测的是Y,影响Y的有两个因子X1,X2。

    脉冲响应是1对1,根据以上条件,就要做两个脉冲响应分析,分别是:Y和X1,Y和X2。

    看看不同因子上升或者下降,对Y的冲击的程度和方式(Y上升还是下降),以及持续时间。

    8)使用乔里斯基正交化残差进行方差分解分析

    举例:要分析和预测的是Y,影响Y的有两个因子X1,X2。

    方差分解是1对1,根据以上条件,就要做两个方差分解分析,分别是:Y和X1,Y和X2。

    9)为什么使用乔里斯基正交化残差?

    因为进行方差分解和脉冲响应分析的时候,要求模型的残差为白噪声。但是!现实中,我们很难把所有影响Y的因素都囊括进方程,这就导致,现实中VAR模型的残差一般都不是白噪声。因此使用乔里斯基正交化来处理模型的残差。

    VAR建模的时候以上面的条件为例,其实模型估计参数时会给出三个3个方程(应变量各自不同):

    方程1:y_{t} = \beta _{1}\cdot y_{t-1} + \alpha _{1}\cdot X1_{t-1} +\Theta_{1}\cdot X2_{t-1} + \varepsilon _{t}

    方程2:X1_{t} = \beta _{1}\cdot X1_{t-1} + \alpha _{1}\cdot y_{t-1} +\Theta_{1}\cdot X2_{t-1}+ \eta _{t}

    方程3:X2_{t} = \beta _{1}\cdot X2_{t-1} + \alpha _{1}\cdot y_{t-1} +\Theta_{1}\cdot X1_{t-1}+ \omega_{t}

    方程1的残差序列:\varepsilon _{t}

    方程2的残差序列:\eta _{t}

    方差3的残差序列:\omega_{t}

    三个方程的乔里斯基正交化的步骤就是:

    正交1:\frac{\eta _{t}}{\varepsilon _{t}}

    正交2:\frac{\omega _{t}}{\varepsilon _{t}}

    正交3:\frac{\omega _{t}}{\eta _{t}}

    正交4:\frac{\frac{\eta _{t}}{\varepsilon _{t}}}{\frac{\omega _{t}}{\varepsilon _{t}}}

    正交5:\frac{\frac{\eta _{t}}{\varepsilon _{t}}}{\frac{\omega _{t}}{\eta _{t}}}

    最后用正交4/正交5,得到的序列就是乔里斯基正交化残差了。

    乔里斯基正交化之前要对方程的变量按重要性排序,更重要的放在分子上。

     

     

    3. 然后就是如何使用PYTHON 实现VAR模型的建模了:

    以上的步骤是不是很庞大,看着很麻烦?但是电脑都会一下子嗖嗖嗖处理好的。

    1)导入模块

    # 模型相关包
    import statsmodels.api as sm
    import statsmodels.stats.diagnostic
    # 画图包
    import matplotlib.pyplot as plt
    # 其他包
    import pandas as pd
    import numpy as np
    
    

    2)画序列相关图

    fig = plt.figure(figsize=(12,8))
    plt.plot(changeXAUUSD,'r',label='XAU USD')
    plt.plot(shfeXAU,'g',label='SHFE XAU')
    plt.title('Correlation: ' + str(correlation))
    plt.grid(True)
    plt.axis('tight')
    plt.legend(loc=0)
    plt.ylabel('Price')
    plt.show()

    3)ADF单位根

    python里的ADF检验结果就是下面的adfResult,我这里用output整理了一下,方便浏览。童鞋们也可以print结果,然后自行整理。

    这里的数据格式应该是DataFrame里面的series格式,不过dataframe应该也可以吧,没试过。

    adfResult = sm.tsa.stattools.adfuller(data,maxlags)
    output = pd.DataFrame(index=['Test Statistic Value', "p-value", "Lags Used", "Number of Observations Used",
                                             "Critical Value(1%)", "Critical Value(5%)", "Critical Value(10%)"],
                                      columns=['value'])
     output['value']['Test Statistic Value'] = adfResult[0]
     output['value']['p-value'] = adfResult[1]
     output['value']['Lags Used'] = adfResult[2]
     output['value']['Number of Observations Used'] = adfResult[3]
     output['value']['Critical Value(1%)'] = adfResult[4]['1%']
     output['value']['Critical Value(5%)'] = adfResult[4]['5%']
     output['value']['Critical Value(10%)'] = adfResult[4]['10%']

    4)协整检验

    python里面的协整检验通过coint()这个函数进行的,返回P-value值,越小,说明协整关系越强

    result = sm.tsa.stattools.coint(data1,data2)

    5)模型估计+定阶

    这里PYTHON真的很烦,python有两套var估计,一个是VARMAX,一个是VAR。我看了官方文档后,觉得估计参数和定阶还是用VARMAX最好,因为可以返回很多东西,尤其是summary()里面的统计结果特别详细,直接包含了AIC,BIC,HQIC。

    这里要注意,PYTHON定阶没有LR这个指标,要看LR的童鞋只能用EVIEWS和R了。不过AIC,BIC也够用了。

    这里插入的数据只能是DATAFRAME格式的,不然就报错。

    给大家看一下数据构造吧:

    lnDataDict = {'lnSHFEDiff':lnSHFEDiff,'lnXAUDiff':lnXAUDiff}
    lnDataDictSeries = pd.DataFrame(lnDataDict,index=lnSHFEDiffIndex)
    data = lnDataDictSeries[['lnSHFEDiff','lnXAUDiff']]

    这里的fitMod和resid变量后面会用到哦~~

    #建立对象,dataframe就是前面的data,varLagNum就是你自己定的滞后阶数
    orgMod = sm.tsa.VARMAX(dataframe,order=(varLagNum,0),trend='nc',exog=None)
    #估计:就是模型
    fitMod = orgMod.fit(maxiter=1000,disp=False)
    # 打印统计结果
    print(fitMod.summary())
    # 获得模型残差
    resid = fitMod.resid
    result = {'fitMod':fitMod,'resid':resid}

    6)系数平稳检验:CUSUM检验

    这里也注意,Python这里不像EVIEWS,python没有办法算AR根,弄不到AR根图,但是python可以进行cusum检验。返回3各变量,第2个是P-value值,记得我之前说的吗,cusum检验要无法拒绝原假设,也就是说P-value值要大于0.05

    这里的resid就是前面模型的resid

    # 原假设:无漂移(平稳),备择假设:有漂移(不平稳)
    result = statsmodels.stats.diagnostic.breaks_cusumolsresid(resid)

    7)脉冲响应图

    orthogonalized=True代表使用乔里斯基正交,这里很奇葩,官方文档没有加plt.show(),但是博主亲身试验,一定要加,不然画不出来。terms代表周期数。

    # orthogonalized=True,代表采用乔里斯基正交 
    ax = fitMod.impulse_responses(terms, orthogonalized=True).plot(figsize=(12, 8))
    plt.show()

    8)方差分解图

    这里要注意:

    VARMAX很怪,没有做方差分解的方法,但是VAR这个方法里面有。(python就是这么任性!)

    所以这里就用VAR重新估计,然后直接使用fevd进行方差分解

    打印summary()可以看到方差分解的具体结果,plot可以画图,要记得加plt.show()哦~~

    这里的dataFrame就是前面的data噢~~

    md = sm.tsa.VAR(dataFrame)
    re = md.fit(2)
    fevd = re.fevd(10)
    # 打印出方差分解的结果
    print(fevd.summary())
    # 画图
    fevd.plot(figsize=(12, 16))
    plt.show()

     

    以上就是今日份的分享~~然后博主要开始吐槽了!

    博主真是苦逼,最近定期要写研报,博主挑了个向量自回归模型(VAR)来研究,然而博主之前接触过的就只有MATLAB和python,matlab虽然做这种统计很方便,但是一个是博主好久不用啦有点生疏,还有一个是跟项目开发合在一起的话不方便。

    然后博主现在天天用python,所以为了赶稿子,也只能硬着头皮用python搞一波了。但是,博主发现,全网,基本没有人用python搞过这种高级计量经济学模型,因为连范文都找不到1篇!!!!博主亲身尝试摸索后,虽然完成了研报,但是!博主还是要说,统计类的东西,要么用R,要么用EVIEWS,用Python真心苦逼!!!

    主要是各个函数都藏在不知道什么旮旯角落里!!!有些还没有!比如AR根和AR图,要不是靠参考链接里R语言的一篇样板文,我都不知道还有个检验系数稳定性的方法叫cusum,再从另一篇样例里面找到python做cusum的样例。cusum的原假设和备择假设还跟普通检验不一样,反过来的,我查了好多中外文献,才确定这一点。python里面还没有EG因果关系检验,而协整关系检验的名字竟然叫coint……也是从另一篇样例文中找到的!!!都是泪…………

    然后,python只能对VAR模型,VECM模型进行估计,其他var类模型,各位别白废力气寻找了,直接用EVIEWS或者R吧。

    好啦~吐槽结束,博主可以保证,这是全网唯一的,最完整的利用python进行VAR模型建模的教程文了~~~

     

    参考文献:

    1. VARMAX官方样例

    http://www.statsmodels.org/stable/examples/notebooks/generated/statespace_varmax.html

    2. VARMAX官方文档

    http://www.statsmodels.org/stable/generated/statsmodels.tsa.statespace.varmax.VARMAX.html?highlight=varmax

    3.VARMAX fit官方文档

    http://www.statsmodels.org/stable/generated/statsmodels.tsa.statespace.varmax.VARMAX.fit.html#statsmodels.tsa.statespace.varmax.VARMAX.fit

    4.VARMAX fit返回值

    http://www.statsmodels.org/stable/generated/statsmodels.tsa.statespace.mlemodel.MLEResults.html#statsmodels.tsa.statespace.mlemodel.MLEResults

    5. CUSUM检验文献:平稳过程趋势项变点的CUSUM检验

    https://www.ixueshu.com/document/1d642b472b5dc0717d721b29bfac1625.html#pdfpreview

    6. CUSUM检验文献:关于CUSUM检验的改进

    https://wenku.baidu.com/view/65d91ee1172ded630b1cb62c.html

    7. cusum外文文献

    https://doc.docsou.com/b77f40843604bd6fcc70f6d0b-10.html

    8.python实现时间序列

    https://max.book118.com/html/2017/1006/136205976.shtm

    9.VAR python W3Cschool样例

    https://www.w3cschool.cn/doc_statsmodels/statsmodels-examples-notebooks-generated-interactions_anova.html?lang=en

    10.R语言实现VAR模型

    https://blog.csdn.net/Imliao/article/details/80352158

    11. python statsmodel手册

    https://blog.csdn.net/qq_41518277/article/details/85101141#VARVAR_processes_175

    12. python cusum检验方法说明:breaks_cusumolsresid

    https://www.cherylgood.cn/doc/statsmodels/statsmodels-statistics/5bacda5744e2a52489c5292a.html

    13.python 进行cusum检验样例

    https://blog.csdn.net/CoderPai/article/details/83657386

     

     

    展开全文
  • 澳大利亚在2008 - 2009年全球金融危机期间发生了这种情况。政府发布了一揽子刺激计划,其中包括2008年12月的现金支付,恰逢圣诞节支出。因此,零售商报告销售强劲,经济受到...尽管如此,VAR在几种情况下都很有用:
  • VAR向量自回归工具箱

    2014-10-10 04:28:42
    时间序列的工具箱,可直接运用,省去写代码
  • 为弄清能源消费与经济增长的关系,以1978—2018年陕西省能源消费总量和生产总值的实际数据为样本,应用简单散点图、Pearson相关系数法、向量自回归VAR模型,利用单位根检验、协整检验、Granger因果检验和脉冲...
  • 第5讲 VAR模型 本讲内容 一VAR模型介绍 二VAR模型估计与相关检验 三格兰杰因果关系检验 四脉冲响应函数分析 五VAR模型与方差分解 一VAR模型介绍 一VAR模型基本概念 VAR模型研究不同变量之间的互动关系例如经济增长与...
  • 文章应用股市中三个具有典型意义的技术指标,RSI,KDJ和5日平均线建立了非线性回归预测模型,对股票的价格走势进行了短期预测。所建立的回归模型对预测某些股票的短期价格趋势提供了参考,具有一定的理论价值和实际应用...
  • 时差相关系数(Cross Correlation)分析法是利用相关系数检验经济时序变量间滞后关系的一种常用方法对两个时序变量选择一个作为基准变量计算与另一变量在时间上错开(滞后)时的相关系数以相关系数的大小判断两变量间的...
  • 澳大利亚在2008 - 2009年全球金融危机期间发生了这种情况。澳大利亚政府发布了一揽子...VAR面临的批评是他们是理论上的; 也就是说,它们不是建立在一些经济学理论的基础上,这些理论强加了方程式的理论结构。假...
  • matlab中的MVAR模型代码S-MVAR Matlab 工具箱允许分析计算 VAR 模型的参数,探索稀疏回归和状态空间 (SS) 模型的组合方法。 具体而言,研究的方法是:普通最小二乘分析、LASSO 回归、弹性网络回归、融合 LASSO 回归...
  • Stata 中的向量自回归模型(VAR)

    万次阅读 多人点赞 2018-11-21 12:09:44
    在单变量回归中,一个平稳的时间序列 yty_tyt​ 经常被模型化为 AR 过程: yt=α0+α1yt−1+α2yt−2+⋯+αkyt−k+ϵt y_t=\alpha_0+\alpha_1 y_{t-1}+\alpha_2 y_{t-2}+\dots +\alpha_k y_{t-k}+\epsilon_t yt​...
  • 向量自回归和误差修正模型PPT
  • 经济研究。VAR模型

    2018-12-23 22:46:51
    考虑到货币政策与杠杆周期和房价之间的内生性关系以及货币...研究结果表明,价格型和数量型货币政策盯住杠杆目 标的政策偏好均存在适时调整迹象; 但次贷危机以来两种类型货币政策均具有显著盯住 房价目标的政策取向。
  • R语言-向量自回归模型VAR的实现

    万次阅读 2019-01-17 15:02:46
    向量自回归模型VAR是计量经济学中的一个概念,用于多元时间序列相关关系的分析。详细概念我就不赘述了,具体的定义和技术流程可以看计量经济学的相应书籍...在下面的VAR模型中,我只给了一个变量(aba)的示例。 i...
  • BayVAR 是一个 MATLAB 库,旨在从贝叶斯角度估计和分析向量自回归 (VAR) 模型。 BayVAR使用几种先验类型(明尼苏达州/利特曼,Canova,Raynauld-Simonato等)执行不受限制的贝叶斯估计。 还包括通过轴向搜索校准超...
  • Stata: VAR (向量自回归) 模型

    万次阅读 多人点赞 2018-12-05 14:50:40
    系数估计可以通过对 VAR 模型中的每个等式做 OLS 回归得到,误差项的协方差矩阵则需要根据样本残差的协方差矩阵进行估计。 var 命令可以同时实现这两个矩阵的估计,其结果中系数矩阵会默认给出,误差项的协方差矩阵...
  • 压缩包里包括实现MVAR各个功能的20子函数,还有一个自己写的调用各个函数用来实现求EEG信号各通道相关性的脚本。另外还可以画出各通道相关性的图。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,548
精华内容 5,419
关键字:

var模型回归结果