csdm estimates heterogeneous panel models when units may
share unobserved common factors. It provides mean-group (MG), common
correlated effects (CCE), dynamic CCE (DCCE), and cross-sectionally
augmented ARDL (CS-ARDL) estimators, along with residual cross-sectional
dependence diagnostics.
The package follows the econometric structure used by Stata’s
xtdcce2, while using standard R model methods and explicit
specification objects. It does not yet implement every
xtdcce2 option.
Install the CRAN release:
install.packages("csdm")Install the development version:
install.packages("remotes")
remotes::install_github("Macosso/csdm")model |
Estimator | Cross-sectional averages | Dynamics | Long-run output |
|---|---|---|---|---|
"mg" |
Mean Group | No | No | No |
"cce" |
Common Correlated Effects | Yes | No | No |
"dcce" |
Dynamic CCE | Optional | Yes | No |
"cs_ardl" |
Cross-sectionally augmented ARDL | Optional | Yes | Yes |
All four estimators fit unit-specific regressions and average the eligible unit-level coefficients. CCE-based models add cross-sectional averages as proxies for latent common factors. CS-ARDL derives adjustment and long-run parameters from the fitted unit-level ARDL coefficients.
The bundled data contain 93 countries observed annually from 1960 through 2007. The example below uses 12 countries from 1970 onward so it runs quickly.
library(csdm)
data(PWT_60_07, package = "csdm")
keep_ids <- unique(PWT_60_07$id)[1:12]
dat <- subset(PWT_60_07, id %in% keep_ids & year >= 1970)
form <- log_rgdpo ~ log_hc + log_ck + log_ngd
csa_vars <- c("log_rgdpo", "log_hc", "log_ck", "log_ngd")
mg <- csdm(form, data = dat, id = "id", time = "year", model = "mg")
cce <- csdm(
form, data = dat, id = "id", time = "year", model = "cce",
csa = csdm_csa(vars = csa_vars)
)
dcce <- csdm(
form, data = dat, id = "id", time = "year", model = "dcce",
csa = csdm_csa(vars = csa_vars, lags = 3),
lr = csdm_lr(type = "ardl", ylags = 1, xdlags = 0)
)
cs_ardl <- csdm(
form, data = dat, id = "id", time = "year", model = "cs_ardl",
csa = csdm_csa(vars = csa_vars, lags = 3),
lr = csdm_lr(type = "ardl", ylags = 1, xdlags = 0)
)
summary(cce)
coef(cs_ardl, component = "long_run")
vcov(cs_ardl, component = "long_run")csdm_csa() controls the variables and lags used for
cross-sectional averages. csdm_lr() controls lags of the
dependent variable and regressors. Numeric time indexes use
time_step = 1 by default, and lag construction preserves
gaps in calendar time.
cd_test() accepts a fitted csdm model or an
N by T residual matrix:
cd_test(cce, type = "CD")
cd_test(cce, type = "all", seed = 42)The available diagnostics are classical CD, randomized CDw, power-enhanced CDw+, and bias-corrected CD*. CD uses pairwise-complete observations by default. CDw, CDw+, and CD* require a balanced residual sample. Periods with no finite residuals for any retained unit are removed automatically; for partially observed periods, request a common sample explicitly:
cd_test(cce, type = "all", seed = 42,
na.action = "drop.incomplete.times")Use a fixed seed when reporting CDw or CDw+ because
their Rademacher weights are random. The tests use different corrections
and should be interpreted against their own assumptions; agreement among
p-values is not a substitute for checking those assumptions.
Fitted models support the model methods expected by downstream R tools:
coef(cce)
vcov(cce)
residuals(cce) # unit-by-time matrix
residuals(cce, format = "long")
fitted(cce, format = "vector")
nobs(cce)
model.frame(cce)
library(modelsummary)
modelsummary(list(MG = mg, CCE = cce, DCCE = dcce))tidy(), glance(), and
augment() methods are available through the
generics/broom interface.
update() refits a model using its stored call and sample
metadata.
N normal approximations.csdm_pooled(), get_residuals(),
prepare_cd_input(), and the low-level covariance helpers
are deprecated. Use standard model methods on fitted objects.Corrected estimation samples and covariance calculations in the development version can change results from earlier releases. Refit saved models after upgrading.
Methodological foundations include Pesaran and Smith (1995), Pesaran (2006), Chudik and Pesaran (2015), Juodis and Reese (2022), and Pesaran and Xie (2022).