purtest implements several testing procedures that have been proposed to test unit root hypotheses with panel data.

purtest(
  object,
  data = NULL,
  index = NULL,
  test = c("levinlin", "ips", "madwu", "Pm", "invnormal", "logit", "hadri"),
  exo = c("none", "intercept", "trend"),
  lags = c("SIC", "AIC", "Hall"),
  pmax = 10,
  Hcons = TRUE,
  q = NULL,
  dfcor = FALSE,
  fixedT = TRUE,
  ips.stat = NULL,
  ...
)

# S3 method for class 'purtest'
print(x, ...)

# S3 method for class 'purtest'
summary(object, ...)

# S3 method for class 'summary.purtest'
print(x, ...)

Arguments

object, x

Either a "data.frame" or a matrix containing the time series (individuals as columns), a "pseries" object, a formula; a "purtest" object for the print and summary methods,

data

a "data.frame" or a "pdata.frame" object (required for formula interface, see Details and Examples),

index

the indexes,

test

the test to be computed: one of "levinlin" for Levin et al. (2002) , "ips" for Im et al. (2003) , "madwu" for Maddala and Wu (1999) , "Pm" , "invnormal", or "logit" for various tests as in Choi (2001) , or "hadri" for Hadri (2000) , see Details,

exo

the exogenous variables to introduce in the augmented Dickey–Fuller (ADF) regressions, one of: no exogenous variables ("none"), individual intercepts ("intercept"), or individual intercepts and trends ("trend"), but see Details,

lags

the number of lags to be used for the augmented Dickey-Fuller regressions: either a single value integer (the number of lags for all time series), a vector of integers (one for each time series), or a character string for an automatic computation of the number of lags, based on the AIC ("AIC"), the SIC ("SIC"), or on the method by Hall (1994) ("Hall"); argument is irrelevant for test = "hadri",

pmax

maximum number of lags (irrelevant for test = "hadri"),

Hcons

logical, only relevant for test = "hadri", indicating whether the heteroskedasticity-consistent test of Hadri (2000) should be computed,

q

the bandwidth for the estimation of the long-run variance (only relevant for test = "levinlin", the default (q = NULL) gives the value as suggested by the authors as round(3.21 * T^(1/3))),

dfcor

logical, indicating whether the standard deviation of the regressions is to be computed using a degrees-of-freedom correction,

fixedT

logical, indicating whether the individual ADF regressions are to be computed using the same number of observations (irrelevant for test = "hadri"),

ips.stat

NULL or character of length 1 to request a specific IPS statistic, one of "Wtbar" (also default if ips.stat = NULL), "Ztbar", "tbar",

...

further arguments (can set argument p.approx to be passed on to non-exported function padf to either "MacKinnon1994" or "MacKinnon1996" to force a specific method for p-value approximation, the latter only being possible if package 'urca' is installed).

Value

For purtest: An object of class "purtest": a list with the elements named:

  • "statistic" (a "htest" object),

  • "call",

  • "args",

  • "idres" (containing results from the individual regressions),

  • "adjval" (containing the simulated means and variances needed to compute the statistic, for test = "levinlin" and "ips", otherwise NULL),

  • "sigma2" (short-run and long-run variance for test = "levinlin", otherwise NULL).

Details

All these tests except "hadri" are based on the estimation of augmented Dickey-Fuller (ADF) regressions for each time series. A statistic is then computed using the t-statistics associated with the lagged variable. The Hadri residual-based LM statistic is the cross-sectional average of the individual KPSS statistics Kwiatkowski et al. (1992) , standardized by their asymptotic mean and standard deviation.

Several Fisher-type tests that combine p-values from tests based on ADF regressions per individual are available:

  • "madwu" is the inverse chi-squared test Maddala and Wu (1999) , also called P test by Choi (2001) .

  • "Pm" is the modified P test proposed by Choi (2001) for large N,

  • "invnormal" is the inverse normal test by Choi (2001) , and

  • "logit" is the logit test by Choi (2001) .

The individual p-values for the Fisher-type tests are approximated as described in MacKinnon (1996) if the package urca (Pfaff (2008) ) is available, otherwise as described in MacKinnon (1994) .

