Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Chapter 19 — Predictive Causality (Granger Causality)

In the previous chapter, we introduced dynamic regression models and emphasized the importance of lagged relationships.

We now ask a natural question:

This idea is formalized through Granger causality.

Despite the name, Granger causality is not about deep philosophical or structural causality. It is about predictive content.


Learning Objectives

By the end of this chapter, you should be able to:


19.1 What Is Granger Causality?

Suppose we want to know whether xtx_t helps predict yty_t.

We say that xtx_t Granger-causes yty_t if past values of xtx_t help forecast yty_t after controlling for past values of yty_t.


19.2 Prediction, Not True Causation

Granger causality is about forecasting.

It asks:

Do past values of xtx_t improve prediction of yty_t?

It does not automatically answer:

Does xtx_t structurally or economically cause yty_t?

Examples

We might ask:

In each case, the question is predictive:


19.3 Restricted and Unrestricted Models

To test whether xtx_t Granger-causes yty_t, we compare two models.

Restricted Model

The restricted model uses only past values of yty_t:

yt=α+i=1pϕiyti+uty_t = \alpha + \sum_{i=1}^{p}\phi_i y_{t-i} + u_t

This model assumes that past values of xtx_t do not help predict yty_t.

Unrestricted Model

The unrestricted model includes both past values of yty_t and past values of xtx_t:

yt=α+i=1pϕiyti+j=1qβjxtj+uty_t = \alpha + \sum_{i=1}^{p}\phi_i y_{t-i} + \sum_{j=1}^{q}\beta_j x_{t-j} + u_t

19.4 Hypothesis Testing Framework

The null hypothesis is that lagged values of xtx_t do not help predict yty_t:

H0:β1=β2==βq=0H_0: \beta_1 = \beta_2 = \cdots = \beta_q = 0

The alternative is:

H1:at least one βj0H_1: \text{at least one } \beta_j \neq 0

19.5 The F-Test Intuition

The Granger causality test compares:

If the unrestricted model fits much better, then lagged values of xtx_t add useful predictive information.

The F-statistic is:

F=(SSRRSSRU)/qSSRU/(Tk)F = \frac{(SSR_R - SSR_U)/q}{SSR_U/(T-k)}

where:


19.6 Possible Outcomes

Granger causality can run in one direction, both directions, or neither direction.

ResultInterpretation
xyx \rightarrow yxx helps predict yy
yxy \rightarrow xyy helps predict xx
both directionsfeedback relationship
neither directionno predictive relationship

19.7 Lag Length Matters

Lag selection is crucial.

Too few lags may omit important dynamics.

Too many lags may reduce degrees of freedom and make the test less precise.

In practice, lag length can be guided by:


19.8 Stationarity Matters

Granger causality tests are usually applied to stationary series.

If variables are I(1)I(1), common options include:


19.9 Economic Interpretation

Even when Granger causality is detected, we should interpret the result carefully.

It does not necessarily imply:


19.10 Gretl Example: Interest Rates and Inflation

We now implement a Granger causality test in GRETL using the jgm-data dataset. This follows the example in your notes. :contentReference[oaicite:0]{index=0}

We ask:

Do short-term interest rates help predict CPI inflation?

Step 1: Load the Data

File → Open data → Sample file...

Select jgm-data from the GRETL database.

We use:

pi_c     inflation rate based on the CPI
r_s      short-term interest rate

19.11 Restricted Model

The restricted model predicts inflation using only its own past values.

In your notes, lag selection suggests an AR(1) model for pi_c.

Model → Univariate time series → ARIMA lag selection

Dependent variable:

pi_c

Try a maximum AR lag of 5.

Example output suggests that one lag is sufficient.

Then estimate:

Model → Univariate time series → ARIMA

with AR order 1.

Restricted Model Output

Model 2: ARMA, using observations 1952-1994 (T = 43)
Estimated using AS 197 (exact ML)
Dependent variable: pi_c

             coefficient   std. error     z       p-value 
  --------------------------------------------------------
  const       3.53530      1.64385       2.151   0.0315    **
  phi_1       0.873605     0.0693047    12.61    1.97e-036 ***

