Tests for and estimates structural breaks in heterogeneous panel data models with cross-sectional dependence. Implements a Wald-type Chow test at a known break date, a sup-Wald test for an unknown break date (with trimmed candidate set), and a sequential procedure for multiple breaks following Bai & Perron (1998) adapted to panel CCE settings.
structural_break_test(
data,
unit_index,
time_index,
formula,
model = "cce",
type = c("unknown", "known"),
break_date = NULL,
trim = 0.15,
n_breaks = 1L,
test_terms = NULL,
verbose = FALSE,
...
)An object of class dcce_break with elements:
"known" or "unknown".
The Wald (or sup-Wald) test statistic.
Approximate p-value.
Degrees of freedom of the Wald statistic.
Known or estimated break date.
For type = "unknown": a tibble with one
row per candidate date (date, wald).
Vector of break dates when n_breaks > 1L.
dcce_fit object from the pre-break sub-sample.
dcce_fit object from the post-break sub-sample.
The original call.
A panel data.frame.
Character: unit identifier column.
Character: time identifier column.
Two-sided formula passed through to dcce().
Character: base estimator (default "cce").
Character: "known" for a Chow test at a specific
break date, "unknown" for a sup-Wald test over a trimmed
window. Default "unknown".
Required when type = "known". Must match the
time-index type.
Numeric: trimming fraction at each end of the sample for
the unknown-break-date search. Default 0.15 (standard
Andrews 1993 choice).
Integer: maximum number of breaks to search for using
the sequential Bai-Perron procedure. Default 1L.
Character vector: which coefficients to include in
the Wald statistic. Default NULL tests all slope coefficients
(excluding the intercept).
Logical: print progress during the candidate search.
Default FALSE.
Additional arguments passed to dcce()
(e.g. cross_section_vars, cross_section_lags).
For each candidate break date \(\tau\) the function computes $$W_N(\tau) = (\hat\beta_1(\tau) - \hat\beta_2(\tau))' [V_1(\tau) + V_2(\tau)]^{-1} (\hat\beta_1(\tau) - \hat\beta_2(\tau))$$ where \(\hat\beta_1\) and \(\hat\beta_2\) are the Mean Group coefficients from running the base estimator on the pre-break and post-break sub-samples respectively, and \(V_1\), \(V_2\) are the corresponding MG variances. Under the null of no break the statistic is distributed \(\chi^2_k\) where \(k\) is the number of tested coefficients.
The unknown-break-date sup-Wald test reports \(\sup_{\tau \in [\tau_1, \tau_2]} W_N(\tau)\), where \([\tau_1, \tau_2]\) is the interior of the sample after applying the trimming parameter. Approximate p-values use the Andrews (1993) large-sample distribution.
Andrews, D. W. K. (1993). Tests for parameter instability and structural change with unknown change point. Econometrica, 61(4), 821-856.
Bai, J., & Perron, P. (1998). Estimating and testing linear models with multiple structural changes. Econometrica, 66(1), 47-78.
Ditzen, J., Karavias, Y., & Westerlund, J. (2024). Multiple structural breaks in interactive effects panel data models. Journal of Applied Econometrics.
data(pwt8)
brk <- structural_break_test(
data = pwt8,
unit_index = "country",
time_index = "year",
formula = d_log_rgdpo ~ log_hc + log_ck + log_ngd,
model = "mg",
cross_section_vars = NULL,
type = "unknown",
trim = 0.20
)
print(brk)
Run the code above in your browser using DataLab