본문 바로가기
카테고리 없음

[STATA] VEC 모형

by e-money2580 2023. 2. 6.
반응형


** 단일변량 시계열 모형에서 공적분과 오차수정 모형
/*
종속변수와 설명변수가 비정상적 시계열이지만, 차분한 시계열은 정상적 시계열인 차분 정상적 시계열인 경우, 차분 변수를 이용하여 모형을 추정한다. 이때, 두 변수가 장기적 균형관계(long-run equilibrium)에 있다면 이 차분변수의 회귀모형은 의미가 있으며 공적분 관계(cointegrated relationship)에 있다고 정의한다.

공적분관계의 조건

1) 두 변수가 모두 1차 적분이다. 종속변수와 설명변수가 모두 I(1), 즉 1차 차분 정상적 시계열이다.
2) 두 변수의 선형결합이 I(0), 즉 정상적 시계열이다

** 다변량 시계열 모형에서 공적분 
다변량 모형에서 k개 내생변수가 I(1) : 1차 차분 정상적 시계열이라고 가정

공적분 관계에 있는 변수들의 선형결합은 I(0)이 됨

다변량 모형에서는 개별 공적분 벡터로 구성된 공적분 공간이 식별될 수 있음

공적분 공간은 k개 내생변수간 장기균형이 1개 이상 존재할 수 있다는 것을 의미

Engle and Granger(1987)은 1개 이상 공적분 관계가 존재하는 VAR 모형에서 벡터오차 수정(VEC : vector error correction) 모형을 제시
*/

 



** VEC 모형과 VAR 모형의 차이점 : VEC 모형은 내생변수 간 장기적 균형관계(공적분 관계)를 가정하고, VAR은 내생변수(차분) 간 장기적 균형관계(공적분 관계)를 가정하지 않음


** 그래프를 통해 3개의 내생변수의 시계열의 정상성, 변수들간 공적분관계 확인

use "D:\STATA연습데이터\STATA시계열데이터분석\T_data13_1.dta",clear
// 1990년1분기 ~ 2011년1분기, conwgdc : 워싱턴dc 건설업 임금, conwgmd : 메릴랜드, conwgva : 버지니아
// 세 지역은 서로 인접한 지역이므로 각 지역 임금변수가 서로 영향을 주고 받으며 균형에 접근할 것으로 예상

tsset date 

gen dcwage=100*(conwgdc/conwgdc[1]) // 1990년1분기 임금(conwgdc 변수 관측치 중 첫번째 관측치)을 100으로 했을 때 각 연도의 임금을 지수로 환산
gen mdwage=100*(conwgmd/conwgmd[1])
gen vawage=100*(conwgva/conwgva[1])

tsline *wage // 지수로 환산한 각 지역 임금을 그래프로 그리기
// 세 지역 임금 변수는 같은 패턴으로 움직임(시간이 지남에 따라 증가하는 패턴) = 비정상적 시계열이며 공적분관계가 있을 수 있음


** 단위근 검정 실행 = 3개의 내생변수가 I(1) 변수(1차 차분 정상적 시계열 변수)인지 확인 

dfuller dcwage, lag(1)
/*
Augmented Dickey–Fuller test for unit root

Variable: dcwage                           Number of obs  = 83
                                           Number of lags =  1

H0: Random walk without drift, d = 0

                                       Dickey–Fuller
                   Test      -------- critical value ---------
              statistic           1%           5%          10%오후 12:16 2023-02-01
--------------------------------------------------------------
 Z(t)            -0.127       -3.534       -2.904       -2.587
--------------------------------------------------------------
MacKinnon approximate p-value for Z(t) = 0.9467.
*/

dfuller mdwage, lag(1)
/*
Augmented Dickey–Fuller test for unit root

Variable: mdwage                           Number of obs  = 83
                                           Number of lags =  1

H0: Random walk without drift, d = 0

                                       Dickey–Fuller
                   Test      -------- critical value ---------
              statistic           1%           5%          10%
--------------------------------------------------------------
 Z(t)            -0.710       -3.534       -2.904       -2.587
--------------------------------------------------------------
MacKinnon approximate p-value for Z(t) = 0.8442.
*/

