Changelog
Source:NEWS.md
fastdid 1.0.7
Fixed the double DiD control set of the DiD case: with M >= 3 events a control cohort with an event that the target cohort does not have was used, which biased
ATT^1. A control must now be not yet confounded by every such eventThe DiD case of double DiD is now reported for the post-periods of the first event only, as the theorem states
Fixed the influence function of the double DiD weights: the weights are a signed pair and each period is normalized on its own
Fixed the control cohorts of double DiD when a first-stage cell is missing: both periods now normalize over the cohorts available at both
anticipation2now moves the boundary of the direct case, and enters the not-yet-treated control cutoff of the first stageAdded validation of the confounding cohort columns: a missing value drops the unit with a warning, and a fractional value raises an error
Added a warning when no event-specific post-period effect is identified for any cohort
Fixed small-group variance understatement: the residual influence of each 2x2 group is inflated by the Kish effective size,
sqrt(ess/(ess-1)). Without the inflation the plug-in variance of a group of m units is deflated by (m-1)/m, which under-covers when cells are small (for example the cross-cohorts of double DiD)A 2x2 cell with fewer than 2 effective units in a group is now skipped with a warning: its residual is zero, so its variance is not estimable and the standard error understates the truth
Extended double DiD to support M>2 treatment events:
cohortvar2now accepts a character vector of length M-1 (e.g.c("G2", "G3")for three events)Added
add_base_periodparameter: inserts a zero-ATT placeholder at the base period inresult_type = "dynamic"resultsAdded experimental options
only_est_minandonly_est_maxinexper: restrict estimation to a specific event-time range in dynamic mode, skipping g-t pairs outside the windowImproved input validation: errors on negative
anticipation/anticipation2, time-varying weights, andbalanced_event_timeexceeding data rangeRestored
parglmdependency for multi-threaded propensity score estimation; thread count automatically matched togetDTthreads()(or 1 whenparallel = TRUE)Various bug fixes and robustness improvements for double DiD aggregation and weight handling
Version 0.9.9
- add double did (see the vignette for the introduction)
- add
parallel, parallization for unix systems, useful if the number of g-t is large. - add
full, return full result such as influence function, aggregate scheme, and such - add
min/max_dynamic,custom_schemeto experimental features
0.9.9.1 (2024/9/13): fix a bug that affects not-yet control with max treated group != max time
Version 0.9.4
Some BREAKING change is introduced in this update.
- add uniform confidence interval option with
cbandand significance levelalpha, confidence interval are now provided in result as columnatt_ciubandatt_cilb - BREAKING:
filtervar,max_control_cohort_diff,min_control_cohort_diffare moved into the experimental features. See the above section for the explanation. - add
max_dynamicandmin_dynamicas experimental features. - more informative error message when estimation fails for a specific
gt, some internal interface overhaul
Version 0.9.3
- add anticipation and varying base period option
- add min and max control cohort difference
- add time-varying control (reference)
- add filtervar
0.9.3.1 (2024/5/24): fix the bug with univar == clustervar (TODO: address problems with name-changing and collision). 0.9.3.2 (2024/7/17): fix group_time result when using control_type = "notyet" and make the base period in plots adapt to anticipation. 0.9.3.3 (2024/7/22): fix anticipation out of bound problem, more permanent solution for group_time target problem
Version 0.9.2
- add support to doubly robust and outcome regression estimators
- add support to unbalanced panels (simple and ipw only)
- add support to balanced composition option in dynamics aggregation
- fixed argument checking that was not working properly
- set the default to copying the entire dataset to avoid unexpected modification of the original data (thanks @grantmcdermott for the suggestion.)