Title: PROC VARMAX
1PROC VARMAX
May 8, 2002 Charlie Hallahan
2Overview
- PROC VARMAX estimates model parameters and
generates forecasts associated with Vector
AutoRegressive and Moving Average processes
with eXogenous regressors (VARMAX) models. - The
AR and MA orders can be user-specified or
automatically determined by various
criteria Akaike Information Criterion (AIC)
Corrected AIC (AICC) Hannan-Quinn (HQ)
Criterion Final Prediction Error (FPE)
Schwartz Bayesian Criterion (SBC), aka Bayesian
Information Criterion (BIC) - Provides order
identification diagnostics partial
cross-correlations, Yule-Walker estimates,
partial autoregressive coefficients, and partial
canonical correlations.
3Overview
- PROC VARMAX provides tests for nonstationary
data, including Dickey-Fuller test Johansen
cointegration test for nonstationary vector
processes of integrated order one
Stock-Watson common trends test for the
possibility of cointegration among
nonstationary vector processes of integrated
order one Johansen cointegration test for
nonstationary vector processes of integrated
order two - PROC VARMAX estimates both VAR and
BVAR models for stationary data - PROC VARMAX
estimates both VEC and BVEC models for
nonstationary cointegrated data
4Overview
- PROC VARMAX estimates models with exogenous
variables and distributed lags - PROC VARMAX
uses Least Squares (LS) and Maximum Likelihood
(ML) - PROC VARMAX provides various hypothesis
tests of long-run effects and adjustment
coefficients using the likelihood ratio test
based on Johansen cointegration analysis -
PROC VARMAX provides several diagnostic tests
DW, ARCH effects, F test for AR disturbance,
Jacque-Bera normality test, Portmanteau test -
PROC VARMAX produces forecasts for each type of
model - PROC VARMAX supports seasonal
deterministic terms subset models
multiple regression with distributed lags
dead-start models w/o present values for exog.
vars.
5Overview
- PROC VARMAX provides Granger-Causality
tests infinite order AR representation
impulse response function (or infinite order MA
representation) variance decompositions
roots of the characteristic functions for both
the AR and MA parts
6Getting Started - Vector
Autoregressive Process
/ SIMULATE1 Simulated stationary VAR(1)model
for VARMAX / proc iml sig 1.0 0.5, 0.5
1.25 phi 1.2 -0.5, 0.6 0.3 / to
simulate the vector time series / call
varmasim(y,phi) sigma sig n 100 seed
34567 cn 'y1' 'y2' create simul1 from
ycolnamecn append from y quit
7Getting Started - Vector
Autoregressive Process
data simul1 set simul1 t1 title "Simulated
Data for VAR(1) Model" proc gplot
datasimul1 symbol1 v none i join l 1 c
black symbol2 v none i join l 2 c
black plot y1 t 1 y2 t 2 /
overlay run
8Getting Started - Vector
Autoregressive Process
9Getting Started - Vector
Autoregressive Process
ods html body 'temp_body.html'
contents 'temp_contents.html' proc varmax
datasimul1 model y1 y2 / p1 noint
lagmax3 output lead5 run ods html close
10Getting Started - Vector
Autoregressive Process
true values 1.2 -0.5
0.6 0.3
11Getting Started - Vector
Autoregressive Process
true values 1.0 0.5
0.5 1.25 Use to select among competing
models.
12Getting Started - Vector
Autoregressive Process
13Getting Started - Vector
Autoregressive Process
14Getting Started - Vector
Autoregressive Process
15Getting Started - Bayesian Vector
Autoregressive Process
VARs can suffer from collinearity and
over-parameterization. One way to avoid these
problems is placing a prior distribution on the
slope parameters of the various lags in each
equation. Littermans (1986) Bayesian Vector
Autoregressive models (BVARs) shrink the
parameters to zero by using a prior mean of zero
with prior variances on the slopes decreasing to
zero as the lags increase. The prior variances
are parameterized with two parameters called
theta and lambda.
proc varmax datasimul1 model y1 y2 / p1 noint
prior(lambda0.9 theta0.1) run
16Getting Started - Bayesian Vector
Autoregressive Process
Compare results with VAR estimates on pages
10-11.
17Getting Started - Vector Error Correction Model
A Vector Error Correction Model (VECM) is used
with non-stationary data and allows the
short-term and long-term relationships to be
modeled simultaneously as long as the variables
are cointegrated.
18Getting Started - Vector Error Correction Model
19Getting Started - Vector Error Correction Model
proc iml sig 100i(2) phi -0.2 0.1, 0.5
0.2, 0.8 0.7, -0.4 0.6 call varmasim(y,phi)
sigma sig n 100 seed 45876 initial
0 cn 'y1' 'y2' create simul2 from
ycolnamecn append from y quit data
simul2 set simul2 t1 title "Simulated Data
for VECM(2) Model" proc gplot datasimul2 symbo
l1 v none i join l 1 c black symbol2
v none i join l 2 c black plot y1
t 1 y2 t 2 / overlay run
20Getting Started - Vector Error Correction Model
Note that each series appears to have
a stochastic trend, yet the series seem to
move together, i.e., are cointegrated.
21Getting Started - Vector Error Correction Model
title2 "Test for Cointegration with Johansen
Trace Test" proc varmax datasimul2 model y1
y2 / p2 noint dftest cointtest(johansen) run
22Getting Started - Vector Error Correction Model
Unit root tests show that each variable in
non-stationary.
23Getting Started - Vector Error Correction Model
Reject Do not reject Conclusion the
re is one cointegrating relationship between y1
y2
Note that the NOINT option says that there is no
constant in the ECM but there is a constant
included in the long-term relationship.
24Getting Started - Vector Error Correction Model
title2 "Test for Common Trends with Stock-Watson
Test" proc varmax datasimul2 model y1 y2 /
p2 noint cointtest(sw) run
Conclude there is 1 common trend in the data
Should have cointegrating rank of common
trends of variables in this case , that would
be 1 1 2 (which works).
25Getting Started - Vector Error Correction Model
Now that the cointegrating rank has been
determined to be one, the VECM(2) model can be
estimated specifying a rank of 1.
title2 "Estimating the VECM(2) model with one
cointegrating relationship" proc varmax
datasimul2 model y1 y2 / p2 noint
print(iarr) ecm(rank1
normalizey1) run
26Getting Started - Vector Error Correction Model
Note that the long-run relationship has been
normalized on y1.
true values 1.0
-2.0 (see p. 18)
27Getting Started - Vector Error Correction Model
true values -0.4
0.1 (see p. 18)
true values -0.8 -0.7
0.4 -0.6 (see p. 18)
28Getting Started - Vector Error Correction Model
29Getting Started - Vector Error Correction Model
30Syntax - PROC VARMAX Statement
The statements to be discussed are CAUSAL,
COINTEG, and MODEL
31Syntax - CAUSAL Statement
Although its not clear from the documentation,
the role of GROUP1 GROUP2 is that what is
being tested is if the variables in GROUP2
Granger-cause the variables in GROUP1.
32Syntax - COINTEG Statement
33Syntax - COINTEG Statement
34Syntax - COINTEG Statement
35Syntax - COINTEG Statement
36Syntax - COINTEG Statement
37Syntax - COINTEG Statement
38Syntax - MODEL Statement
39Syntax - MODEL Statement
40Syntax - MODEL Statement
41Syntax - MODEL Statement
42Syntax - MODEL Statement
43Syntax - MODEL Statement
44Syntax - MODEL Statement
45Syntax - MODEL Statement
46Syntax - MODEL Statement
47How to Perform a Cointegration Test
i.e., the intercept trend have been split into
components of the VAR and the cointegrating
equation (CE).
48How to Perform a Cointegration Test
In Version 8.2, VARMAX can only estimate Cases
1,3,5. Version 9 will have an additional option
called ECTREND to handle Cases 2 4.
49Example - Johansen-Juselius Danish data
Real Money
Real Income
Deposit Rate
Bond Rate
50Example - Johansen-Juselius Danish data
proc varmax datamylib.danish model lrm lry ibo
ide / p2 cointtest(johansen(normalizelrm
typetrace)) nseason4 scenter dftest run
Non-seasonal DF Tests No matter what
assumption is made regarding the intercept or
trend, conclude that all the variables
are non-stationary.
51Example - Johansen-Juselius Danish data
Trace test Case 3 Do not
reject H0 r0 Case 2 Do not
reject H0 r0 Conclusion from Trace Test
The variables are not cointegrated and r 0.
52Example - Johansen-Juselius Danish data
proc varmax datamylib.danish model lrm lry ibo
ide / p2 cointtest(johansen(normalizelrm
typemax)) nseason4 scenter dftest(dlag4)
run
Seasonal DF Tests Since the variables all have
non-zero mean, the conclusion is that none of the
variables have a seasonal unit root.
53Example - Johansen-Juselius Danish data
Max Eigenvalue test Case 3 Do
not reject H0 r1 Case 2 Do not
reject H0 r1 Conclusion from the Maximum
Eigenvalue Test There is one cointegrating relati
onship among the 4 variables, i.e. r 1.
54Example - Johansen-Juselius Danish data
Case 3 Case 2
Do not reject restriction
55Example - Johansen-Juselius Danish data
The 4 columns labeled Dummy represent
the potential cointegrating relationships. Note
that each column is normalized on LRM. With r
1, were only interested in the 1st column.
56Example - Johansen-Juselius Danish data
Note that the restricted trend eliminates
the intercept term from the VAR and introduces
an intercept term only in the CE.
57Example - Johansen-Juselius Danish data
58Example - Johansen-Juselius Danish data
Evidence of some residual cross correlation at
lags 3 and 4.
59Example - Johansen-Juselius Danish data
Residuals appear to be normally distributed and
have no ARCH effects.
60Example - Johansen-Juselius Danish data
proc varmax datamylib.danish model lrm lry ibo
ide / p2 cointtest(sw) nseason4 scenter
run
61Example - Johansen-Juselius Danish data
Conclusion Do not reject H0 m 4 Note that m
4 implies that r 0, i.e., the 4 variables are
not cointegrated, which is consistent with the
Trace Test, but not the Max Eigenvalue Test.