dfuller vawage, lag(1)

/*
Augmented Dickey–Fuller test for unit root

Variable: vawage                           Number of obs  = 83
                                           Number of lags =  1

H0: Random walk without drift, d = 0

                                       Dickey–Fuller
                   Test      -------- critical value ---------
              statistic           1%           5%          10%
--------------------------------------------------------------
 Z(t)            -1.231       -3.534       -2.904       -2.587
--------------------------------------------------------------
MacKinnon approximate p-value for Z(t) = 0.6602.
*/

// 3개의 내생변수 모두 내생변수에 단위근이 있다(추세 없는 랜덤워크 과정 = 비정상적 시계열)는 귀무가설을 기각할 수 없음 = 3개의 내생변수는 모두 비정상적 시계열임


** 3개의 내생변수에 대한 VAR 모형의 차수 결정(VAR(p)모형의 p차수 결정)

varsoc dcwage mdwage vawage, maxlag(8)
/*
Lag-order selection criteria

   Sample: 1992:1 thru 2011:1                               Number of obs = 77
  +---------------------------------------------------------------------------+
  | Lag |    LL      LR      df    p     FPE       AIC      HQIC      SBIC    |
  |-----+---------------------------------------------------------------------|
  |   0 | -928.691                     6.5e+06   24.1998   24.2363   24.2911  |
  |   1 | -606.477  644.43    9  0.000 1902.62   16.0643   16.2104*  16.4296* |
  |   2 | -600.322   12.31    9  0.196 2051.05   16.1382   16.3939   16.7774  |
  |   3 | -587.863  24.917    9  0.003  1880.3*  16.0484*  16.4137   16.9616  |
  |   4 | -583.116  9.4937    9  0.393 2111.23   16.1589   16.6337    17.346  |
  |   5 | -580.694   4.844    9  0.848 2526.31   16.3297   16.9141   17.7908  |
  |   6 | -574.279  12.831    9  0.170 2736.44   16.3968   17.0908   18.1319  |
  |   7 | -568.734  11.089    9  0.270  3047.4   16.4866   17.2902   18.4956  |
  |   8 | -558.028  21.412*   9  0.011 2986.33   16.4423   17.3554   18.7252  |
  +---------------------------------------------------------------------------+
   * optimal lag
   Endogenous: dcwage mdwage vawage
    Exogenous: _cons
*/
// VAR 차수는, SBIC에 따르면 1차, AIC에 따르면 3차


** 3개의 내생변수에 대한 Johansen 검정
// 앞선 VAR 모형 차수 결정을 위한 검정(varsoc 명령어) 결과에 따라 VAR모형 1차와 3차를 Johansen 검정한다

vecrank dcwage mdwage vawage, lags(1) 
// 다변량 모형에서 공적분 검정을 위해서는 VEC 모형을 설정한 후 추정할 필요
// lags() 옵션에서 지정한 차수는 VAR모형의 차수이며, VEC 모형은 VAR모형 차수 p보다 하나 적은 p-1이 된다
// lags(1)은 VAR(1)이고 VEC 모형에서는 0차가 된다
/*

Johansen tests for cointegration
Trend: Constant                            Number of obs  = 84
Sample: 1990:2 thru 2011:1                 Number of lags =  1
--------------------------------------------------------------
                                                      Critical
Maximum                                        Trace     value
   rank  Params           LL  Eigenvalue   statistic        5%
      0      3    -695.95551           .     68.0618     29.68
      1      8    -671.66527     0.43917     19.4813     15.41
      2      11   -664.05858     0.16566      4.2679      3.76
      3      12   -661.92463     0.04954
--------------------------------------------------------------
*/
// r=0일 때 검정통계량(68.06)은 5% 유의수준에서 임계치(29.68)를 초과하므로 귀무가설(공적분 관계인 내생변수가 0개)을 기각 = 공적분 관계인 내생변수가 존재
// r=1일 때 검정통계량이 임계치를 초과하므로 귀무가설(공적분 관계가 1개 이하)을 기각 = 공적분 관계가 2개 이상 존재
// r=2일 때 귀무가설(공적분 관계가 2개 이하) 기각 = 공적분 관계를 결정하기 어려운 상황

