help for gcause                                                        [P.Joly]

Granger causality test

gcause var1 var2 [if exp] [in range] , lags(#) [ exog(varlist) regress ]

gcause is for use with time-series data. You must tsset your data before using this commands; see help tsset.


gcause performs a Granger causality test to investigate whether lagged values of a variable, var2, help in forecasting another variable, var1. See Methods & Formulas below.


lags(#) is not optional. It specifies the number of lags of var1 and var2 to include in the regression.

exog(varlist) for lack of a better name, specifies other conditioning variables which may enter the regression. varlist may contain time-series operators which is particularly useful to add other lagged variables to the test regressions.

regress requests the display of the output from the unrestricted regression.

Methods & Formulas

Granger-causality tests are usually performed in the context of vector autoregressions (VAR) or more specifically, individual equations within VAR systems. Individual equations in VARs are known as autoregressive distributed lag (ADL) relationships and may be represented as

p p y_t = c_1 + SUM a_i *y_t-i + SUM b_i *x_t-i + D_t + u_t i=1 i=1

(t = 1,...,T )

where y_t and x_t respectively refer to var1 and var2 in gcause's syntax diagram and D_t corresponds to other variables that need to be controlled for, if any, specified at exog(). p is determined by lags().

The null hypothesis that x_t does not Granger-cause y_t amounts to testing whether b_i = 0 for i = 1,...,p. The rationale for conducting such a test is simple. If event X is seen as causing event Y, then event X should precede Y (Hamilton, p.303). The test statistic is calculated from the sum of squared residuals (RSS) of the unrestricted equation (above) and restricted equation

p y_t = c_0 + SUM g_i *y_t-i + D_t + e_t i=1

using the formula for joint-significance tests given by

F = (RSS_0 - RSS_1)/p ------------------ RSS_1 /(T -2p -1)

which is distributed as an F (p,T -2p -1) variable. RSS_0 (RSS_1) is the residual sum of squares of the restricted (unrestricted) regression.

The above test in only valid asymptotically due to the presence of a lagged dependent variable in the regression. An asymptotically equivalent test is given by,

F_a = T (RSS_0 - RSS_1) ----------------- RSS_1

which is distributed as a chi2(p) variable.


Hamilton, J. D. (1994). Time Series Analysis. Princeton University Press. 799 p.


Thanks to Carol Miu for helpful comments.


Patrick Joly, Industry Canada pat.joly@utoronto.ca

Also see

On-line: help for test, vecar (if installed)