Granger Causality Tests

Earnings Calls vs. Business Liaison & NAB Business Surveys

This notebook explores Granger Causality between sentiment indices derived from earnings calls and similar indices from the RBA's Business Liaison and NAB's business surveys. The procedure followed to establish Granger causality follows Toda H.Y.; Yamamoto T. (1995). Statistical inference in vector autoregressions with possibly integrated processes. Journal of Econometrics, 66, 225–250. Specifically the steps below are followed:

  1. Test each of the time-series to determine their order of integration using the ADF test for which the null hypothesis is non-stationarity.
  2. Let the maximum order of integration for each pair of time series be m. E.g. if one is I(0) and the other is I(1), then m = 1
  3. Set up a Granger Causality test using a bivariate VAR in the levels of the data.
  4. Determine the appropriate maximum lag length for the variables in the VAR, say p, using the AIC criteria.
  5. Make sure that the VAR is well-specified by testing for serial correlation in the residuals. Increase p until any autocorrelation issues are resolved.
  6. Take the preferred VAR model and add in m additional lags of each of the variables into each of the equations.
  7. Test for Granger non-causality under the hypothesis that the coefficients of (only) the first p lagged values of X are zero in the Y equation, using a standard Wald test. It's essential that you don't include the coefficients for the 'extra' m lags when you perform the Wald tests. They are there just to fix up the asymptotics.
  8. The Wald test statistics will be asymptotically chi-square distributed with p d.o.f., under the null.
  9. Rejection of the null implies a rejection of Granger non-causality.

Read in the data

Function to perform ADF tests for stationarity

Function to calculate cross correlations

Variables to test for pairwise Granger Causality

Quarterly data

Order of integration using the ADF test for which the null hypothesis is non-stationarity.

Table 3 of the paper

Add extra lag for the wages_ml series

Stata commands

_qui var nab_labour wages_ml, lags(1/2) exog(l3.wages_ml l3.nablabour)

vargranger

Equation Excluded chi2 df Prob > chi2
nab_labour wages_ml 21.093 2 0.000
nab_labour ALL 21.093 2 0.000
wages_ml nab_labour 2.5652 2 0.277
wages_ml ALL 2.5652 2 0.277

_qui var wages_rd wages_ml, lags(1/2) exog(l3.wages_ml l3.wagesrd)

vargranger

Equation Excluded chi2 df Prob > chi2
wages_rd wages_ml .31648 2 0.854
wages_rd ALL .31648 2 0.854
wages_ml wages_rd 32.454 2 0.000
wages_ml ALL 32.454 2 0.000

_qui var coe_inflation wages_ml, lags(1/2) exog(l3.wages_ml l3.coeinflation)

vargranger

Equation Excluded chi2 df Prob > chi2
coe_inflation wages_ml 2.621 2 0.270
coe_inflation ALL 2.621 2 0.270
wages_ml coe_inflation 4.413 2 0.110
wages_ml ALL 4.413 2 0.110

March and September quarters only

Order of integration using the ADF test for which the null hypothesis is non-stationarity.

Add extra lag for the nab_purchase series

Stata commands

_qui var nab_purchase inputcosts_ml, lags(1/1) exog(l2.nab_purchase l2.inputcostsml)

vargranger

Equation Excluded chi2 df Prob > chi2
nab_purchase inputcosts_ml 4.859 1 0.028
nab_purchase ALL 4.859 1 0.028
inputcosts_ml nab_purchase .51721 1 0.472
inputcosts_ml ALL .51721 1 0.472