diff-diff 2.8.0__tar.gz → 2.8.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {diff_diff-2.8.0 → diff_diff-2.8.2}/PKG-INFO +2 -1
- {diff_diff-2.8.0 → diff_diff-2.8.2}/README.md +1 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/__init__.py +3 -1
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/honest_did.py +1043 -169
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/linalg.py +55 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/prep.py +1 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/prep_dgp.py +285 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered.py +479 -242
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered_results.py +68 -3
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered_triple_diff.py +487 -156
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered_triple_diff_results.py +77 -12
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/survey.py +138 -48
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/triple_diff.py +137 -11
- {diff_diff-2.8.0 → diff_diff-2.8.2}/pyproject.toml +1 -1
- {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/Cargo.lock +3 -3
- {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/Cargo.toml +1 -1
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/_backend.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/bacon.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/bootstrap_utils.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/continuous_did.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/continuous_did_bspline.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/continuous_did_results.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/datasets.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/diagnostics.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/efficient_did.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/efficient_did_bootstrap.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/efficient_did_covariates.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/efficient_did_results.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/efficient_did_weights.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/estimators.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/imputation.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/imputation_bootstrap.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/imputation_results.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/power.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/practitioner.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/pretrends.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/results.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/stacked_did.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/stacked_did_results.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered_aggregation.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered_bootstrap.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/sun_abraham.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/synthetic_did.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/trop.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/trop_global.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/trop_local.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/trop_results.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/twfe.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/two_stage.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/two_stage_bootstrap.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/two_stage_results.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/utils.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/__init__.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_common.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_continuous.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_diagnostic.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_event_study.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_power.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_staggered.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_synthetic.py +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/build.rs +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/src/bootstrap.rs +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/src/lib.rs +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/src/linalg.rs +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/src/trop.rs +0 -0
- {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/src/weights.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: diff-diff
|
|
3
|
-
Version: 2.8.
|
|
3
|
+
Version: 2.8.2
|
|
4
4
|
Classifier: Development Status :: 5 - Production/Stable
|
|
5
5
|
Classifier: Intended Audience :: Science/Research
|
|
6
6
|
Classifier: Operating System :: OS Independent
|
|
@@ -190,6 +190,7 @@ We provide Jupyter notebook tutorials in `docs/tutorials/`:
|
|
|
190
190
|
| `12_two_stage_did.ipynb` | Two-Stage DiD (Gardner 2022), GMM sandwich variance, per-observation effects |
|
|
191
191
|
| `13_stacked_did.ipynb` | Stacked DiD (Wing et al. 2024), Q-weights, sub-experiment inspection, trimming, clean control definitions |
|
|
192
192
|
| `15_efficient_did.ipynb` | Efficient DiD (Chen et al. 2025), optimal weighting, PT-All vs PT-Post, efficiency gains, bootstrap inference |
|
|
193
|
+
| `16_survey_did.ipynb` | Survey-aware DiD with complex sampling designs (strata, PSU, FPC, weights), replicate weights, subpopulation analysis, DEFF diagnostics |
|
|
193
194
|
|
|
194
195
|
## Data Preparation
|
|
195
196
|
|
|
@@ -140,6 +140,7 @@ We provide Jupyter notebook tutorials in `docs/tutorials/`:
|
|
|
140
140
|
| `12_two_stage_did.ipynb` | Two-Stage DiD (Gardner 2022), GMM sandwich variance, per-observation effects |
|
|
141
141
|
| `13_stacked_did.ipynb` | Stacked DiD (Wing et al. 2024), Q-weights, sub-experiment inspection, trimming, clean control definitions |
|
|
142
142
|
| `15_efficient_did.ipynb` | Efficient DiD (Chen et al. 2025), optimal weighting, PT-All vs PT-Post, efficiency gains, bootstrap inference |
|
|
143
|
+
| `16_survey_did.ipynb` | Survey-aware DiD with complex sampling designs (strata, PSU, FPC, weights), replicate weights, subpopulation analysis, DEFF diagnostics |
|
|
143
144
|
|
|
144
145
|
## Data Preparation
|
|
145
146
|
|
|
@@ -89,6 +89,7 @@ from diff_diff.prep import (
|
|
|
89
89
|
generate_panel_data,
|
|
90
90
|
generate_staggered_data,
|
|
91
91
|
generate_staggered_ddd_data,
|
|
92
|
+
generate_survey_did_data,
|
|
92
93
|
make_post_indicator,
|
|
93
94
|
make_treatment_indicator,
|
|
94
95
|
rank_control_units,
|
|
@@ -209,7 +210,7 @@ Stacked = StackedDiD
|
|
|
209
210
|
Bacon = BaconDecomposition
|
|
210
211
|
EDiD = EfficientDiD
|
|
211
212
|
|
|
212
|
-
__version__ = "2.8.
|
|
213
|
+
__version__ = "2.8.2"
|
|
213
214
|
__all__ = [
|
|
214
215
|
# Estimators
|
|
215
216
|
"DifferenceInDifferences",
|
|
@@ -315,6 +316,7 @@ __all__ = [
|
|
|
315
316
|
"generate_panel_data",
|
|
316
317
|
"generate_event_study_data",
|
|
317
318
|
"generate_staggered_ddd_data",
|
|
319
|
+
"generate_survey_did_data",
|
|
318
320
|
"generate_continuous_did_data",
|
|
319
321
|
"create_event_time",
|
|
320
322
|
"aggregate_to_cohorts",
|