{smcl} {* *! version 1.0.0 12oct2026}{...} {vieweralsosee "xtdyngcce" "help xtdyngcce"}{...} {vieweralsosee "xtdyncce" "help xtdyncce"}{...} {vieweralsosee "xtgcce" "help xtgcce"}{...} {viewerjumpto "Model" "xtdyngcce_methods##model"}{...} {viewerjumpto "Part I: dynamic CCE" "xtdyngcce_methods##partI"}{...} {viewerjumpto "Bias corrections" "xtdyngcce_methods##bias"}{...} {viewerjumpto "Inference" "xtdyngcce_methods##inference"}{...} {viewerjumpto "Part II: generalized CCE" "xtdyngcce_methods##partII"}{...} {viewerjumpto "Step to equation map" "xtdyngcce_methods##map"}{...} {viewerjumpto "Decisions the papers leave open" "xtdyngcce_methods##decisions"}{...} {viewerjumpto "Validation" "xtdyngcce_methods##validation"}{...} {viewerjumpto "Author" "xtdyngcce_methods##author"}{...} {title:Title} {phang} {bf:xtdyngcce methods} {hline 2} Derivations, equation map and validation {marker model}{...} {title:Model} {pstd} Both commands start from a panel with an unobserved common factor structure, {p 8 8 2} y(i,t) = w(i,t)'delta + gamma(i)'f(t) + e(i,t), {pstd} where f(t) is an R-vector of unobserved common factors and gamma(i) the unit-specific loadings. If the omitted factors are correlated with the regressors, ignoring them makes every estimator of delta inconsistent, however long the time series. {pstd} The CCE idea of Pesaran (2006) is to approximate f(t) by cross-section averages of the observed variables, which are linear in the factors by construction. Writing Q for the T x c matrix of those averages and M = I - Q(Q'Q)^(-1)Q' for the associated residual maker, the pooled CCE estimator is {p 8 8 2} deltahat = [ sum_i W(i)'M W(i) ]^(-1) [ sum_i W(i)'M y(i) ]. {pstd} {cmd:xtdyngcce} never forms M explicitly; it applies {cmd:M Z = Z - Q (Q'Q)^(-1) Q'Z}, which is O(T c k) rather than O(T^2 k). {marker partI}{...} {title:Part I: dynamic CCE (xtdyncce)} {pstd} With a lagged dependent variable, w(i,t) = [y(i,t-1), x(i,t)']'. The pooled CCE estimator then admits the asymptotic expansion (JST equation 2.12) {p 8 8 2} sqrt(NT)(deltahat - delta0) = xi(0) + xi(perp) + sqrt(N/T) b1 + sqrt(T/N) b2 + r, {pstd} with four distinct pieces that any valid inference procedure must account for: {p 6 10 2} {bf:xi(0)} {space 4}asymptotically normal, driven by the innovations e(i,t). {p 6 10 2} {bf:xi(perp)} {space 1}asymptotically normal, driven by factor-approximation error. It is {it:absent} in the pure AR(1) model but present as soon as extra regressors enter. A clustered sandwich does not capture it. {p 6 10 2} {bf:b1} {space 7}the Nickell bias, of order 1/T, from the correlation between the projected lagged dependent variable and the innovations. {p 6 10 2} {bf:b2} {space 7}the factor-approximation bias, of order 1/N. {pstd} {bf:The augmentation.} {cmd:xtdyncce} uses Q = [1, ybar(t), ybar(t-1), xbar(t), xbar(t-1)], which is the augmentation the source paper adopts throughout. Including the lag of xbar symmetrises the treatment of y and x and aligns the implementation with Chudik and Pesaran (2015) and De Vos and Everaert (2021). The constant is always present. {pstd} {bf:The recursive-design wild bootstrap.} For each replication: {p 8 10 2} 1. Compute loadings and residuals from the fitted model,{break} {space 3}gammahat(i) = (sum_t fhat fhat')^(-1) sum_t fhat (y - w'deltahat),{break} {space 3}ehat(i,t) = y(i,t) - w(i,t)'deltahat - gammahat(i)'fhat(t). {p 8 10 2} 2. Set y*(i,0) = y(i,0). {p 8 10 2} 3. Regenerate y* {it:recursively},{break} {space 3}y*(i,t) = ahat y*(i,t-1) + bhat'x(i,t) + gammahat(i)'fhat(t) + omega(i,t) ehat(i,t),{break} {space 3}with omega Rademacher by default. {p 8 10 2} 4. {bf:Re-estimate the cross-section averages from the bootstrap data} and refit CCEP. {pstd} Steps 3 and 4 are what distinguish this from a residual wild bootstrap. The additional regressors x(i,t) are deliberately held fixed across replications, following the source paper; this is also the reason the bootstrap cannot replicate xi(perp) and b2 exactly in the model with regressors, which is why studentization is needed. {pstd} {bf:Why y*(i,0) = y(i,0) matters.} With that initialisation the bootstrap cross-section average satisfies ybar*(t) = ybar(t) + sum_j ahat^j omegabar ehat(t-j), so ybar*(t) stays consistent for ybar(t) and the only latent factor in the bootstrap world is consistently estimable. A different initialisation breaks that argument; {cmd:initial()} is therefore not offered. {marker bias}{...} {title:Bias corrections} {pstd} {bf:HPJ} {hline 1} Dhaene and Jochmans (2015). Split the sample in two halves, refit, and combine: {p 8 8 2} deltahat(hpj) = 2 deltahat - (deltahat(1) + deltahat(2))/2. {pstd} {bf:The cross-section averages are recomputed inside each half-panel.} This is essential and is why applying a general split-panel jackknife to data that were partialled once on the full sample is {it:not} the same estimator: partialling once and then splitting never lets the averages move with the subsample. When T is odd the middle period is included in both halves. {pstd} {bf:AN} {hline 1} Moon and Weidner (2017), Definition 1 and Corollary 4.5. The weak-exogeneity bias is estimated with a truncation kernel, {p 8 8 2} B1(k) = (1/N) sum_i sum_{t