Mean dependent var   4.246077   S.D. dependent var   3.195937
Mean of innovations  0.034572   S.D. of innovations  1.532847
R-squared            0.764867   Adjusted R-squared   0.764867
Log-likelihood      −80.10105   Akaike criterion     166.2021
Schwarz criterion    171.4857   Hannan-Quinn         168.1505

Save the error sum of squares:

Save → Error sum of squares

In the example:

SSRR=101.0337SSR_R = 101.0337

19.12 Unrestricted Model

The unrestricted model includes lagged interest rates.

We use two lags of r_s, based on lag selection.

Lag Selection

Model → Multivariate time series → VAR lag selection

Use:

Example output:

VAR system, maximum lag order 5

lags        loglik    p(LR)       AIC          BIC          HQC

   1     -68.39186             3.757466     3.886749     3.803464 
   2     -65.81966  0.02332    3.674719*    3.847096*    3.736049*
   3     -65.81635  0.93515    3.727176     3.942648     3.803839 
   4     -65.76655  0.75230    3.777187     4.035753     3.869182 
   5     -65.76616  0.97785    3.829798     4.131458     3.937126 

The information criteria suggest two lags.-

Estimate the Unrestricted Model

Model → Univariate time series → ARIMA

Use:

Use the lags... icon in the model box to create lagged regressors.

Output

Model 3: ARMAX, using observations 1954-1994 (T = 41)
Estimated using AS 197 (exact ML)
Dependent variable: pi_c

             coefficient   std. error     z       p-value 
  --------------------------------------------------------
  const        2.48133     1.73771       1.428   0.1533   
  phi_1        0.886579    0.0736422    12.04    2.22e-033 ***
  r_s_1        0.342550    0.111572      3.070   0.0021    ***
  r_s_2       −0.197852    0.109574     −1.806   0.0710    *

Mean dependent var   4.415833   S.D. dependent var   3.153664
Mean of innovations  0.076028   S.D. of innovations  1.288293
R-squared            0.829694   Adjusted R-squared   0.820731
Log-likelihood      −69.33345   Akaike criterion     148.6669
Schwarz criterion    157.2348   Hannan-Quinn         151.7868

Save the unrestricted error sum of squares.

In the example:

SSRU=68.0476SSR_U = 68.0476

19.13 Manual F-Test

We now compute:

F=(SSRRSSRU)/qSSRU/(Tk)F = \frac{(SSR_R - SSR_U)/q}{SSR_U/(T-k)}

Using:

we get:

F=(101.033768.0476)/268.0476/(414)=8.97F = \frac{(101.0337 - 68.0476)/2}{68.0476/(41-4)} = 8.97

19.14 VAR Alternative in Gretl

A more direct way is to estimate a VAR and use GRETL’s built-in tests.

Model → Multivariate time series → Vector Autoregression

Choose:

Command

var 2 pi_c r_s

Example output:

VAR system, lag order 2
OLS estimates, observations 1954-1994 (T = 41)

Equation 1: pi_c

             coefficient   std. error   t-ratio   p-value 
  --------------------------------------------------------
  const       1.15247       0.435623     2.646    0.0120   **
  pi_c_1      0.900227      0.152258     5.913    9.10e-07 ***
  pi_c_2      0.0613022     0.160992     0.3808   0.7056  
  r_s_1       0.255695      0.134001     1.908    0.0644   *
  r_s_2      −0.401963      0.123225    −3.262    0.0024   ***

F-tests of zero restrictions:

All lags of pi_c             F(2, 36) =   43.758 [0.0000]
All lags of r_s              F(2, 36) =   5.6225 [0.0075]
All vars, lag 2              F(2, 36) =   6.1167 [0.0052]

The line:

All lags of r_s              F(2, 36) =   5.6225 [0.0075]

tests whether lagged values of r_s help predict pi_c.

Since the p-value is small, we reject the null.


19.15 Common Mistakes


19.16 Looking Ahead

Granger causality focuses on predictive relationships, usually in stationary data.

However, many economic time series are nonstationary.

