Skip to content

fect v2.4.1

Choose a tag to compare

@xuyiqing xuyiqing released this 01 May 03:07
· 1 commit to master since this release
e497195

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 of type.
  • imputed_outcomes(fit, ...) — low-level accessor for the cell-level imputed potential-outcome surface.
  • estimand()'s vartype argument now accepts "parametric" in addition to "bootstrap", "jackknife", "none" (v2.4.1).
  • effect() and att.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.
  • highlight accepts character subsets for selective per-test-type highlighting.
  • New legacy.style = TRUE escape hatch for byte-identical pre-2.3.1 figures.
  • theme.bw = FALSE soft-deprecated (removal in v2.5.0).

Rolling-window cross-validation (v2.3.0)

  • New r.cv.rolling() standalone helper for picking r via standard time-series CV (per-fold unit sampling, random anchors, cv.nobs scored holdout, cv.buffer past-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.est and W.agg arguments distinguish survey weights from IPW / balancing weights; both default to W for 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 *.W slots 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 in conv({Y_hat_co_j}).

Other

  • Various bug fixes

See NEWS.md for full release notes.