vecrank dcwage mdwage vawage, lags(3) 
/*
Johansen tests for cointegration
Trend: Constant                            Number of obs  = 82
Sample: 1990:4 thru 2011:1                 Number of lags =  3
--------------------------------------------------------------
                                                      Critical
Maximum                                        Trace     value
   rank  Params           LL  Eigenvalue   statistic        5%
      0      21   -661.77587           .     60.4462     29.68
      1      26   -640.94105     0.39840     18.7766     15.41
      2      29   -632.10389     0.19389      1.1022*     3.76
      3      30   -631.55277     0.01335
--------------------------------------------------------------
* selected rank
*/
// r=0, r=1일 때 귀무가설(공적분관계 0개, 공적분관계 1개 이하) 기각 = 공적분 관계가 2개 이상 존재 
// r=2일 때 귀무가설(공적분 관계가 2개 이하) 기각하지 못함 = 공적분 관계는 2개

// 표본수(82개)가 적으므로(90개 이하) VEC 모형 설정(차수)이 검정결과에 영향을 미침


vecrank dcwage mdwage vawage, lags(3) max notrace // notrace : 대각합 검정을 실행하지 않음
/*
Johansen tests for cointegration
Trend: Constant                            Number of obs  = 82
Sample: 1990:4 thru 2011:1                 Number of lags =  3
--------------------------------------------------------------
                                                      Critical
Maximum                        ------Eigenvalue-----     value
   rank  Params           LL                 Maximum        5%
      0      21   -661.77587           .     41.6696     20.97
      1      26   -640.94105     0.39840     17.6743     14.07
      2      29   -632.10389     0.19389      1.1022      3.76
      3      30   -631.55277     0.01335
--------------------------------------------------------------
*/
// r=0,1일 때 귀무가설 기각. r=2일 때 귀무가설을 기각하지 못함 = 2개의 공적분 관계가 존재함


** VEC 모형 추정