For the test statistic tbar of the test of Im/Pesaran/Shin (2003) (ips.stat = "tbar"), no p-value is given but 1%, 5%, and 10% critical values are interpolated from paper's tabulated values via inverse distance weighting (printed and contained in the returned value's element statistic$ips.tbar.crit).

Hadri's test, the test of Levin/Lin/Chu, and the tbar statistic of Im/Pesaran/Shin are not applicable to unbalanced panels; the tbar statistic is not applicable when lags > 0 is given.

The exogenous instruments of the tests (where applicable) can be specified in several ways, depending on how the data is handed over to the function:

  • For the formula/data interface (if data is a data.frame, an additional index argument should be specified); the formula should be of the form: y ~ 0, y ~ 1, or y ~ trend for a test with no exogenous variables, with an intercept, or with individual intercepts and time trend, respectively. The exo argument is ignored in this case.

  • For the data.frame, matrix, and pseries interfaces: in these cases, the exogenous variables are specified using the exo argument.

With the associated summary and print methods, additional information can be extracted/displayed (see also Value).

References

Choi I (2001). “Unit root tests for panel data.” Journal of International Money and Finance, 20(2), 249 - 272. ISSN 0261-5606, https://doi.org/10.1016/S0261-5606(00)00048-6.

Hadri K (2000). “Testing for stationarity in heterogeneous panel data.” The Econometrics Journal, 3(2), 148–161. ISSN 13684221, 1368423X.

Hall A (1994). “Testing for a unit root in time series with pretest data-based model selection.” Journal of Business & Economic Statistics, 12(4), 461–470.

Im KS, Pesaran MH, Shin Y (2003). “Testing for unit roots in heterogenous panels.” Journal of Econometrics, 115(1), 53-74.

Kwiatkowski D, Phillips PC, Schmidt P, Shin Y (1992). “Testing the null hypothesis of stationarity against the alternative of a unit root: How sure are we that economic time series have a unit root?” Journal of Econometrics, 54(1), 159 - 178. ISSN 0304-4076, https://doi.org/10.1016/0304-4076(92)90104-Y.

Levin A, Lin CF, Chu CSJ (2002). “Unit root tests in panel data : asymptotic and finite-sample properties.” Journal of Econometrics, 108, 1-24.

MacKinnon JG (1994). “Approximate Asymptotic Distribution Functions for Unit-Root and Cointegration Tests.” Journal of Business & Economic Statistics, 12(2), 167–176. ISSN 07350015.

MacKinnon JG (1996). “Numerical Distribution Functions for Unit Root and Cointegration Tests.” Journal of Applied Econometrics, 11(6), 601–618. ISSN 08837252.

Maddala GS, Wu S (1999). “A comparative study of unit root tests with panel data and a new simple test.” Oxford Bulletin of Economics and Statistics, 61, 631-52.

Pfaff B (2008). Analysis of Integrated and Cointegrated Time Series with R, Second edition. Springer, New York. ISBN 0-387-27960-1, https://CRAN.r-project.org/package=urca.

Author

Yves Croissant and for "Pm", "invnormal", and "logit" Kevin Tappe

Examples


data("Grunfeld", package = "plm")
y <- data.frame(split(Grunfeld$inv, Grunfeld$firm)) # individuals in columns

purtest(y, pmax = 4, exo = "intercept", test = "madwu")
#> 
#> 	Maddala-Wu Unit-Root Test (ex. var.: Individual Intercepts)
#> 
#> data:  y
#> chisq = 14.719, df = 20, p-value = 0.7923
#> alternative hypothesis: stationarity
#> 

## same via pseries interface
pGrunfeld <- pdata.frame(Grunfeld, index = c("firm", "year"))
purtest(pGrunfeld$inv, pmax = 4, exo = "intercept", test = "madwu")
#> 
#> 	Maddala-Wu Unit-Root Test (ex. var.: Individual Intercepts)
#> 
#> data:  pGrunfeld$inv
#> chisq = 14.719, df = 20, p-value = 0.7923
#> alternative hypothesis: stationarity
#> 

## same via formula interface
purtest(inv ~ 1, data = Grunfeld, index = c("firm", "year"), pmax = 4, test = "madwu")
#> 
#> 	Maddala-Wu Unit-Root Test (ex. var.: Individual Intercepts)
#> 
#> data:  inv ~ 1
#> chisq = 14.719, df = 20, p-value = 0.7923
#> alternative hypothesis: stationarity
#>