Releases: pymc-labs/CausalPy
0.5.0
API changes
Be aware that this release contains some breaking API changes, which should be confined only to the SyntheticControl
experiment class. The docs and docstrings have been updated to reflect the new API. This was necessary to enable the main new feature of this release... we can now do synthetic control analyses with multiple treated units in a more coherent way.
As part of this, there was some behind the scenes refactoring work. All our tests pass and there should be zero visible change to users, but if there are any edge cases not caught by our tests then we welcome bug reports.
What's Changed
New Features 🎉
- Enable multiple treated units in synthetic control quasi experiments by @drbenvincent in #494
Documentation 📖
- Update difference in difference docs to show TWFE formulation by @drbenvincent in #482
- Add details about causal impact in the interrupted time series docs by @drbenvincent in #504
- Interrupted time series docs - more explanation and info on extracting causal impact measures by @drbenvincent in #501
Maintenance 🔧
- API change for the
SyntheticControl
experiment class by @drbenvincent in #460 - Remove docs/Makefile, update root Makefile for docs build, and update. by @Sohaibameer204 in #483
- Exclude causalpy/tests from code coverage by @drbenvincent in #493
New Contributors
- @williambdean made their first contribution in #489
Full Changelog: 0.4.2...0.5.0
0.4.2
What's Changed
Bugfixes 🐛
- Replaced
MutableData
withData
by @klaushajdaraj in #455 - fix bug: obs_indx -> obs_ind and improve
PyMCModel._data_setter
by @drbenvincent in #462
Documentation 📖
- Update badges on GitHub landing page by @drbenvincent in #465
- Add new list of written learning resources to the docs by @HPCurtis in #447
- Fix CI badge to properly reflect main branch status by @Nick1200000 in #476
Maintenance 🔧
- Separate
InterruptedTimeSeries
andSyntheticControl
classes, update uml by @drbenvincent in #458 - Fix PyMC site reference by @emmanuel-ferdman in #466
- Auto-label pre-commit autoupdate PRs with "no releasenotes" by @Sohaibameer204 in #471
New Contributors
- @klaushajdaraj made their first contribution in #455
- @emmanuel-ferdman made their first contribution in #466
- @Sohaibameer204 made their first contribution in #471
- @Nick1200000 made their first contribution in #476
Full Changelog: 0.4.1...0.4.2
0.4.1
What's Changed
New Features 🎉
Bugfixes 🐛
- Fix SyntaxWarning by making some docstrings raw by @drbenvincent in #414
- Calculate goodness of fit (
r2_score
) based on posterior expectation rather than posterior prediction by @drbenvincent in #429
Documentation 📖
- Enable ruff formatting of docstrings by @drbenvincent in #430
- Update docs to make clear sharp regression discontinuity design by @HPCurtis in #437
- Unsquash images in docs by @drbenvincent in #439
Maintenance 🔧
- Add test for API stability for a CausalPy example in Causal Inference and Discovery in Python by Aleksander Molak by @arthurmello in #407
- Implement the codespell pre-commit hook by @westford14 in #408
- Codespell CI Job by @westford14 in #411
- Sync dependencies in
environment.yml
andpyproject.toml
by @drbenvincent in #415 - Update README and home page of the docs by @drbenvincent in #423
- Update head of apache and set start year to 2022 by @lucianopaz in #441
- New GitHub workflow to generate PR's which update the UML diagrams by @drbenvincent in #442
- fixes for uml github action by @drbenvincent in #446
New Contributors
- @arthurmello made their first contribution in #407
- @westford14 made their first contribution in #408
- @HPCurtis made their first contribution in #437
- @github-actions made their first contribution in #448
- @lpoug made their first contribution in #438
Full Changelog: 0.4.0...0.4.1
0.4.0
What's Changed
Major Changes 🛠
- Major code refactor to unify quasi experiment classes by @drbenvincent in #381
New Features 🎉
- Add example of multiple geo lift test analysis by @drbenvincent in #338
Documentation 📖
- Change docs theme by @drbenvincent in #371
- fix docstring example rendering by @OriolAbril in #376
- Add page of causal video resources from PyMC community into the docs by @ParthJohri in #379
- use labs theme from external repo by @OriolAbril in #385
- fix missing notebooks in docs by @drbenvincent in #398
New Contributors
- @ParthJohri made their first contribution in #379
Full Changelog: 0.3.1...0.4.0
0.3.1
What's Changed
New Features 🎉
- Add support for Python 3.12 by @drbenvincent in #347
- Enable
summary
method for all currently implemented frequentist experiments by @drbenvincent in #355 - Improve formatting of model coefficients in
summary
method in pymc-based experiments by @drbenvincent in #359
Documentation 📖
- Add docs on justifying instruments in the IV approach by @NathanielF in #345
- Various improvements to documentation infrastructure by @OriolAbril in #354
Maintenance 🔧
- Update
codecov-action@v3
tov4
by @drbenvincent in #349 - Simplify remote GitHub actions by building test environment only once by @drbenvincent in #351
- Fix up ruff pre-commit checks to operate on notebooks by @drbenvincent in #352
- Remove all remaining traces of
nbqa
from the repo by @drbenvincent in #353
Full Changelog: 0.3.0...0.3.1
0.3.0
What's Changed
New Features 🎉
- Add propensity weighting schemes and covariate balance plot functionality by @NathanielF in #311
Bugfixes 🐛
- Fix
FutureError
warning, which requirespymc>=5.14.0
by @drbenvincent in #325 - Fix failing doctests by @drbenvincent in #330
Documentation 📖
- Add new knowledge base page on causal DAGS for quasi-experiments by @drbenvincent in #321
- Add Propensity Score DAG to Knowledge Base by @NathanielF in #337
Maintenance 🔧
- Revert the GitHub Actions update due to Node 16 sunset. by @anevolbap in #316
- Automate pre commit updates by @juanitorduz in #322
- Move to a conda only install of pymc (local dev workflow) by @drbenvincent in #304
- Fix #329: Add
random_seed
to theInstrumentalVariableRegression.fit
method. by @anevolbap in #335
New Contributors
- @pre-commit-ci made their first contribution in #334
Full Changelog: 0.2.3...0.3.0
0.2.3
What's Changed
Bugfixes 🐛
- Fix #300: Set
round_to
as an optional argument. by @anevolbap in #301 - Fix #299: Rounding issue for DiD results. by @anevolbap in #302
- Fix #259: Annotation in
did_skl
notebook plot. by @anevolbap in #306
Documentation 📖
- Fix #210: Add scikit-learn plots to README. by @anevolbap in #307
- Add experiment design notation docs page to new Knowledge Base section of the docs by @drbenvincent in #312
Maintenance 🔧
- Upload versions due to Node 16 sunset. by @anevolbap in #310
- Fix #287 Update Makefile by @anevolbap in #309
- Drop support for Python 3.8 and 3.9, add 3.11 by @drbenvincent in #313
Full Changelog: 0.2.2...0.2.3
0.2.2
What's Changed
Bugfixes 🐛
- Fix #288: remove deprecated 'model' property in tests. by @anevolbap in #291
- Fix causal impact calculation error in synthetic control and interrupted time series by @drbenvincent in #296
Maintenance 🔧
- Expand data validation to also cover the scikit-learn experiment classes by @drbenvincent in #290
New Contributors
- @anevolbap made their first contribution in #291
Full Changelog: 0.2.1...0.2.2
0.2.1
What's Changed
New Features 🎉
- User specified number of significant figures for numbers in plots by @drbenvincent in #272
- Make results fully reproducible by @drbenvincent in #286
- User specified number of significant figures for numerical outputs by @drbenvincent in #283
Bugfixes 🐛
Documentation 📖
Maintenance 🔧
- Ignore
causalpy/tests/
when running doctest to save a little time by @jpreszler in #280 - simplify doctest outputs by @jpreszler in #285
New Contributors
- @krz made their first contribution in #270
- @jsakv made their first contribution in #274
- @rlaker made their first contribution in #275
Full Changelog: 0.2.0...0.2.1
0.2.0
What's Changed
New Features 🎉
- Add ability to analyse Regression Kink Analysis Designs by @drbenvincent in #264
Full Changelog: 0.1.2...0.2.0