vec dcwage mdwage vawage, lags(3) rank(2) // rank()에 Johansen 검정(vecrank 명령어) 결과인 공적분 관계 2개를 입력
/*
Vector error-correction model

Sample: 1990:4 thru 2011:1                      Number of obs     =         82
                                                AIC               =   16.12449
Log likelihood = -632.1039                      HQIC              =   16.46621
Det(Sigma_ml)  =  995.7904                      SBIC              =   16.97564

Equation           Parms      RMSE     R-sq      chi2     P>chi2
----------------------------------------------------------------
D_dcwage              9     4.50061   0.3154   33.62801   0.0001
D_mdwage              9     2.92394   0.5155   77.68106   0.0000
D_vawage              9     4.85127   0.4018   49.03901   0.0000
----------------------------------------------------------------

------------------------------------------------------------------------------
             | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
D_dcwage     |
        _ce1 |
         L1. |  -.2348401    .082845    -2.83   0.005    -.3972133   -.0724669
             |
        _ce2 |
         L1. |   .0309208   .1810307     0.17   0.864    -.3238929    .3857344
             |
      dcwage |
         LD. |   -.064572   .1174899    -0.55   0.583     -.294848     .165704
        L2D. |   .1566788   .1149334     1.36   0.173    -.0685865    .3819442
             |
      mdwage |
         LD. |  -.2473611   .2851503    -0.87   0.386    -.8062453    .3115232
        L2D. |  -.1686012   .2811495    -0.60   0.549    -.7196441    .3824417
             |
      vawage |
         LD. |    .254416   .1849565     1.38   0.169     -.108092    .6169241
        L2D. |  -.0483482   .1875207    -0.26   0.797    -.4158821    .3191857
             |
       _cons |   .1142135   .5712562     0.20   0.842    -1.005428    1.233855
-------------+----------------------------------------------------------------
D_mdwage     |
        _ce1 |
         L1. |    .114765   .0538224     2.13   0.033     .0092751     .220255
             |
        _ce2 |
         L1. |  -.6714628   .1176112    -5.71   0.000    -.9019765    -.440949
             |
      dcwage |
         LD. |  -.1418978   .0763303    -1.86   0.063    -.2915025    .0077069
        L2D. |  -.1481038   .0746694    -1.98   0.047    -.2944532   -.0017544
             |
      mdwage |
         LD. |   .1699159   .1852552     0.92   0.359    -.1931776    .5330093
        L2D. |   .2172417    .182656     1.19   0.234    -.1407574    .5752408
             |
      vawage |
         LD. |  -.1531114   .1201617    -1.27   0.203     -.388624    .0824012
        L2D. |  -.1406968   .1218276    -1.15   0.248    -.3794746     .098081
             |
       _cons |  -.3422727   .3711312    -0.92   0.356    -1.069677    .3851311
-------------+----------------------------------------------------------------
D_vawage     |
        _ce1 |
         L1. |    .234999   .0892998     2.63   0.008     .0599747    .4100233
             |
        _ce2 |
         L1. |  -.8295887   .1951355    -4.25   0.000    -1.212047   -.4471303
             |
      dcwage |
         LD. |  -.3553392    .126644    -2.81   0.005    -.6035568   -.1071216
        L2D. |  -.3061054   .1238883    -2.47   0.013     -.548922   -.0632888
             |
      mdwage |
         LD. |   .4681826   .3073674     1.52   0.128    -.1342464    1.070612
        L2D. |   .1205381   .3030549     0.40   0.691    -.4734386    .7145148
             |
      vawage |
         LD. |  -.2456053   .1993671    -1.23   0.218    -.6363577     .145147
        L2D. |   .0388942   .2021312     0.19   0.847    -.3572756     .435064
             |
       _cons |   .2812899   .6157649     0.46   0.648    -.9255871    1.488167
------------------------------------------------------------------------------

Cointegrating equations

Equation           Parms    chi2     P>chi2
-------------------------------------------
_ce1                  1   387.0889   0.0000
_ce2                  1   5405.022   0.0000
-------------------------------------------

Identification:  beta is exactly identified

                 Johansen normalization restrictions imposed
------------------------------------------------------------------------------
        beta | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
_ce1         |
      dcwage |          1          .        .       .            .           .
      mdwage |          0  (omitted)
      vawage |  -.5452927   .0277156   -19.67   0.000    -.5996143   -.4909711
       _cons |  -9.228408          .        .       .            .           .
-------------+----------------------------------------------------------------
_ce2         |
      dcwage |          0  (omitted)
      mdwage |          1          .        .       .            .           .
      vawage |  -.6720692   .0091415   -73.52   0.000    -.6899861   -.6541522
       _cons |   -11.3031          .        .       .            .           .
------------------------------------------------------------------------------
*/
/* 
추정결과 _ce1 : VA 지역 임금지수가 1단위 증가할 때 DC 지역 임금지수는 0.54만큼 증가하는 장기적 균형관계를 가짐

z1 = dcwage t - 9.22 - 0.54 x vawage t (z1=0이면,)
dcwage t = 9.22 + 0.54 x vawage t

추정결과 _ce2 : VA 지역 임금지수가 1단위 증가할 때 MD 지역 임금지수는 0.67만큼 증가하는 장기적 균형관계를 가짐

z2 = mdwage t - 11.3031 - 0.67 x vawage t (z2=0이면)
mdwage t = 11.30 + 0.67 x vawage t

상기 두 식을 이용하면,
mdwage t = 5.14 + 1.24 x dcwage t

: DC지역 임금지수가 1단위 증가할 때 MD 지역 임금지수는 1.24만큼 증가하는 장기적 균형관계를 가짐
*/


** VEC 모형 추정후, 오차항이 백색잡음 또는 정규분포를 따르는지 검정

veclmar // 1계 및 2계 자기상관 검정
/*
   Lagrange-multiplier test
  +--------------------------------------+
  | lag  |      chi2    df   Prob > chi2 |
  |------+-------------------------------|
  |   1  |    3.4929     9     0.94152   |
  |   2  |    6.6926     9     0.66909   |
  +--------------------------------------+
   H0: no autocorrelation at lag order
*/ // 1계 및 2계 자기 상관이 없다는 귀무가설을 기각하지 못함