In the next chapter, we introduce cointegration, which allows us to study meaningful long-run relationships between nonstationary variables.

Key Takeaways

Concept Check

Basic

  1. What is Granger causality?

  2. What does it mean for xtx_t to Granger-cause yty_t?

  3. What is the difference between predictive causality and true causality?


Intuition

  1. Why can a variable help predict another without truly causing it?

  2. Why is Granger causality fundamentally a forecasting concept?

  3. Why is it important to include lagged values of yty_t in the test?


Models

  1. What is the difference between:

    • restricted model

    • unrestricted model

  2. What is the null hypothesis in a Granger causality test?

  3. What does it mean to reject the null hypothesis?


Testing

  1. What does the F-test compare?

  2. What does a large F-statistic indicate?


Lag Length

  1. Why does lag length matter in Granger causality testing?

  2. What happens if too few lags are used?

  3. What happens if too many lags are used?


Stationarity

  1. Why must variables be stationary before applying Granger causality tests?


Challenge

  1. Can Granger causality exist in both directions?


Interpretation & Practice

  1. A test finds that xtx_t Granger-causes yty_t.

    • What does this mean?

    • What does it NOT mean?

  2. A test fails to reject the null.

    • What conclusion can you draw?

    • What can you NOT conclude?

  3. Both xtx_t and yty_t Granger-cause each other.

    • What type of relationship might this indicate?

  4. A model includes too few lags.

    • How might this affect the test?

  5. A model includes too many lags.

    • What problem might arise?


Stationarity Interpretation

  1. You run a Granger test on nonstationary variables in levels.

    • What is the risk?

  2. After differencing, the Granger result disappears.

    • What does this suggest?


Economic Interpretation

  1. Interest rates Granger-cause inflation.

    • Why should we interpret this result cautiously?


Challenge

  1. A third variable affects both xtx_t and yty_t.

    • How could this affect Granger causality results?


Numerical Practice

Understanding the Test

  1. Suppose:



Interpretation

  1. The F-statistic is large and statistically significant.


Model Comparison

  1. Suppose:



Lag Structure

  1. Suppose only one lag is included, but the true relationship requires two lags.


Stationarity

  1. Suppose both variables are random walks.


VAR Output Interpretation

  1. Suppose Gretl reports:

All lags of x: F(2,36) = 5.2 [0.01]

Challenge

  1. Suppose:


  1. Suppose:


Appendix 19A — Testing Linear Restrictions in Regression

This appendix explains the general idea behind tests such as the Granger causality test.


A.1 The Basic Idea

Suppose we estimate:

yt=α+β1x1t+β2x2t++βkxkt+uty_t = \alpha + \beta_1 x_{1t} + \beta_2 x_{2t} + \cdots + \beta_k x_{kt} + u_t

We may want to test whether some variables matter jointly.


A.2 A Joint Hypothesis

For example:

H0:β2=β3=0H_0: \beta_2 = \beta_3 = 0

This means that x2tx_{2t} and x3tx_{3t} have no effect on yty_t after controlling for the other variables.


A.3 Restricted and Unrestricted Models

The unrestricted model includes all variables:

yt=α+β1x1t+β2x2t+β3x3t+uty_t = \alpha + \beta_1 x_{1t} + \beta_2 x_{2t} + \beta_3 x_{3t} + u_t

The restricted model imposes the null hypothesis:

yt=α+β1x1t+uty_t = \alpha + \beta_1 x_{1t} + u_t

A.4 Comparing the Models

We compare the sum of squared residuals:

If the restricted model fits much worse, then the excluded variables are probably important.


A.5 The F-Test

The test statistic is:

F=(SSRRSSRU)/qSSRU/(Tk)F = \frac{(SSR_R - SSR_U)/q}{SSR_U/(T-k)}

where:


A.6 Connection to Granger Causality

In Granger causality testing, the null is:

H0:lagged values of xt do not help predict ytH_0: \text{lagged values of } x_t \text{ do not help predict } y_t

This is simply a joint test that several lag coefficients are equal to zero.


A.7 Intuition in Words

The logic is simple: