** 단일변량 시계열 모형에서 공적분과 오차수정 모형
/*
종속변수와 설명변수가 비정상적 시계열이지만, 차분한 시계열은 정상적 시계열인 차분 정상적 시계열인 경우, 차분 변수를 이용하여 모형을 추정한다. 이때, 두 변수가 장기적 균형관계(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 시계열 데이터 분석(민인식, 최필선)
댓글