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.
Files changed (66) hide show
  1. {diff_diff-2.8.0 → diff_diff-2.8.2}/PKG-INFO +2 -1
  2. {diff_diff-2.8.0 → diff_diff-2.8.2}/README.md +1 -0
  3. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/__init__.py +3 -1
  4. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/honest_did.py +1043 -169
  5. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/linalg.py +55 -0
  6. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/prep.py +1 -0
  7. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/prep_dgp.py +285 -0
  8. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered.py +479 -242
  9. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered_results.py +68 -3
  10. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered_triple_diff.py +487 -156
  11. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered_triple_diff_results.py +77 -12
  12. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/survey.py +138 -48
  13. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/triple_diff.py +137 -11
  14. {diff_diff-2.8.0 → diff_diff-2.8.2}/pyproject.toml +1 -1
  15. {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/Cargo.lock +3 -3
  16. {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/Cargo.toml +1 -1
  17. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/_backend.py +0 -0
  18. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/bacon.py +0 -0
  19. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/bootstrap_utils.py +0 -0
  20. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/continuous_did.py +0 -0
  21. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/continuous_did_bspline.py +0 -0
  22. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/continuous_did_results.py +0 -0
  23. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/datasets.py +0 -0
  24. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/diagnostics.py +0 -0
  25. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/efficient_did.py +0 -0
  26. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/efficient_did_bootstrap.py +0 -0
  27. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/efficient_did_covariates.py +0 -0
  28. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/efficient_did_results.py +0 -0
  29. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/efficient_did_weights.py +0 -0
  30. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/estimators.py +0 -0
  31. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/imputation.py +0 -0
  32. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/imputation_bootstrap.py +0 -0
  33. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/imputation_results.py +0 -0
  34. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/power.py +0 -0
  35. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/practitioner.py +0 -0
  36. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/pretrends.py +0 -0
  37. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/results.py +0 -0
  38. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/stacked_did.py +0 -0
  39. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/stacked_did_results.py +0 -0
  40. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered_aggregation.py +0 -0
  41. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/staggered_bootstrap.py +0 -0
  42. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/sun_abraham.py +0 -0
  43. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/synthetic_did.py +0 -0
  44. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/trop.py +0 -0
  45. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/trop_global.py +0 -0
  46. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/trop_local.py +0 -0
  47. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/trop_results.py +0 -0
  48. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/twfe.py +0 -0
  49. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/two_stage.py +0 -0
  50. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/two_stage_bootstrap.py +0 -0
  51. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/two_stage_results.py +0 -0
  52. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/utils.py +0 -0
  53. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/__init__.py +0 -0
  54. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_common.py +0 -0
  55. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_continuous.py +0 -0
  56. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_diagnostic.py +0 -0
  57. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_event_study.py +0 -0
  58. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_power.py +0 -0
  59. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_staggered.py +0 -0
  60. {diff_diff-2.8.0 → diff_diff-2.8.2}/diff_diff/visualization/_synthetic.py +0 -0
  61. {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/build.rs +0 -0
  62. {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/src/bootstrap.rs +0 -0
  63. {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/src/lib.rs +0 -0
  64. {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/src/linalg.rs +0 -0
  65. {diff_diff-2.8.0 → diff_diff-2.8.2}/rust/src/trop.rs +0 -0
  66. {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.0
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.0"
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",