Panel data, structural breaks and unit root testing

US Current Account Balance


In this blog, we extend last week's analysis of unit root testing with structural breaks to panel data.

We will again use the quarterly current account to GDP ratio but focus on a panel of data from five countries: United States, United Kingdom, Australia, South Africa, and India.

Using panel data unit roots tests found in the GAUSS tspdlib library we consider if the panel collectively shows unit root behavior.

Testing for unit roots in panel data

Why panel data

There are a number of reasons we utilize panel data in econometrics (Baltagi, 2008). Panel data:

  • Capture the idiosyncratic behaviors of individual groups with models like the fixed effects or random effects models.
  • Contain more information, more variability, and more efficiency.
  • Can detect and measure statistical effects that pure time-series or cross-section data can't.
  • Provide longer time-series for unit-root testing, which in turn leads to standard asymptotic behavior.

Panel data unit root testing

Today we will test for unit roots using the panel Lagrangian Multiplier (LM) unit-root test with structural breaks in the mean (Im, K., Lee, J., Tieslau, M., 2005):

  • The panel LM test statistic averages the individual LM test statistics which are computed using the pooled likelihood function.
  • The asymptotic distribution of the test is robust to structural breaks.
  • The test considers the null unit root hypothesis against the alternative that at least one time series in the panel is stationary.

Testing our panel

Setting up the test

The panel LM test can be run using the GAUSS PDLM procedure found in the GAUSS tspdlib library. The procedure has two required inputs and four additional optional arguments:

T x N matrix,  the panel data to be tested.
Scalar,  indicates the type of model to be tested.
    1 = break in level.
    2 = break in level and trend.
Scalar,  optional input, the number of breaks to allow.
    1 = one break.
    2 = two breaks. Default = 0.
Scalar,  optional input, maximum number of lags for Dy. 0 = no lags. Default = 8.
Scalar,  optional input, the information criterion used to select lags.
    1 = Akaike.
    2 = Schwarz.
    3 = t-stat significance. Default = 3.
Scalar,  optional input, data trimming rate. Default = 0.10

The PDLM procedure has five returns:

Vector,  the minimum test statistic for each cross-section.
Vector,  location of break(s) for each cross-section.
Scalar,  number of lags selected by chosen information criterion for each cross-section.
Scalar,  panel LM statistic with N(0, 1).
Scalar,  p-value of PDlm.

Running the test

The test is easy to set up and run in GAUSS. We first load the tspdlib library and our data.

library tspdlib;

// Load data
ca_panel = loadd("panel_ca.dat");
y_test = ca_panel[., 2:cols(ca_panel)];

Next, we specify that we want to run the model with level breaks and we call the PDLM procedure separately for the one break and two break models. We will keep all other parameters at their default values:

// Specify to run model with 
// level breaks
model = 1;

// Run first with one break
nbreak = 1;

// Call PD LM with one level break
{ Nlm, Ntb, Np, PDlm, pval } = PDLM(y_test, model, nbreak);

// Run next with two breaks
nbreak = 2;

// Call PD LM with level break
{ Nlm, Ntb, Np, PDlm, pval } = PDLM(y_test, model, nbreak);


test statistic
Number of
Two break model
United States-3.30671993 Q1, 2004 Q312Reject the null
United Kingdom-4.60801980 Q4, 1984 Q44Reject the null
Australia-3.95221970 Q3, 1977 Q412Reject the null
South Africa-5.67351976 Q4, 1983 Q44Reject the null
India-5.67341975 Q4, 2004 Q29<Reject the null
Full Panel-6.6339526N/AN/AReject the null
One break model
United States-3.05041993 Q112<Reject the null
United Kingdom-4.12131984 Q44Reject the null
Australia-3.16251980 Q212Reject the null
South Africa-5.12711979 Q44Reject the null
India-2.80011976 Q29Reject the null
Full Panel-8.9118730N/AN/AReject the null

Research on the presence of unit roots in current account balances has had mixed results. These results bring to the forefront the question of current account balance sustainability (Clower & Ito, 2012).

Our panel tests with structural breaks unanimously reject the null hypothesis of unit roots for all cross-sections, as well as the combined panel. This adds support, at least for our small sample, to the idea that current account balances are sustainable and mean-reverting.


Today we've learned about conducting panel data unit root testing in the presence of structural breaks using the LM test from (Im, K., Lee, J., Tieslau, M., 2005). After today you should have a better understanding of:

  1. Some of the advantages of using panel-data.
  2. How to test for unit roots in panel data using the LM test with structural breaks.
  3. How to use the GAUSS tspdlib library to test for unit roots with structural breaks.

Code and data from this blog can be found here.

Further Reading

  1. Panel Data Basics: One-way Individual Effects
  2. How to Aggregate Panel Data in GAUSS
  3. Introduction to the Fundamentals of Panel Data
  4. Panel Data Stationarity Test With Structural Breaks
  5. Transforming Panel Data to Long Form in GAUSS


Baltagi, B. (2008). Econometric analysis of panel data. John Wiley & Sons.

Clower, E., & Ito, H. (2012). The persistence of current account balances and its determinants: the implications for global rebalancing.

Im, K., Lee, J., Tieslau, M. (2005). Panel LM Unit-root Tests with Level Shifts. Oxford Bulletin of Economics and Statistics 67, 393–419.

9 thoughts on “Panel data, structural breaks and unit root testing

    1. Erica Post author

      Hello Luke,

      This is an excellent question and points to some of the issues with panel unit root testing. The situation can arise where, as a panel, we are able to reject the null hypothesis of a unit root but we cannot reject the null for certain individuals within the panel.

      The short answer is that:
      1. The individual unit root test results tell us what we can conclude for each individual if we consider that individual's behavior alone.
      2. The full panel data results tell us what we can conclude for the panel collectively.

      This would make an excellent future blog topic!


  1. Benny.owusuk

    Dear Erica, Thanks for the information. Please does this test account for cross sectional dependence? Or its assumes that the individual cross sections are independent of each other? If not do you have something like a bootstrap method to account for cross sectional dependence?

    1. Erica Post author

      Hello Benny,

      This test does not account for cross-sectional dependence. However, the PD_nkarul procedure, which applies the panel stationarity test with gradual structural shifts does allow for cross-sectional dependence.

      It can also be found in the tspdlib library.


    1. Erica Post author

      Hello Asifalig71,

      This is an excellent question. We have a few resources available that you may find useful.

      For loading data in a matrix I suggest using our new data management tools (introduced in GAUSS 21). We have some recent blogs demonstrating these:

      For running GAUSS programs I suggest the following video tutorials:

    2. Running Publicly Available GAUSS Code: Pt. 1
    3. Running Publicly Available GAUSS Code: Pt. 2
    4. Running a Program
Leave a Reply

Have a Specific Question?

Get a real answer from a real person

Need Support?

Get help from our friendly experts.

Try GAUSS for 14 days for FREE

See what GAUSS can do for your data

© Aptech Systems, Inc. All rights reserved.

Privacy Policy