vecnorm
/*
   Jarque-Bera test
  +--------------------------------------------------------+
  |           Equation |            chi2   df  Prob > chi2 |
  |--------------------+-----------------------------------|
  |           D_dcwage |            0.778   2    0.67783   |
  |           D_mdwage |            1.969   2    0.37366   |
  |           D_vawage |            0.752   2    0.68653   |
  |                ALL |            3.499   6    0.74414   |
  +--------------------------------------------------------+

   Skewness test
  +--------------------------------------------------------+
  |           Equation | Skewness   chi2   df  Prob > chi2 |
  |--------------------+-----------------------------------|
  |           D_dcwage | -.06614    0.060   1    0.80683   |
  |           D_mdwage | -.29452    1.185   1    0.27625   |
  |           D_vawage |    .226    0.698   1    0.40344   |
  |                ALL |            1.943   3    0.58426   |
  +--------------------------------------------------------+

   Kurtosis test
  +--------------------------------------------------------+
  |           Equation | Kurtosis   chi2   df  Prob > chi2 |
  |--------------------+-----------------------------------|
  |           D_dcwage |  3.4584    0.718   1    0.39682   |
  |           D_mdwage |  3.4788    0.783   1    0.37611   |
  |           D_vawage |  2.8741    0.054   1    0.81596   |
  |                ALL |            1.555   3    0.66953   |
  +--------------------------------------------------------+
*/ 
// 오차항이 정규분포를 따른다는 귀무가설을 기각하지 못함


** VEC 모형 추정후, 표본내 예측결과 구하고 그래프 그리기

predict ce1, ce equation(_ce1) // _ce1 방정식에서 예측결과 계산
predict ce2, ce equation(_ce2) // _ce2 방정식에서 예측결과 계산

label var ce1 "DC/VA long-run" // ce1 변수는 장기적균형에서 벗어나는 정도를 보여줌
// 양(+)의 값 : 장기적 균형관계에 비해 분자(DC지역 임금)가 상대적으로 높음
// 음(-)의 값 : 장기적 균형관계에 비해 분모(VA지역 임금)가 상대적으로 높음
label var ce2 "MD/VA long-run"

tsline ce*, yline(0)


predict dchat, levels equation(D_dcwage) // levels : 내생변수의 레벨값에 대한 1기 미래 예측치 계산
// eqauation(D_dcwage) : VEC 모형에서 첫번째 방정식인 dcwage의 1차 차분방정식을 이용하여 예측
predict mdhat, levels equation(D_mdwage)
predict vahat, levels equation(D_vawage)

label var dchat "one-step ahead forecast for DC"
label var mdhat "one-step ahead forecast for MD"
label var vahat "one-step ahead forecast for VA"

tsline *hat
tsline dcwage dchat // 표본내 데이터를 이용한 1기간 미래 예측이므로 두 그래프는 거의 일치함


** VEC 모형 추정후, 표본외 예측결과 구하고 그래프 그리기

qui vec dcwage mdwage vawage if dat<=yq(2009,1), lags(3) rank(2)
// lags(3) : VEC 모형 차수 2차, rank(2) 공적분 관계 2개인 VEC 모형을 1990년1분기~2009년1분기 기간에 대해 추정

fcast compute out_, step(8) dynamic(tq(2009q2)) // fcast compute : var, svar, vec 명령어 실행 후 동적예측 명령어, out_ : 새로 생성되는 변수의 이름에 접두어 "out"을 사용, step(8) : 8분기 미래 예측, dynamic(tq(2009q2)) : 2009년2분기부터 예측 시작

tsline dcwage out_dcwage if date>=yq(2005,1) // 2005년1분기부터 DC 지역 임금 실제 관측치와 예측치를 그래프로 그리기


qui vec dcwage mdwage vawage, lags(3) rank(2) 
// lags(3) : VEC 모형 차수 2차, rank(2) 공적분 관계 2개인 VEC 모형을 표본 전체 기간에 대해 예측

capture drop out* // out으로 시작하는 변수 모두 삭제

fcast compute out_, step(8) // 표본외 8분기 미래 예측
fcast graph out_dcwage out_mdwage out_vawage // 예측결과 그래프 그리기


** VEC 추정후 특정 시점의 충격을 가정하고 IRF와 FEVD 계산하기

use "D:\STATA연습데이터\STATA시계열데이터분석\T_data13_1.dta", clear
tsset date

gen dcwage=100*(conwgdc/conwgdc[1]) 
gen mdwage=100*(conwgmd/conwgmd[1])
gen vawage=100*(conwgva/conwgva[1])

qui vec dcwage mdwage vawage, lags(3) rank(2)

irf create vec3, set("D:\STATA연습데이터\STATA시계열데이터분석\myirf.irf") step(8) replace
// IRF 계산하기

irf table oirf, noci impulse(dcwage) // DC지역 임금에 충격이 발생했을 때 3개의 내생변수에 미치는 OIRF 결과 표로 가져오기
/*
Results from vec3

-------------------------------------------
         |      (1)         (2)         (3)  
    Step |     oirf        oirf        oirf  
---------+---------------------------------
       0 |  4.50061     .551564     .765345
       1 |  3.31051     .333113     .165067
       2 |   3.1144     .122778    -.075798
       3 |  2.26148     .610526     .866667
       4 |  2.03283     .873825     1.58904
       5 |   1.6249     1.20428      2.4078
       6 |  1.57661     1.49612     3.05289
       7 |  1.51596     1.83377     3.68504
       8 |  1.60523     2.15775     4.20178
-------------------------------------------
(1) irfname = vec3, impulse = dcwage, and response = dcwage.
(2) irfname = vec3, impulse = dcwage, and response = mdwage.
(3) irfname = vec3, impulse = dcwage, and response = vawage.
*/

irf graph oirf, byopts(yrescale) // OIRF 결과 그래프로 그리기
// VAR 모형과 달리 VEC 모형은 내생변수 간 장기균형관계가 존재하므로 0으로 수렴하지 않는 패턴을 보임
// VA지역 임금의 충격은 MD지역과 DC지역 임금에 즉각적이고 지속적인 양(+)의 영향을 미침


** 공적분 관계를 포함한 VEC 모형과 공적분 관계를 포함하지 않은 VAR 모형을 추정한 후 OIRF 결과 비교하기

use "D:\STATA연습데이터\STATA시계열데이터분석\T_data13_1.dta", clear
tsset date

gen dcwage=100*(conwgdc/conwgdc[1]) 
gen mdwage=100*(conwgmd/conwgmd[1])
gen vawage=100*(conwgva/conwgva[1])

qui vec dcwage mdwage vawage, lags(3) rank(2) // 공적분 관계 2개인 VEC 모형

irf create vec_co, set("D:\STATA연습데이터\STATA시계열데이터분석\myirf.irf") step(8) replace

qui vec dcwage mdwage vawage, lags(3) rank(0) // 공적분 관계 0개인 VEC 모형 추정시 에러가 발생함
// rank() invalid -- invalid number, outside of allowed range

qui var d.dcwage d.mdwage d.vawage, lag(2) // VAR(2) 모형 추정
irf create vec_no, set("D:\STATA연습데이터\STATA시계열데이터분석\myirf.irf") step(8) replace

irf ograph (vec_co vawage dcwage oirf) (vec_no d.vawage d.dcwage oirf)
// VA지역 임금이 충격일 때 DC지역 임금의 반응을 VEC모형과 VAR 모형에서 각각 보여주는 그래프
// VEC 모형 : VA지역 임금이 충격이 DC지역 임금에 지속적인 양(+)의 영향을 미친다 (임금 수준(LEVEL)), VEC 모형은 두 변수의 장기적 균형관계를 가정하므로
// VAR 모형 : VA지역 임금 차분의 충격이 DC 지역 임금의 차분에 미치는 영향은 시간이 지남에 따라 사라진다. VAR 모형은 두 변수의 장기적 균형관계를 고려하지 않으므로

 

출처 : STATA 시계열 데이터 분석(민인식, 최필선)

반응형

댓글