How to Perform a Breusch-Godfrey Test in R

Spread the love

While the Durbin-Watson test is a popular tool for detecting autocorrelation in the residuals of regression models, it has limitations, especially for models with lagged dependent variables or when checking for higher order autocorrelation. In such cases, the Breusch-Godfrey (BG) test, also known as the LM (Lagrange Multiplier) test for autocorrelation, becomes an invaluable tool. This article will delve into the specifics of the BG test, how it works, and the steps to perform it in R.

What is Autocorrelation?

Autocorrelation, or serial correlation, refers to the relationship between current residuals and past residuals in a time series or regression context. When present, it violates the assumption that residuals are independent of each other, which can lead to inefficient parameter estimates and misleading statistical inferences.

Understanding the Breusch-Godfrey Test

The Breusch-Godfrey test specifically assesses whether there’s autocorrelation at specified lag intervals. This gives it an edge over the Durbin-Watson test when examining more complex models or higher-order autocorrelation.

The BG test is conducted as follows:

  1. Estimate your original regression model and obtain the residuals (etet​).
  2. Estimate an auxiliary regression with etet​ as the dependent variable and the original independent variables and lagged residuals as explanatory variables.
  3. The test statistic is computed from the auxiliary regression and has a chi-squared distribution.

Performing the Breusch-Godfrey Test in R

Step 1: Install and Load Necessary Packages

First, ensure you have the lmtest package installed. If not:


Load the package:


Step 2: Construct the Regression Model

Assume a dataset data with dependent variable y and independent variable x.

model <- lm(y ~ x, data = data)

Step 3: Execute the Breusch-Godfrey Test

With the bgtest() function from the lmtest package, perform the BG test:

bg_result <- bgtest(model, order = p)

Here, order is the number of lags pp you want to test for autocorrelation. For instance, if you’re going to test for up to second-order autocorrelation, you’d set order = 2.

Step 4: Interpret the Results

The bgtest() function yields a test statistic and a p-value:

  • p-value < 0.05: Indicates significant autocorrelation up to the order you specified.
  • p-value > 0.05: No evidence of significant autocorrelation.

Key Considerations

  1. Model Specification: Ensure your model is correctly specified. The presence of autocorrelation can sometimes result from an omitted variable or a wrong functional form.
  2. Lag Length: The choice of the lag length pp is crucial. An overly large pp can reduce test power, while an excessively small pp might not capture all autocorrelation.
  3. Alternative Tests: While the BG test is versatile, it’s good practice to consider other tests, such as the Durbin-Watson or Ljung-Box tests, especially if results seem ambiguous.

Addressing Autocorrelation

If the BG test indicates autocorrelation, some approaches to address it include:

  • Adding Lagged Variables: If autocorrelation arises due to inertia or feedback, adding lagged dependent variables might help.
  • Differencing: For time series data, taking the difference between successive observations can eliminate some forms of autocorrelation.
  • ARIMA Models: These models incorporate autoregressive and moving average terms and are designed for time series data with autocorrelation.


The Breusch-Godfrey test is a powerful tool for detecting autocorrelation in regression residuals, especially when dealing with multiple lag intervals or specific model structures. By understanding and leveraging the BG test in R, analysts and researchers can ensure their models are robust and their conclusions are valid.

Posted in RTagged

Leave a Reply