Pesaran's CD or Breusch–Pagan's LM (local or global) tests for cross sectional dependence in panel models
pcdtest(x, ...) ## S3 method for class 'formula' pcdtest( x, data, index = NULL, model = NULL, test = c("cd", "sclm", "bcsclm", "lm", "rho", "absrho"), w = NULL, ... ) ## S3 method for class 'panelmodel' pcdtest( x, test = c("cd", "sclm", "bcsclm", "lm", "rho", "absrho"), w = NULL, ... ) ## S3 method for class 'pseries' pcdtest( x, test = c("cd", "sclm", "bcsclm", "lm", "rho", "absrho"), w = NULL, ... )
an object of class
further arguments to be passed on for model estimation to
an optional numerical index, if
an optional character string indicating which type of
model to estimate; if left to
the type of test statistic to be returned. One of
These tests are originally meant to use the residuals of separate
estimation of one time–series regression for each cross-sectional
unit in order to check for cross–sectional dependence (
model = NULL).
If a different model specification (
model = "within",
...) is assumed consistent, one can resort to its residuals for
testing (which is common, e.g., when the time dimension's length is
insufficient for estimating the heterogeneous model).
If the time
dimension is insufficient and
model = NULL, the function defaults
to estimation of a
within model and issues a warning. The main
argument of this function may be either a model of class
panelmodel or a
data frame; in the second case,
model is set to
NULL, all usual parameters relative to
the estimation of a
plm model may be passed on. The test is
compatible with any consistent
panelmodel for the data at hand,
with any specification of
effect (except for
test = "bcsclm" which
requires a within model with either individual or two-ways effect).
effect = "time" or
effect = "twoways" allows
to test for residual cross-sectional dependence after the introduction
of time fixed effects to account for common shocks.
A local version of either test can be computed by supplying a
proximity matrix (elements coercible to
logical) with argument
w which provides information on whether any pair of individuals
are neighbours or not. If
w is supplied, only neighbouring pairs
will be used in computing the test; else,
w will default to
NULL and all observations will be used. The matrix need not be
binary, so commonly used "row–standardized" matrices can be
employed as well.
nb objects from spdep must instead be
transformed into matrices by spdep's function
The methods implemented are suitable also for unbalanced panels.
Pesaran's CD test (
test="cd"), Breusch and Pagan's LM test
test="lm"), and its scaled version (
test="sclm") are all
described in \insertCitePESA:04;textualplm (and complemented by
Pesaran (2005)). The bias-corrected scaled test (
is due to \insertCiteBALT:FENG:KAO:12plm and only valid for
within models including the individual effect (it's unbalanced
version uses max(Tij) for T) in the bias-correction term).
\insertCiteBREU:PAGA:80;textualplm is the original source for
the LM test.
The test on a
pseries is the same as a test on a pooled
regression model of that variable on a constant, i.e.,
pcdtest(some_pseries) is equivalent to
pcdtest(plm(some_var ~ 1, data = some_pdata.frame, model = "pooling") and also equivalent to
pcdtest(some_var ~ 1, data = some_data), where
the variable name in the data which corresponds to
An object of class
data("Grunfeld", package = "plm") ## test on heterogeneous model (separate time series regressions) pcdtest(inv ~ value + capital, data = Grunfeld, index = c("firm", "year")) ## test on two-way fixed effects homogeneous model pcdtest(inv ~ value + capital, data = Grunfeld, model = "within", effect = "twoways", index = c("firm", "year")) ## test on panelmodel object g <- plm(inv ~ value + capital, data = Grunfeld, index = c("firm", "year")) pcdtest(g) ## scaled LM test pcdtest(g, test = "sclm") ## test on pseries pGrunfeld <- pdata.frame(Grunfeld) pcdtest(pGrunfeld$value) ## local test ## define neighbours for individual 2: 1, 3, 4, 5 in lower triangular matrix w <- matrix(0, ncol= 10, nrow=10) w[2,1] <- w[3,2] <- w[4,2] <- w[5,2] <- 1 pcdtest(g, w = w)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.