Computes the test statistics for Granger- and Instantaneous causality for a VAR(p).
causality(x, cause = NULL, vcov.=NULL, boot=FALSE, boot.runs=100)
A list with elements of class ‘htest
’:
The result of the Granger-causality test.
The result of the instantaneous causality test.
Object of class ‘varest
’; generated by
VAR()
.
A character vector of the cause variable(s). If not set,
then the variable in the first column of x$y
is used as cause
variable and a warning is printed.
a specification of the covariance matrix of the estimated coefficients. This can be
specified as a matrix or as a function yielding a matrix when applied to x
.
Logical. Whether a wild bootstrap procedure should be used to compute the critical values. Default is no
Number of bootstrap replications if boot=TRUE
Bernhard Pfaff
Two causality tests are implemented. The first is a F-type
Granger-causality test and the second is a Wald-type test that is
characterized by testing for nonzero correlation between the error
processes of the cause and effect variables. For both tests the vector
of endogenous variables \(\bold{y}_t\) is split into two subvectors
\(\bold{y}_{1t}\) and \(\bold{y}_{2t}\) with dimensions \((K_1
\times 1)\) and \((K_2 \times 1)\) with \(K = K_1 + K_2\).
For the rewritten VAR(p):
$$
[\bold{y}_{1t} , \bold{y}_{2t}] = \sum_{i=1}^p [\bold{\alpha}_{11, i}' ,
\bold{\alpha}_{12, i}' | \bold{\alpha}_{21, i}' , \bold{\alpha}_{22,
i}'][\bold{y}_{1,t-i}, \bold{y}_{2, t-i}] + CD_t + [\bold{u}_{1t},
\bold{u}_{2t}] \quad ,
$$
the null hypothesis that the subvector \(\bold{y}_{1t}\) does not
Granger-cause \(\bold{y}_{2t}\), is defined as
\(\bold{\alpha}_{21, i} = 0\) for \(i = 1, 2, \ldots, p\). The
alternative is: \(\exists \; \bold{\alpha}_{21,i} \ne 0\) for \(i =
1, 2, \ldots, p\). The test statistic is distributed as \(F(p K_1
K_2, KT - n^*)\), with \(n^*\) equal to the total number of
parameters in the above VAR(p) (including deterministic
regressors).
The null hypothesis for instantaneous causality is defined as:
\(H_0: C \bold{\sigma} = 0\), where \(C\) is a \((N \times K(K
+ 1)/2)\) matrix of rank \(N\) selecting the relevant co-variances of
\(\bold{u}_{1t}\) and \(\bold{u}_{2t}\); \(\bold{\sigma} =
vech(\Sigma_u)\). The Wald statistic is defined as:
$$
\lambda_W = T \tilde{\bold{\sigma}}'C'[2 C D_{K}^{+}(\tilde{\Sigma}_u
\otimes \tilde{\Sigma}_u) D_{K}^{+'} C']^{-1} C
\tilde{\bold{\sigma}} \quad ,
$$
hereby assigning the Moore-Penrose inverse of the duplication matrix
\(D_K\) with \(D_{K}^{+}\) and \(\tilde{\Sigma}_u =
\frac{1}{T}\sum_{t=1}^T \hat{\bold{u}}_t \hat{\bold{u}}_t'\). The
duplication matrix \(D_K\) has dimension \((K^2 \times
\frac{1}{2}K(K + 1))\) and is defined such that for any symmetric
\((K \times K)\) matrix A, \(vec(A) = D_K vech(A)\) holds. The
test statistic \(\lambda_W\) is asymptotically distributed as
\(\chi^2(N)\).
Fot the Granger causality test, a robust covariance-matrix estimator can be
used in case of heteroskedasticity through argument vcov.
It can be either a pre-computed matrix or
a function for extracting the covariance matrix. See vcovHC
from package sandwich for further details.
A wild bootstrap computation (imposing the restricted model as null)
of the p values is available through argument boot
and boot.runs
following Hafner and Herwartz (2009).
Granger, C. W. J. (1969), Investigating causal relations by econometric models and cross-spectral methods, Econometrica, 37: 424-438.
Hafner, C. M. and Herwartz, H. (2009) Testing for linear vector autoregressive dynamics under multivariate generalized autoregressive heteroskedasticity, Statistica Neerlandica, 63: 294-323
Hamilton, J. (1994), Time Series Analysis, Princeton University Press, Princeton.
Lütkepohl, H. (2006), New Introduction to Multiple Time Series Analysis, Springer, New York.
Venables, W. N. and B. D. Ripley (2002), Modern Applied Statistics with S, 4th edition, Springer, New York.
Zeileis, A. (2006) Object-Oriented Computation of Sandwich Estimators Journal of Statistical Software, 16, 1-16
VAR
data(Canada)
var.2c <- VAR(Canada, p = 2, type = "const")
causality(var.2c, cause = "e")
#use a robust HC variance-covariance matrix for the Granger test:
causality(var.2c, cause = "e", vcov.=vcovHC(var.2c))
#use a wild-bootstrap procedure to for the Granger test
if (FALSE) causality(var.2c, cause = "e", boot=TRUE, boot.runs=1000)
Run the code above in your browser using DataLab