fect v2.4.1
CRAN-accepted 2026-04-30. Bundles seven releases since v2.2.0 (v2.2.1 → v2.4.1).
Highlights
New: post-hoc estimands API (v2.4.0, v2.4.1)
estimand(fit, type, by, ...)— typed dispatcher for alternative estimands from any imputation fit. Shipped types:"att","att.cumu","aptt"(Chen & Roth 2024),"log.att". Returns a tidy data frame with consistent columns regardless oftype.imputed_outcomes(fit, ...)— low-level accessor for the cell-level imputed potential-outcome surface.estimand()'svartypeargument now accepts"parametric"in addition to"bootstrap","jackknife","none"(v2.4.1).effect()andatt.cumu()are soft-deprecated, byte-identical to v2.3.x; removal not before v3.0.0.
Modern visual defaults for plot.fect() (v2.3.2)
- Default visual overhaul across all 14 plot types (
theme.bw = TRUE): white panel, plain left-aligned title, dashed onset vline, pre/post lightness contrast, publication-sized text. - Highlighted placebo / carryover periods render as a single accent glyph; background rectangle opt-in via
highlight.fill = TRUE. highlightaccepts character subsets for selective per-test-type highlighting.- New
legacy.style = TRUEescape hatch for byte-identical pre-2.3.1 figures. theme.bw = FALSEsoft-deprecated (removal in v2.5.0).
Rolling-window cross-validation (v2.3.0)
- New
r.cv.rolling()standalone helper for pickingrvia standard time-series CV (per-fold unit sampling, random anchors,cv.nobsscored holdout,cv.bufferpast-side gap). fect(CV = TRUE, cv.method = "rolling", ...)wires it into the main dispatcher for all factor-model methods.- Closes the forward-leakage channel that
cv.method = "all_units"/"treated_units"leave open under serially correlated residuals.
Weighted-fit consistency (v2.3.1, breaking)
W.estandW.aggarguments distinguish survey weights from IPW / balancing weights; both default toWfor backward compatibility.- Weighted fits now have a single, consistent ATT surface:
fit$est.att,fit$est.avg,fit$att.boot,fit$att.vcov, etc. all carry the W-weighted aggregations. The redundant*.Wslots are removed. plot(fit)no longer silently flips between two pipelines.
Bounded factor loadings for GSC (v2.3.0)
- New
loading.bound = "simplex": constrains treated-unit loadings to the convex hull of control loadings via entropy-regularized simplex projection. Counterfactual lies pointwise inconv({Y_hat_co_j}).
Other
- Various bug fixes
See NEWS.md for full release notes.